Mercurial > hg > plosc
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; |