84#ifdef COSC_BUILD_SHARED
86#define COSC_API __declspec(dllexport)
91#if defined(__clang__) || defined(__GNUC__)
92#define COSC_API __attribute__ ((visibility ("hidden")))
149#ifndef COSC_TYPE_INT32
150#define COSC_TYPE_INT32 int32_t
152#ifndef COSC_TYPE_UINT32
153#define COSC_TYPE_UINT32 uint32_t
157#ifndef COSC_TYPE_INT64
158#define COSC_TYPE_INT64 int64_t
161#define COSC_TYPE_INT64 struct cosc_64bits
165#ifndef COSC_TYPE_UINT64
166#define COSC_TYPE_UINT64 uint64_t
169#define COSC_TYPE_UINT64 struct cosc_64bits
174#ifndef COSC_TYPE_INT32
175#define COSC_TYPE_INT32 int
177#ifndef COSC_TYPE_UINT32
178#define COSC_TYPE_UINT32 unsigned int
182#ifndef COSC_TYPE_INT64
183#define COSC_TYPE_INT64 long long
186#define COSC_TYPE_INT64 struct cosc_64bits
190#ifndef COSC_TYPE_UINT64
191#define COSC_TYPE_UINT64 unsigned long long
194#define COSC_TYPE_UINT64 struct cosc_64bits
199#ifndef COSC_NOFLOAT32
200#ifndef COSC_TYPE_FLOAT32
201#define COSC_TYPE_FLOAT32 float
204#define COSC_TYPE_FLOAT32 COSC_TYPE_UINT32
207#ifndef COSC_NOFLOAT64
208#ifndef COSC_TYPE_FLOAT64
209#define COSC_TYPE_FLOAT64 double
212#define COSC_TYPE_FLOAT64 struct cosc_64bits
218#define COSC_INT32MAX 2147483647
223#define COSC_INT32MIN ((-2147483647)-1)
228#define COSC_UINT32MAX 4294967295
233#define COSC_INT64MAX 9223372036854775807LL
238#define COSC_INT64MIN ((-9223372036854775807LL)-1)
243#define COSC_UINT64MAX 18446744073709551615ULL
261#define COSC_64BITS_INIT(hi_, lo_) {{(hi_), (lo_)}}
269#define COSC_64BITS_SET(bits_, hi_, lo_) do { COSC_64BITS_HI(bits_) = (hi_); COSC_64BITS_LO(bits_) = (lo_); } while (0)
275#define COSC_64BITS_HI(bits_) ((bits_)->w[0])
281#define COSC_64BITS_LO(bits_) ((bits_)->w[1])
296#define COSC_INT64_INIT_ZERO 0
297#define COSC_INT64_SET_ZERO(ptr) (*(ptr) = 0)
299#define COSC_INT64_INIT_ZERO COSC_64BITS_INIT(0, 0)
300#define COSC_INT64_SET_ZERO(ptr) COSC_64BITS_SET(ptr, 0, 0)
315#ifndef COSC_NOFLOAT64
316#define COSC_FLOAT64_INIT_ZERO 0
317#define COSC_FLOAT64_SET_ZERO(ptr) (*(ptr) = 0)
319#define COSC_FLOAT64_INIT_ZERO COSC_64BITS_INIT(0, 0)
320#define COSC_FLOAT64_SET_ZERO(ptr) COSC_64BITS_SET(ptr, 0, 0)
360#define COSC_SIZE_MAX 2147483644
368#define COSC_PADMUST(sz) (4 - ((cosc_uint32)(sz) & 3))
375#define COSC_PAD(sz) (COSC_PADMUST(sz) & 3)
380#define COSC_LEVEL_TYPE_BUNDLE 'B'
385#define COSC_LEVEL_TYPE_MESSAGE 'M'
390#define COSC_LEVEL_TYPE_BLOB 'b'
396#define COSC_SERIAL_PSIZE 1
401#define COSC_EOVERRUN -2
406#define COSC_ESIZEMAX -3
416#define COSC_EPSIZE -5
421#define COSC_EINVAL -6
426#define COSC_ELEVELMAX -7
431#define COSC_ELEVELTYPE -8
436#define COSC_EPSIZEFLAG -9
441#define COSC_EMSGTYPE -10
590#define COSC_SERIAL_ISWRITER(serial_) ((serial_)->wbuffer != 0)
597#define COSC_SERIAL_ISREADER(serial_) ((serial_)->rbuffer != 0)
854#ifndef COSC_NOPATTERN
945 const char *apattern,
947 const char *tpattern,
954#ifndef COSC_NOTIMETAG
983#ifndef COSC_NOFLTCONV
1408 const unsigned char value[4]
1428 unsigned char value[4]
1514 const char *address,
1516 const char *typetag,
1552 const char **address,
1554 const char **typetag,
1735#if !defined(COSC_NOSTDLIB) && !defined(COSC_NODUMP)
1775#if !defined(COSC_NOWRITER) || !defined(COSC_NOREADER)
1822#ifndef COSC_NOWRITER
1906 const char *address,
1908 const char *typetag,
2199 const unsigned char value[4]
2321#ifndef COSC_NOREADER
2439 const char **address,
2441 const char **typetag,
2755 unsigned char value[4]
COSC_API cosc_int32 cosc_reader_bytes(struct cosc_serial *serial, void *value, cosc_int32 value_n)
Read bytes to a started blob level.
Definition cosc.c:3277
COSC_TYPE_INT32 cosc_int32
Signed 32-bit integer.
Definition cosc.h:253
COSC_API cosc_int32 cosc_write_blob(void *buffer, cosc_int32 size, const void *value, cosc_int32 value_n)
Write a blob.
Definition cosc.c:1386
COSC_API cosc_int32 cosc_write_message(void *buffer, cosc_int32 size, const struct cosc_message *message, cosc_int32 psize, cosc_int32 *value_count)
Write an OSC message.
Definition cosc.c:1923
COSC_API cosc_int32 cosc_writer_float64(struct cosc_serial *serial, cosc_float64 value)
Write a 64-bit float.
Definition cosc.c:2629
COSC_API cosc_int32 cosc_reader_end_bundle(struct cosc_serial *serial)
End a bundle level.
Definition cosc.c:2907
COSC_API cosc_int32 cosc_reader_message(struct cosc_serial *serial, struct cosc_message *message, cosc_int32 *value_count, cosc_int32 exit_early)
Read an OSC message.
Definition cosc.c:3237
COSC_API cosc_int32 cosc_reader_int32(struct cosc_serial *serial, cosc_int32 *value)
Write a signed 32-bit integer.
Definition cosc.c:3064
#define COSC_TYPE_UINT64
Used to typedef cosc_uint64.
Definition cosc.h:166
COSC_API cosc_int32 cosc_value_dump(char *s, cosc_int32 n, char type, const union cosc_value *value)
Dump an OSC value to string.
Definition cosc.c:2041
COSC_API cosc_int32 cosc_write_midi(void *buffer, cosc_int32 size, const unsigned char value[4])
Write a MIDI message.
Definition cosc.c:1477
COSC_API cosc_int32 cosc_reader_peek_bundle(struct cosc_serial *serial, cosc_uint64 *timetag, cosc_int32 *psize)
Check if the buffer has a bundle at the current read size.
Definition cosc.c:2858
COSC_API cosc_int32 cosc_write_int64(void *buffer, cosc_int32 size, cosc_int64 value)
Write a 64-bit big endian signed integer.
Definition cosc.c:1225
COSC_API cosc_int32 cosc_read_uint32(const void *buffer, cosc_int32 size, cosc_uint32 *value)
Read a 32-bit big endian unsigned integer.
Definition cosc.c:1135
#define COSC_TYPE_FLOAT32
Used to typedef cosc_float32.
Definition cosc.h:201
COSC_API void cosc_writer_setup(struct cosc_serial *serial, void *buffer, cosc_int32 buffer_size, struct cosc_level *levels, cosc_int32 level_max, cosc_uint32 flags)
Setup a serial for writing.
Definition cosc.c:2408
#define COSC_API
Used to declare linkage for functions.
Definition cosc.h:94
COSC_TYPE_UINT64 cosc_uint64
Unsigned 64-bit integer.
Definition cosc.h:345
COSC_API cosc_int32 cosc_write_uint64(void *buffer, cosc_int32 size, cosc_uint64 value)
Write a 64-bit, big endian unsigned integer.
Definition cosc.c:1199
COSC_API cosc_int32 cosc_read_uint64(const void *buffer, cosc_int32 size, cosc_uint64 *value)
Read a 64-bit big endian unsigned integer.
Definition cosc.c:1213
COSC_API cosc_int32 cosc_reader_repeat(struct cosc_serial *serial)
Repeat typetag from the beginning of an array start, not including the starting '[' character.
Definition cosc.c:3318
COSC_API cosc_int32 cosc_reader_start_message(struct cosc_serial *serial, const char **address, cosc_int32 *address_n, const char **typetag, cosc_int32 *typetag_n)
Start a new message level.
Definition cosc.c:2921
COSC_API cosc_int32 cosc_write_value(void *buffer, cosc_int32 size, char type, const union cosc_value *value)
Write an OSC value.
Definition cosc.c:1653
COSC_API cosc_int32 cosc_feature_swap(void)
Feature test for endian swapping.
Definition cosc.c:485
COSC_API cosc_int32 cosc_reader_skip(struct cosc_serial *serial)
Skip a value, if the value has payload it will be zeroes.
Definition cosc.c:3299
COSC_API cosc_int32 cosc_pattern_validate(const char *s, cosc_int32 s_n, cosc_int32 *invalid)
Scan matching pattern for invalid characters.
Definition cosc.c:740
COSC_API cosc_int32 cosc_feature_pattern(void)
Feature test for pattern support.
Definition cosc.c:503
COSC_API cosc_int32 cosc_writer_repeat(struct cosc_serial *serial)
Repeat typetag from the beginning of an array start, where the array starts with a '['.
Definition cosc.c:2835
COSC_API cosc_int32 cosc_write_signature(void *buffer, cosc_int32 size, const char *address, cosc_int32 address_n, const char *typetag, cosc_int32 typetag_n, cosc_int32 psize)
Write an OSC message signature.
Definition cosc.c:1565
COSC_API cosc_int32 cosc_writer_start_blob(struct cosc_serial *serial)
Start a new blob level.
Definition cosc.c:2525
COSC_API cosc_int32 cosc_reader_end_message(struct cosc_serial *serial, cosc_int32 exit_early)
End a message level.
Definition cosc.c:2973
COSC_API cosc_int32 cosc_write_char(void *buffer, cosc_int32 size, cosc_int32 value)
Write an ASCII character.
Definition cosc.c:1446
COSC_API cosc_int32 cosc_writer_skip(struct cosc_serial *serial)
Skip a value, if the value has payload it will be zeroes.
Definition cosc.c:2816
COSC_API cosc_int32 cosc_read_value(const void *buffer, cosc_int32 size, char type, union cosc_value *value)
Read an OSC value.
Definition cosc.c:1717
COSC_API cosc_int32 cosc_writer_midi(struct cosc_serial *serial, const unsigned char value[4])
Write a MIDI message.
Definition cosc.c:2696
COSC_API cosc_int32 cosc_feature_reader(void)
Feature test for reader support.
Definition cosc.c:539
COSC_API cosc_int32 cosc_reader_value(struct cosc_serial *serial, cosc_int32 type, union cosc_value *value)
Read a value.
Definition cosc.c:3198
COSC_API cosc_int32 cosc_writer_blob(struct cosc_serial *serial, const void *value, cosc_int32 value_n)
Write a blob.
Definition cosc.c:2663
COSC_API cosc_int32 cosc_reader_int64(struct cosc_serial *serial, cosc_int64 *value)
Write a signed 64-bit integer.
Definition cosc.c:3103
COSC_API cosc_int32 cosc_read_signature(const void *buffer, cosc_int32 size, const char **address, cosc_int32 *address_n, const char **typetag, cosc_int32 *typetag_n, cosc_int32 *psize)
Read an OSC message signature.
Definition cosc.c:1616
COSC_API cosc_int32 cosc_write_values(void *buffer, cosc_int32 size, const char *types, cosc_int32 types_n, const union cosc_value *values, cosc_int32 values_n, cosc_int32 *value_count)
Write OSC values.
Definition cosc.c:1756
COSC_API cosc_int32 cosc_writer_float32(struct cosc_serial *serial, cosc_float32 value)
Write a 32-bit float.
Definition cosc.c:2590
COSC_API cosc_int32 cosc_pattern_match(const char *s, cosc_int32 s_n, const char *pattern, cosc_int32 pattern_n)
Match an address or typetag.
Definition cosc.c:801
#define COSC_TYPE_FLOAT64
Used to typedef cosc_float64.
Definition cosc.h:209
#define COSC_TYPE_INT32
Used to typedef cosc_int32.
Definition cosc.h:150
COSC_API cosc_int32 cosc_write_bundle(void *buffer, cosc_int32 size, cosc_uint64 timetag, cosc_int32 psize)
Write an OSC bundle head.
Definition cosc.c:1508
COSC_API cosc_int32 cosc_read_blob(const void *buffer, cosc_int32 size, void *value, cosc_int32 value_n, const void **data, cosc_int32 *data_size)
Read a blob.
Definition cosc.c:1416
COSC_API cosc_int32 cosc_writer_uint32(struct cosc_serial *serial, cosc_uint32 value)
Write an unsigned 32-bit integer.
Definition cosc.c:2564
COSC_API cosc_int32 cosc_typetag_char_validate(cosc_int32 c)
Check if an typetag character is valid.
Definition cosc.c:608
COSC_API cosc_int32 cosc_read_int32(const void *buffer, cosc_int32 size, cosc_int32 *value)
Read a 32-bit big endian signed integer.
Definition cosc.c:1161
#define COSC_TYPE_UINT32
Used to typedef cosc_uint32.
Definition cosc.h:153
COSC_API cosc_int32 cosc_feature_float32(void)
Feature test for 32-bit float support.
Definition cosc.c:467
COSC_API cosc_int32 cosc_address_char_validate(cosc_int32 c)
Check if an address character is valid.
Definition cosc.c:554
COSC_API cosc_int32 cosc_reader_float32(struct cosc_serial *serial, cosc_float32 *value)
Write a 32-bit float.
Definition cosc.c:3077
COSC_API cosc_int32 cosc_read_values(const void *buffer, cosc_int32 size, const char *types, cosc_int32 types_n, union cosc_value *values, cosc_int32 values_n, cosc_int32 *value_count, cosc_int32 exit_early)
Read OSC values.
Definition cosc.c:1839
COSC_API cosc_int32 cosc_reader_start_bundle(struct cosc_serial *serial, cosc_uint64 *timetag)
Start a new bundle level.
Definition cosc.c:2880
COSC_API cosc_uint32 cosc_timetag_to_time(cosc_uint64 timetag, cosc_uint32 *nanos)
Convert a timetag to seconds and nanoseconds.
Definition cosc.c:970
COSC_API cosc_uint64 cosc_time_to_timetag(cosc_uint32 seconds, cosc_uint32 nanos)
Convert time to a timetag.
Definition cosc.c:996
COSC_API cosc_float64 cosc_float32_to_float64(cosc_float32 value)
Convert a 32-bit float to a 64-bit float.
Definition cosc.c:1080
COSC_API cosc_int32 cosc_writer_string(struct cosc_serial *serial, const char *value, cosc_int32 value_n, cosc_int32 *length)
Write a string.
Definition cosc.c:2642
COSC_API cosc_int32 cosc_typetag_validate(const char *typetag, cosc_int32 typetag_n, cosc_int32 *invalid)
Scan typetag for invalid characters.
Definition cosc.c:615
COSC_API cosc_int32 cosc_read_midi(const void *buffer, cosc_int32 size, unsigned char value[4])
Read an ASCII character.
Definition cosc.c:1495
COSC_API cosc_int32 cosc_feature_int64(void)
Feature test for 64-bit integer support.
Definition cosc.c:458
COSC_API cosc_int32 cosc_write_int32(void *buffer, cosc_int32 size, cosc_int32 value)
Write a 32-bit big endian signed integer.
Definition cosc.c:1147
COSC_API cosc_int32 cosc_writer_message(struct cosc_serial *serial, const struct cosc_message *message, cosc_int32 *value_count)
Write an OSC message.
Definition cosc.c:2756
COSC_API cosc_int32 cosc_writer_end_bundle(struct cosc_serial *serial)
End a bundle level.
Definition cosc.c:2442
COSC_TYPE_FLOAT64 cosc_float64
64-bit floating point.
Definition cosc.h:355
COSC_API cosc_int32 cosc_writer_char(struct cosc_serial *serial, cosc_int32 value)
Write an ASCII character.
Definition cosc.c:2683
COSC_API cosc_int32 cosc_reader_start_blob(struct cosc_serial *serial, cosc_int32 *value_size)
Start a new blob level.
Definition cosc.c:3006
COSC_API cosc_int32 cosc_feature_array(void)
Feature test for array support.
Definition cosc.c:494
COSC_API cosc_int32 cosc_serial_get_size(const struct cosc_serial *serial)
Get the number of written or read bytes.
Definition cosc.c:2371
COSC_API cosc_int32 cosc_writer_uint64(struct cosc_serial *serial, cosc_uint64 value)
Write an unsigned 64-bit integer.
Definition cosc.c:2603
COSC_API cosc_int32 cosc_feature_writer(void)
Feature test for writer support.
Definition cosc.c:530
COSC_API cosc_int32 cosc_serial_get_msgtype(const struct cosc_serial *serial)
Get the current typetag type of a message level.
Definition cosc.c:2380
COSC_API cosc_int32 cosc_read_float32(const void *buffer, cosc_int32 size, cosc_float32 *value)
Read a 32-bit big endian floating point.
Definition cosc.c:1187
COSC_TYPE_INT64 cosc_int64
Signed 64-bit integer.
Definition cosc.h:340
COSC_API cosc_int32 cosc_signature_match(const void *buffer, cosc_int32 size, const char *apattern, cosc_int32 apattern_n, const char *tpattern, cosc_int32 tpattern_n, cosc_int32 prefix)
Match an address and typetag.
Definition cosc.c:935
COSC_API cosc_int32 cosc_write_uint32(void *buffer, cosc_int32 size, cosc_uint32 value)
Write a 32-bit, big endian unsigned integer.
Definition cosc.c:1121
COSC_API cosc_float32 cosc_float64_to_float32(cosc_float64 value)
Convert a 64-bit float to a 32-bit float.
Definition cosc.c:1023
COSC_API cosc_int32 cosc_reader_uint64(struct cosc_serial *serial, cosc_uint64 *value)
Write an unsigned 64-bit integer.
Definition cosc.c:3090
COSC_API cosc_int32 cosc_feature_float64(void)
Feature test for 64-bit float support.
Definition cosc.c:476
COSC_API cosc_int32 cosc_writer_int32(struct cosc_serial *serial, cosc_int32 value)
Write a signed 32-bit integer.
Definition cosc.c:2577
COSC_API cosc_int32 cosc_big_endian(void)
If big endian was detected when building this function returns non-zero, otherwise zero.
Definition cosc.c:548
COSC_API cosc_int32 cosc_writer_end_blob(struct cosc_serial *serial)
End a blob level.
Definition cosc.c:2543
COSC_API cosc_int32 cosc_message_dump(char *s, cosc_int32 n, const struct cosc_message *message)
Dump an OSC message to string.
Definition cosc.c:2105
COSC_API cosc_int32 cosc_write_string(void *buffer, cosc_int32 size, const char *value, cosc_int32 value_n, cosc_int32 *length)
Write a string.
Definition cosc.c:1308
COSC_API cosc_int32 cosc_writer_int64(struct cosc_serial *serial, cosc_int64 value)
Write a signed 64-bit integer.
Definition cosc.c:2616
COSC_API void cosc_reader_setup(struct cosc_serial *serial, const void *buffer, cosc_int32 buffer_size, struct cosc_level *levels, cosc_int32 level_max, cosc_uint32 flags)
Setup a serial for reading.
Definition cosc.c:2846
COSC_API cosc_int32 cosc_reader_end_blob(struct cosc_serial *serial)
End a blob level.
Definition cosc.c:3032
COSC_API cosc_int32 cosc_write_float64(void *buffer, cosc_int32 size, cosc_float64 value)
Write a 64-bit big endian floating point.
Definition cosc.c:1251
COSC_API cosc_int32 cosc_feature_timetag(void)
Feature test for timetag conversion support.
Definition cosc.c:512
COSC_API cosc_int32 cosc_writer_start_message(struct cosc_serial *serial, const char *address, cosc_int32 address_n, const char *typetag, cosc_int32 typetag_n)
Start a new message level.
Definition cosc.c:2456
COSC_API cosc_int32 cosc_read_int64(const void *buffer, cosc_int32 size, cosc_int64 *value)
Read a 64-bit big endian signed integer.
Definition cosc.c:1239
COSC_API cosc_int32 cosc_read_bundle(const void *buffer, cosc_int32 size, cosc_uint64 *timetag, cosc_int32 *psize)
Read an OSC bundle head.
Definition cosc.c:1539
#define COSC_TYPE_INT64
Used to typedef cosc_int64.
Definition cosc.h:158
COSC_API cosc_int32 cosc_read_char(const void *buffer, cosc_int32 size, cosc_int32 *value)
Read an ASCII character.
Definition cosc.c:1464
COSC_API cosc_int32 cosc_writer_bytes(struct cosc_serial *serial, const void *value, cosc_int32 value_n)
Write bytes to a started blob level.
Definition cosc.c:2792
COSC_API cosc_int32 cosc_typetag_payload(char *s, cosc_int32 s_n, const char *typetag, cosc_int32 typetag_n, cosc_int32 *array_members)
Scan typetag for types with payload, ignoring the comma prefix, array syntax and types T,...
Definition cosc.c:689
COSC_API cosc_int32 cosc_read_string(const void *buffer, cosc_int32 size, char *value, cosc_int32 value_n, cosc_int32 *length)
Read a string.
Definition cosc.c:1350
COSC_API cosc_int32 cosc_read_float64(const void *buffer, cosc_int32 size, cosc_float64 *value)
Read a 64-bit big endian floating point.
Definition cosc.c:1278
COSC_API void cosc_serial_reset(struct cosc_serial *serial)
Reset serial.
Definition cosc.c:2396
COSC_API cosc_int32 cosc_reader_uint32(struct cosc_serial *serial, cosc_uint32 *value)
Write an unsigned 32-bit integer.
Definition cosc.c:3051
COSC_API cosc_int32 cosc_reader_midi(struct cosc_serial *serial, unsigned char value[4])
Write a MIDI message.
Definition cosc.c:3185
COSC_API cosc_int32 cosc_pattern_char_validate(cosc_int32 c)
Check if an pattern character is valid.
Definition cosc.c:733
COSC_API cosc_int32 cosc_reader_char(struct cosc_serial *serial, cosc_int32 *value)
Write an ASCII character.
Definition cosc.c:3172
COSC_API cosc_int32 cosc_feature_fltconv(void)
Feature test for float conversion support.
Definition cosc.c:521
COSC_API cosc_int32 cosc_reader_string(struct cosc_serial *serial, char *value, cosc_int32 value_n, cosc_int32 *length)
Write a string.
Definition cosc.c:3129
COSC_API cosc_int32 cosc_reader_float64(struct cosc_serial *serial, cosc_float64 *value)
Write a 64-bit float.
Definition cosc.c:3116
COSC_API cosc_int32 cosc_address_validate(const char *address, cosc_int32 address_n, cosc_int32 *invalid)
Scan address for invalid characters.
Definition cosc.c:574
COSC_API cosc_int32 cosc_reader_blob(struct cosc_serial *serial, void *value, cosc_int32 value_n, const void **data, cosc_int32 *data_size)
Write a blob.
Definition cosc.c:3150
COSC_TYPE_UINT32 cosc_uint32
Unsigned 32-bit integer.
Definition cosc.h:248
COSC_API cosc_int32 cosc_writer_end_message(struct cosc_serial *serial)
End a message level.
Definition cosc.c:2500
COSC_TYPE_FLOAT32 cosc_float32
32-bit floating point.
Definition cosc.h:350
COSC_API cosc_int32 cosc_serial_get_buffer_size(const struct cosc_serial *serial)
The maximum number of bytes that can be written/read to/from the buffer.
Definition cosc.c:2364
COSC_API cosc_int32 cosc_write_float32(void *buffer, cosc_int32 size, cosc_float32 value)
Write a 32-bit big endian floating point.
Definition cosc.c:1173
COSC_API cosc_int32 cosc_writer_start_bundle(struct cosc_serial *serial, cosc_uint64 timetag)
Start a new bundle level.
Definition cosc.c:2420
COSC_API cosc_int32 cosc_writer_value(struct cosc_serial *serial, cosc_int32 type, const union cosc_value *value)
Write a value.
Definition cosc.c:2709
COSC_API cosc_int32 cosc_read_message(const void *buffer, cosc_int32 size, struct cosc_message *message, cosc_int32 *psize, cosc_int32 *value_count, cosc_int32 exit_early)
Read an OSC message.
Definition cosc.c:1975
Used when 64-bit types are not available.
Definition cosc.h:327
cosc_uint32 w[2]
Most significant bits first then the least significant, i.e big endian layout for the words.
Definition cosc.h:333
Used to manage the levels of a serial.
Definition cosc.h:603
cosc_int32 ttindex
The current index in the typetag.
Definition cosc.h:645
cosc_int32 size
The number of written or read bytes.
Definition cosc.h:626
cosc_int32 ttend
The buffer byte offset of the typetag end, including it's zero terminator and pad zero bytes (i....
Definition cosc.h:639
cosc_int32 start
The buffer byte offset of the level start.
Definition cosc.h:613
cosc_int32 size_max
The level max size.
Definition cosc.h:621
cosc_int32 ttstart
The buffer byte offset of the typetag start.
Definition cosc.h:632
cosc_int32 type
The level type.
Definition cosc.h:608
A message.
Definition cosc.h:536
cosc_int32 values_n
Write/read at most this many values.
Definition cosc.h:581
cosc_int32 address_n
When writing read at most this many bytes from the address, when reading the length excluding the zer...
Definition cosc.h:547
union cosc_message::@050073337162334015163030171201070055033256045255 values
Const safety.
union cosc_value * read
Read values.
Definition cosc.h:574
const char * typetag
The typetag.
Definition cosc.h:552
const char * address
The address.
Definition cosc.h:541
const union cosc_value * write
Write values.
Definition cosc.h:569
cosc_int32 typetag_n
When writing read at most this many bytes from the typetag, when reading the length excluding the zer...
Definition cosc.h:558
A serial.
Definition cosc.h:653
cosc_int32 level_max
Maximum level.
Definition cosc.h:678
cosc_uint32 flags
Serial flags.
Definition cosc.h:693
cosc_int32 size
The number of written/read bytes, not including levels not yet ended.
Definition cosc.h:688
cosc_int32 level
Current level.
Definition cosc.h:683
const unsigned char * rbuffer
Read buffer, NULL if writing.
Definition cosc.h:663
cosc_int32 buffer_size
Maximum number of bytes the buffer has available.
Definition cosc.h:668
unsigned char * wbuffer
Write buffer, NULL if reading.
Definition cosc.h:658
struct cosc_level * levels
A pointer to an array of levels.
Definition cosc.h:673
A value.
Definition cosc.h:447
unsigned char m[4]
MIDI message.
Definition cosc.h:528
cosc_int32 length
When writing read at most this many bytes from s, when reading this is the length excluding the zero ...
Definition cosc.h:476
cosc_int32 size
The size of the blob data in bytes.
Definition cosc.h:495
cosc_int64 h
64-bit signed integer.
Definition cosc.h:502
cosc_float64 d
64-bit floating point.
Definition cosc.h:512
cosc_uint64 t
64-bit unsigned integer (timetag).
Definition cosc.h:507
const void * b
A pointer to the data, when writing NULL will fill write zeroes, when reading NULL indicates a zero s...
Definition cosc.h:490
cosc_int32 c
8-bit unsigned integer (ASCII character).
Definition cosc.h:517
cosc_float32 f
32-bit floating point.
Definition cosc.h:457
cosc_int32 i
32-bit signed integer.
Definition cosc.h:452
const char * s
A pointer to the string, when writing NULL indicates an empty string, when reading the string is neve...
Definition cosc.h:470
cosc_uint32 r
32-bit unsigned integer.
Definition cosc.h:522