lo_lowlevel.h

Go to the documentation of this file.
00001 /*
00002  *  Copyright (C) 2004 Steve Harris
00003  *
00004  *  This program is free software; you can redistribute it and/or
00005  *  modify it under the terms of the GNU Lesser General Public License
00006  *  as published by the Free Software Foundation; either version 2.1
00007  *  of the License, or (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Lesser General Public License for more details.
00013  *
00014  *  $Id$
00015  */
00016 
00017 #ifndef LO_LOWLEVEL_H
00018 #define LO_LOWLEVEL_H
00019 
00020 #include "lo/lo_osc_types.h"
00021 
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030 
00031 #include <stdarg.h>
00032 #ifdef _MSC_VER
00033 #define ssize_t SSIZE_T
00034 #define uint32_t unsigned __int32
00035 #else
00036 #include <stdint.h>
00037 #endif
00038 
00039 #include "lo/lo_types.h"
00040 #include "lo/lo_errors.h"
00041 
00055 typedef long double lo_hires;
00056 
00057 
00058 
00059 
00067 int lo_send_message(lo_address targ, const char *path, lo_message msg);
00068 
00082 int lo_send_message_from(lo_address targ, lo_server serv, 
00083      const char *path, lo_message msg);
00084 
00091 int lo_send_bundle(lo_address targ, lo_bundle b);
00092 
00104 int lo_send_bundle_from(lo_address targ, lo_server serv, lo_bundle b);
00105 
00109 lo_message lo_message_new();
00110 
00115 void lo_message_free(lo_message m);
00116 
00130 int lo_message_add(lo_message m, const char *types, ...);
00131 
00133 int lo_message_add_internal(lo_message m,  const char *file, const int line,
00134                             const char *types, ...);
00135 
00154 int lo_message_add_varargs(lo_message m, const char *types, va_list ap);
00155 
00157 int lo_message_add_varargs_internal(lo_message m, const char *types, va_list ap,
00158                                     const char *file, const int line);
00159 
00170 int lo_message_add_int32(lo_message m, int32_t a);
00171 
00178 int lo_message_add_float(lo_message m, float a);
00179 
00186 int lo_message_add_string(lo_message m, const char *a);
00187 
00194 int lo_message_add_blob(lo_message m, lo_blob a);
00195 
00202 int lo_message_add_int64(lo_message m, int64_t a);
00203 
00210 int lo_message_add_timetag(lo_message m, lo_timetag a);
00211 
00218 int lo_message_add_double(lo_message m, double a);
00219 
00226 int lo_message_add_symbol(lo_message m, const char *a);
00227 
00234 int lo_message_add_char(lo_message m, char a);
00235 
00242 int lo_message_add_midi(lo_message m, uint8_t a[4]);
00243 
00250 int lo_message_add_true(lo_message m);
00251 
00258 int lo_message_add_false(lo_message m);
00259 
00266 int lo_message_add_nil(lo_message m);
00267 
00274 int lo_message_add_infinitum(lo_message m);
00275 
00281 lo_address lo_message_get_source(lo_message m);
00282 
00289 lo_timetag lo_message_get_timestamp(lo_message m);
00290 
00296 char *lo_message_get_types(lo_message m);
00297 
00303 int lo_message_get_argc(lo_message m);
00304 
00310 lo_arg **lo_message_get_argv(lo_message m);
00311 
00318 size_t lo_message_length(lo_message m, const char *path);
00319 
00334 void *lo_message_serialise(lo_message m, const char *path, void *to,
00335                size_t *size);
00336 
00350 lo_message lo_message_deserialise(void *data, size_t size, int *result);
00351 
00367 int lo_server_dispatch_data(lo_server s, void *data, size_t size);
00368 
00375 const char *lo_address_get_hostname(lo_address a);
00376 
00383 const char *lo_address_get_port(lo_address a);
00384 
00390 int lo_address_get_protocol(lo_address a);
00391 
00397 char *lo_address_get_url(lo_address a);
00398 
00409 void lo_address_set_ttl(lo_address t, int ttl);
00410 
00417 int lo_address_get_ttl(lo_address t);
00418 
00429 lo_bundle lo_bundle_new(lo_timetag tt);
00430 
00439 int lo_bundle_add_message(lo_bundle b, const char *path, lo_message m);
00440 
00448 size_t lo_bundle_length(lo_bundle b);
00449 
00463 void *lo_bundle_serialise(lo_bundle b, void *to, size_t *size);
00464 
00470 void lo_bundle_free(lo_bundle b);
00471 
00477 void lo_bundle_free_messages(lo_bundle b);
00478 
00485 int lo_is_numerical_type(lo_type a);
00486 
00493 int lo_is_string_type(lo_type a);
00494 
00511 int lo_coerce(lo_type type_to, lo_arg *to, lo_type type_from, lo_arg *from);
00512 
00517 lo_hires lo_hires_val(lo_type type, lo_arg *p);
00518 
00535 lo_server lo_server_new(const char *port, lo_err_handler err_h);
00536 
00553 lo_server lo_server_new_with_proto(const char *port, int proto,
00554                                    lo_err_handler err_h);
00555 
00568 lo_server lo_server_new_multicast(const char *group, const char *port,
00569                                   lo_err_handler err_h);
00570 
00574 void lo_server_free(lo_server s);
00575 
00587 int lo_server_wait(lo_server s, int timeout);
00588 
00600 int lo_server_recv_noblock(lo_server s, int timeout);
00601 
00608 int lo_server_recv(lo_server s);
00609 
00624 lo_method lo_server_add_method(lo_server s, const char *path,
00625                                const char *typespec, lo_method_handler h,
00626                                void *user_data);
00627 
00636 void lo_server_del_method(lo_server s, const char *path,
00637                                const char *typespec);
00638 
00651 int lo_server_get_socket_fd(lo_server s);
00652 
00659 int lo_server_get_port(lo_server s);
00660 
00666 int lo_server_get_protocol(lo_server s);
00667 
00673 char *lo_server_get_url(lo_server s);
00674 
00679 int lo_server_events_pending(lo_server s);
00680 
00686 double lo_server_next_event_delay(lo_server s);
00687 
00696 char *lo_url_get_protocol(const char *url);
00697 
00709 int lo_url_get_protocol_id(const char *url);
00710 
00716 char *lo_url_get_hostname(const char *url);
00717 
00723 char *lo_url_get_port(const char *url);
00724 
00730 char *lo_url_get_path(const char *url);
00731 
00732 /* utility functions */
00733 
00740 int lo_strsize(const char *s);
00741 
00748 uint32_t lo_blobsize(lo_blob b);
00749 
00756 int lo_pattern_match(const char *str, const char *p);
00757 
00759 int lo_send_internal(lo_address t, const char *file, const int line,
00760      const char *path, const char *types, ...);
00762 int lo_send_timestamped_internal(lo_address t, const char *file, const int line,
00763      lo_timetag ts, const char *path, const char *types, ...);
00765 int lo_send_from_internal(lo_address targ, lo_server from, const char *file, 
00766      const int line, const lo_timetag ts, 
00767      const char *path, const char *types, ...);
00768 
00769 
00774 double lo_timetag_diff(lo_timetag a, lo_timetag b);
00775 
00781 void lo_timetag_now(lo_timetag *t);
00782 
00786 size_t lo_arg_size(lo_type type, void *data);
00787 
00797 char *lo_get_path(void *data, ssize_t size);
00798 
00806 void lo_arg_host_endian(lo_type type, void *data);
00807 
00815 void lo_arg_network_endian(lo_type type, void *data);
00816 
00819 /* prettyprinters */
00820 
00830 void lo_bundle_pp(lo_bundle b);
00831 
00833 void lo_message_pp(lo_message m);
00834 
00840 void lo_arg_pp(lo_type type, void *data);
00841 
00843 void lo_server_pp(lo_server s);
00844 
00846 void lo_method_pp(lo_method m);
00847 
00850 void lo_method_pp_prefix(lo_method m, const char *p);
00851 
00853 void lo_server_thread_pp(lo_server_thread st);
00856 #ifdef __cplusplus
00857 }
00858 #endif
00859 
00860 #endif

Generated on Sat Oct 17 14:12:32 2009 for CSL by  doxygen 1.4.5-20051010