comparison c/plosc.c @ 2:6c1ba6bf9f96

Added osc_split_address/3 to analyse address into host and port.
author samer
date Tue, 31 Jan 2012 15:53:45 +0000
parents bbd2b1abfb32
children 44e4b80bdf97
comparison
equal deleted inserted replaced
1:16c621d40b68 2:6c1ba6bf9f96
53 static functor_t int_1, float_1, double_1, string_1; 53 static functor_t int_1, float_1, double_1, string_1;
54 54
55 install_t install(); 55 install_t install();
56 56
57 foreign_t mk_address( term_t host, term_t port, term_t addr); 57 foreign_t mk_address( term_t host, term_t port, term_t addr);
58 foreign_t split_address( term_t addr, term_t host, term_t port);
58 foreign_t is_address( term_t addr); 59 foreign_t is_address( term_t addr);
59 foreign_t send_osc_now( term_t addr, term_t msg, term_t args); 60 foreign_t send_osc_now( term_t addr, term_t msg, term_t args);
60 foreign_t send_osc_at( term_t addr, term_t msg, term_t args, term_t time); 61 foreign_t send_osc_at( term_t addr, term_t msg, term_t args, term_t time);
61 foreign_t send_osc_from_at( term_t serv, term_t addr, term_t msg, term_t args, term_t time); 62 foreign_t send_osc_from_at( term_t serv, term_t addr, term_t msg, term_t args, term_t time);
62 foreign_t send_timestamped( term_t addr, term_t msg, term_t args, term_t sec, term_t frac); 63 foreign_t send_timestamped( term_t addr, term_t msg, term_t args, term_t sec, term_t frac);
118 } 119 }
119 return TRUE; 120 return TRUE;
120 } 121 }
121 122
122 install_t install() { 123 install_t install() {
123 PL_register_foreign("osc_now", 2, (void *)now, 0); 124 PL_register_foreign("osc_now", 2, (void *)now, 0);
124 PL_register_foreign("time_to_ts", 3, (void *)time_to_ts, 0); 125 PL_register_foreign("time_to_ts", 3, (void *)time_to_ts, 0);
125 PL_register_foreign("time_from_ts", 3, (void *)time_from_ts, 0); 126 PL_register_foreign("time_from_ts", 3, (void *)time_from_ts, 0);
126 PL_register_foreign("osc_mk_address", 3, (void *)mk_address, 0); 127 PL_register_foreign("osc_mk_address", 3, (void *)mk_address, 0);
127 PL_register_foreign("osc_is_address", 1, (void *)is_address, 0); 128 PL_register_foreign("osc_split_address",3, (void *)split_address, 0);
128 PL_register_foreign("osc_send_now", 3, (void *)send_osc_now, 0); 129 PL_register_foreign("osc_is_address", 1, (void *)is_address, 0);
129 PL_register_foreign("osc_send_at", 4, (void *)send_osc_at, 0); 130 PL_register_foreign("osc_send_now", 3, (void *)send_osc_now, 0);
131 PL_register_foreign("osc_send_at", 4, (void *)send_osc_at, 0);
130 PL_register_foreign("osc_send_from_at", 5, (void *)send_osc_from_at, 0); 132 PL_register_foreign("osc_send_from_at", 5, (void *)send_osc_from_at, 0);
131 PL_register_foreign("osc_mk_server", 2, (void *)mk_server, 0); 133 PL_register_foreign("osc_mk_server", 2, (void *)mk_server, 0);
132 PL_register_foreign("osc_start_server", 1, (void *)start_server, 0); 134 PL_register_foreign("osc_start_server", 1, (void *)start_server, 0);
133 PL_register_foreign("osc_stop_server", 1, (void *)stop_server, 0); 135 PL_register_foreign("osc_stop_server", 1, (void *)stop_server, 0);
134 PL_register_foreign("osc_run_server", 1, (void *)run_server, 0); 136 PL_register_foreign("osc_run_server", 1, (void *)run_server, 0);
397 return type_error(port,"integer"); 399 return type_error(port,"integer");
398 } 400 }
399 } else { 401 } else {
400 return type_error(host,"atom"); 402 return type_error(host,"atom");
401 } 403 }
404 }
405
406 foreign_t split_address(term_t addr, term_t host, term_t port) {
407 lo_address a;
408 const char *h, *p;
409
410 return get_addr(addr,&a)
411 && (h=lo_address_get_hostname(a))!=NULL
412 && (p=lo_address_get_port(a))!=NULL
413 && PL_unify_atom_chars(host,h)
414 && PL_unify_integer(port,atoi(p));
402 } 415 }
403 416
404 foreign_t now(term_t sec, term_t frac) { 417 foreign_t now(term_t sec, term_t frac) {
405 lo_timetag ts; 418 lo_timetag ts;
406 int64_t s, f; 419 int64_t s, f;