57#if !defined(SWIG) && CHAR_BIT != 8
58#error "Unsupported hardware (CHAR_BIT != 8)"
68#ifdef HAVE_OSE_ENDIAN_H
69#include "sys/ose_endian.h"
86#define OSE_CONF_MEMPROFILE
103#define OSE_CONF_WRAP_BUNDLE_PTR
107#ifdef OSE_CONF_WRAP_BUNDLE_PTR
108#define OSE_WRAP_BUNDLE_PTR
111#ifdef OSE_CONF_MEMPROFILE
112#define OSE_MEMPROFILE
129#define OSE_HOT OSE_CONF_HOT
146void *
ose_memmove(
void *dst,
const void *src,
size_t n);
148#define ose_memmove memmove
166#ifdef OSE_CONF_VALIDATE_VM_STEP
167#define OSE_VALIDATE_VM_STEP
178#ifndef OSE_WRAP_BUNDLE_PTR
179#define OSE_WRAP_BUNDLE_PTR
181#ifndef OSE_MEMPROFILE
182#define OSE_MEMPROFILE
196#if defined (__unix__) \
197 || ( defined (__APPLE__) \
198 && defined (__MACH__) ) \
199 || defined (__EMSCRIPTEN__)
200#include <arpa/inet.h>
201#elif defined (_WIN32) || defined (_WIN64)
207#define OSE_NEED_HTONL
208int32_t htonl(int32_t x);
209#define OSE_BYTE_SWAP32(x) \
210 ((((x) & 0xff000000) >> 24) | \
211 (((x) & 0x00ff0000) >> 8) | \
212 (((x) & 0x0000ff00) << 8) | \
213 (((x) & 0x000000ff) << 24))
217#define OSE_NEED_NTOHL
218int32_t ntohl(int32_t x);
219#define OSE_BYTE_SWAP64(x) \
220 ((((x) & 0xff00000000000000LL) >> 56) | \
221 (((x) & 0x00ff000000000000LL) >> 40) | \
222 (((x) & 0x0000ff0000000000LL) >> 24) | \
223 (((x) & 0x000000ff00000000LL) >> 8) | \
224 (((x) & 0x00000000ff000000LL) << 8) | \
225 (((x) & 0x0000000000ff0000LL) << 24) | \
226 (((x) & 0x000000000000ff00LL) << 40) | \
227 (((x) & 0x00000000000000ffLL) << 56))
232#define ose_htonl(x) htonl(x)
233#define ose_ntohl(x) ntohl(x)
235#define ose_htonll(x) \
238 : ((uint64_t)ose_htonl((x) \
239 & 0xFFFFFFFF) << 32) \
240 | ose_htonl((x) >> 32))
242#define ose_htonll(x) htonll(x)
246#define ose_ntohll(x) \
249 : ((uint64_t)ose_ntohl((x) \
250 & 0xFFFFFFFF) << 32) \
251 | ose_ntohl((x) >> 32))
253#define ose_ntohll(x) ntohll(x)
256#define OSE_INT32_TO_BUF_SWAP(buf, i) \
258 (buf)[0] = ((i) & 0xFF000000) >> 24; \
259 (buf)[1] = ((i) & 0x00FF0000) >> 16; \
260 (buf)[2] = ((i) & 0x0000FF00) >> 8; \
261 (buf)[3] = ((i) & 0x000000FF); \
263#define OSE_INT32_TO_BUF(buf, i) memcpy((buf), &(i), 4);
265#define OSE_INT64_TO_BUF_SWAP(buf, i) \
267 (buf)[0] = ((i) & 0xFF00000000000000) >> 56; \
268 (buf)[1] = ((i) & 0x00FF000000000000) >> 48; \
269 (buf)[2] = ((i) & 0x0000FF0000000000) >> 40; \
270 (buf)[3] = ((i) & 0x000000FF00000000) >> 32; \
271 (buf)[4] = ((i) & 0x00000000FF000000) >> 24; \
272 (buf)[5] = ((i) & 0x0000000000FF0000) >> 16; \
273 (buf)[6] = ((i) & 0x000000000000FF00) >> 8; \
274 (buf)[7] = ((i) & 0x00000000000000FF); \
276#define OSE_INT64_TO_BUF(buf, i) memcpy((buf), &(i), 8);
278#define OSE_BUF_TO_INT32_SWAP(buf, i) \
280 i = (((uint64_t)b[0]) & 0xFF) << 24 \
281 | (((uint64_t)b[1]) & 0xFF) << 16 \
282 | (((uint64_t)b[2]) & 0xFF) << 8 \
283 | (((uint64_t)b[3]) & 0xFF); \
285#define OSE_BUF_TO_INT32(buf, i) memcpy(&(i), (buf), 4);
287#define OSE_BUF_TO_INT64_SWAP(buf, i) \
289 i = (((uint64_t)b[0]) & 0xFF) << 56 \
290 | (((uint64_t)b[1]) & 0xFF) << 48 \
291 | (((uint64_t)b[2]) & 0xFF) << 40 \
292 | (((uint64_t)b[3]) & 0xFF) << 32 \
293 | (((uint64_t)b[4]) & 0xFF) << 24 \
294 | (((uint64_t)b[5]) & 0xFF) << 16 \
295 | (((uint64_t)b[6]) & 0xFF) << 8 \
296 | (((uint64_t)b[7]) & 0xFF); \
298#define OSE_BUF_TO_INT64(buf, i) memcpy(&(i), (buf), 8);
300#if defined(OSE_ENDIAN)
301#if OSE_ENDIAN == OSE_LITTLE_ENDIAN
302#define OSE_BYTE_SWAP32_INT_TO_BUF(buf, i)\
303 OSE_INT32_TO_BUF_SWAP(buf, i)
304#define OSE_BYTE_SWAP64_INT_TO_BUF(buf, i)\
305 OSE_INT64_TO_BUF_SWAP(buf, i)
307#define OSE_BYTE_SWAP32_BUF_TO_INT(buf, i)\
308 OSE_BUF_TO_INT32_SWAP(buf, i)
309#define OSE_BYTE_SWAP64_BUF_TO_INT(buf, i)\
310 OSE_BUF_TO_INT64_SWAP(buf, i)
314#define OSE_BYTE_SWAP32_INT_TO_BUF(buf, i)\
315 OSE_INT32_TO_BUF(buf, i)
316#define OSE_BYTE_SWAP64_INT_TO_BUF(buf, i)\
317 OSE_INT64_TO_BUF(buf, i)
319#define OSE_BYTE_SWAP32_BUF_TO_INT(buf, i)\
320 OSE_BUF_TO_INT32(buf, i)
321#define OSE_BYTE_SWAP64_BUF_TO_INT(buf, i)\
322 OSE_BUF_TO_INT64(buf, i)
328#define OSE_BYTE_SWAP32_INT_TO_BUF(buf, i) \
329 if(ose_ntohl(1) == 1) \
331 OSE_INT32_TO_BUF(buf, i); \
335 OSE_INT32_TO_BUF_SWAP(buf, i); \
337#define OSE_BYTE_SWAP64_INT_TO_BUF(buf, i) \
338 if(ose_ntohl(1) == 1) \
340 OSE_INT64_TO_BUF(buf, i); \
344 OSE_INT64_TO_BUF_SWAP(buf, i); \
347#define OSE_BYTE_SWAP32_BUF_TO_INT(buf, i) \
348 if(ose_ntohl(1) == 1) \
350 OSE_BUF_TO_INT32(buf, i); \
354 OSE_BUF_TO_INT32_SWAP(buf, i); \
356#define OSE_BYTE_SWAP64_BUF_TO_INT(buf, i) \
357 if(ose_ntohl(1) == 1) \
359 OSE_BUF_TO_INT64(buf, i); \
363 OSE_BUF_TO_INT64_SWAP(buf, i); \
372#ifdef OSE_WRAP_BUNDLE_PTR
377#define ose_constbundle ose_bundle
378ose_bundle ose_makeBundle(
const char *
const p);
379#define ose_makeConstBundle ose_makeBundle
380#define ose_getBundlePtr(bundle) (bundle).b
389#define ose_makeBundle(charptr) charptr
394#define ose_makeConstBundle(charptr) charptr
398#define ose_getBundlePtr(bundle) (bundle)
402#define ose_constbundle const char *
414#define OSE_INTPTR2 (sizeof(intptr_t) * 2)
425#if !defined(__cplusplus) && !defined(SWIG)
426#ifndef __bool_true_false_are_defined
442static const char OSETT_ID = OSETT_ID_;
443#define OSETTSTR_ID_ ","
444static const char *
const OSETTSTR_ID = OSETTSTR_ID_;
446#define OSETT_INT32_ 'i'
447static const char OSETT_INT32 = OSETT_INT32_;
448#define OSETTSTR_INT32_ "i"
449static const char *
const OSETTSTR_INT32 = OSETTSTR_INT32_;
451#define OSETT_FLOAT_ 'f'
452static const char OSETT_FLOAT = OSETT_FLOAT_;
453#define OSETTSTR_FLOAT_ "f"
454static const char *
const OSETTSTR_FLOAT = OSETTSTR_FLOAT_;
456#define OSETT_STRING_ 's'
457static const char OSETT_STRING = OSETT_STRING_;
458#define OSETTSTR_STRING_ "s"
459static const char *
const OSETTSTR_STRING = OSETTSTR_STRING_;
461#define OSETT_BLOB_ 'b'
462static const char OSETT_BLOB = OSETT_BLOB_;
463#define OSETTSTR_BLOB_ "b"
464static const char *
const OSETTSTR_BLOB = OSETTSTR_BLOB_;
472#define OSE_CONF_PROVIDE_TYPE_SYMBOL
473#define OSE_CONF_PROVIDE_TYPE_DOUBLE
474#define OSE_CONF_PROVIDE_TYPE_INT8
475#define OSE_CONF_PROVIDE_TYPE_UINT8
476#define OSE_CONF_PROVIDE_TYPE_INT16
477#define OSE_CONF_PROVIDE_TYPE_UINT16
478#define OSE_CONF_PROVIDE_TYPE_UINT32
479#define OSE_CONF_PROVIDE_TYPE_INT64
480#define OSE_CONF_PROVIDE_TYPE_UINT64
481#define OSE_CONF_PROVIDE_TYPE_TIMETAG
482#define OSE_CONF_PROVIDE_TYPE_TRUE
483#define OSE_CONF_PROVIDE_TYPE_FALSE
484#define OSE_CONF_PROVIDE_TYPE_NIL
485#define OSE_CONF_PROVIDE_TYPE_INFINITUM
493#ifdef OSE_CONF_PROVIDE_TYPE_SYMBOL
494#define OSE_PROVIDE_TYPE_SYMBOL
495#define OSETT_SYMBOL_ 'S'
496static const char OSETT_SYMBOL = OSETT_SYMBOL_;
497#define OSETTSTR_SYMBOL_ "S"
498static const char *
const OSETTSTR_SYMBOL = OSETTSTR_SYMBOL_;
500#ifdef OSE_CONF_PROVIDE_TYPE_DOUBLE
501#define OSE_PROVIDE_TYPE_DOUBLE
502#define OSETT_DOUBLE_ 'd'
503static const char OSETT_DOUBLE = OSETT_DOUBLE_;
504#define OSETTSTR_DOUBLE_ "d"
505static const char *
const OSETTSTR_DOUBLE = OSETTSTR_DOUBLE_;
507#ifdef OSE_CONF_PROVIDE_TYPE_INT8
508#define OSE_PROVIDE_TYPE_INT8
509#define OSETT_INT8_ 'c'
510static const char OSETT_INT8 = OSETT_INT8_;
511#define OSETTSTR_INT8_ "c"
512static const char *
const OSETTSTR_INT8 = OSETTSTR_INT8_;
514#ifdef OSE_CONF_PROVIDE_TYPE_UINT8
515#define OSE_PROVIDE_TYPE_UINT8
516#define OSETT_UINT8_ 'C'
517static const char OSETT_UINT8 = OSETT_UINT8_;
518#define OSETTSTR_UINT8_ "C"
519static const char *
const OSETTSTR_UINT8 = OSETTSTR_UINT8_;
521#ifdef OSE_CONF_PROVIDE_TYPE_INT16
522#define OSE_PROVIDE_TYPE_INT16
523#define OSETT_INT16_ 'u'
524static const char OSETT_INT16 = OSETT_INT16_;
525#define OSETTSTR_INT16_ "u"
526static const char *
const OSETTSTR_INT16 = OSETTSTR_INT16_;
528#ifdef OSE_CONF_PROVIDE_TYPE_UINT16
529#define OSE_PROVIDE_TYPE_UINT16
530#define OSETT_UINT16_ 'U'
531static const char OSETT_UINT16 = OSETT_UINT16_;
532#define OSETTSTR_UINT16_ "U"
533static const char *
const OSETTSTR_UINT16 = OSETTSTR_UINT16_;
535#ifdef OSE_CONF_PROVIDE_TYPE_UINT32
536#define OSE_PROVIDE_TYPE_UINT32
537#define OSETT_UINT32_ 'k'
538static const char OSETT_UINT32 = OSETT_UINT32_;
539#define OSETTSTR_UINT32_ "k"
540static const char *
const OSETTSTR_UINT32 = OSETTSTR_UINT32_;
542#ifdef OSE_CONF_PROVIDE_TYPE_INT64
543#define OSE_PROVIDE_TYPE_INT64
544#define OSETT_INT64_ 'h'
545static const char OSETT_INT64 = OSETT_INT64_;
546#define OSETTSTR_INT64_ "h"
547static const char *
const OSETTSTR_INT64 = OSETTSTR_INT64_;
549#ifdef OSE_CONF_PROVIDE_TYPE_UINT64
550#define OSE_PROVIDE_TYPE_UINT64
551#define OSETT_UINT64_ 'H'
552static const char OSETT_UINT64 = OSETT_UINT64_;
553#define OSETTSTR_UINT64_ "H"
554static const char *
const OSETTSTR_UINT64 = OSETTSTR_UINT64_;
556#ifdef OSE_CONF_PROVIDE_TYPE_TIMETAG
557#define OSE_PROVIDE_TYPE_TIMETAG
558#define OSETT_TIMETAG_ 't'
559static const char OSETT_TIMETAG = OSETT_TIMETAG_;
560#define OSETTSTR_TIMETAG_ "t"
561static const char *
const OSETTSTR_TIMETAG = OSETTSTR_TIMETAG_;
563#ifdef OSE_CONF_PROVIDE_TYPE_TRUE
564#define OSE_PROVIDE_TYPE_TRUE
565#define OSETT_TRUE_ 'T'
566static const char OSETT_TRUE = OSETT_TRUE_;
567#define OSETTSTR_TRUE_ "T"
568static const char *
const OSETTSTR_TRUE = OSETTSTR_TRUE_;
569static const char *
const ose_str_true =
"/,/T";
570static const int32_t ose_strlen_true = 4;
571static const int32_t ose_pstrlen_true = 8;
573#ifdef OSE_CONF_PROVIDE_TYPE_FALSE
574#define OSE_PROVIDE_TYPE_FALSE
575#define OSETT_FALSE_ 'F'
576static const char OSETT_FALSE = OSETT_FALSE_;
577#define OSETTSTR_FALSE_ "F"
578static const char *
const OSETTSTR_FALSE = OSETTSTR_FALSE_;
579static const char *
const ose_str_false =
"/,/F";
580static const int32_t ose_strlen_false = 4;
581static const int32_t ose_pstrlen_false = 8;
583#ifdef OSE_CONF_PROVIDE_TYPE_NIL
584#define OSE_PROVIDE_TYPE_NIL
585#define OSETT_NIL_ 'N'
586static const char OSETT_NIL = OSETT_NIL_;
587#define OSETTSTR_NIL_ "N"
588static const char *
const OSETTSTR_NIL = OSETTSTR_NIL_;
589static const char *
const ose_str_nil =
"/,/N";
590static const int32_t ose_strlen_nil = 4;
591static const int32_t ose_pstrlen_nil = 8;
593#ifdef OSE_CONF_PROVIDE_TYPE_INFINITUM
594#define OSE_PROVIDE_TYPE_INFINITUM
595#define OSETT_INFINITUM_ 'I'
596static const char OSETT_INFINITUM = OSETT_INFINITUM_;
597#define OSETTSTR_INFINITUM_ "I"
598static const char *
const OSETTSTR_INFINITUM = OSETTSTR_INFINITUM_;
599static const char *
const ose_str_infinitum =
"/,/I";
600static const int32_t ose_strlen_infinitum = 4;
601static const int32_t ose_pstrlen_infinitum = 8;
608#ifndef OSE_PROVIDE_TYPE_TRUE
609#define OSETT_TRUE_ 'T'
610static const char OSETT_TRUE = OSETT_TRUE_;
611#define OSETTSTR_TRUE_ "T"
612static const char *
const OSETTSTR_TRUE = OSETTSTR_TRUE_;
615#ifndef OSE_PROVIDE_TYPE_TRUE
616#define OSETT_FALSE_ 'F'
617static const char OSETT_FALSE = OSETT_FALSE_;
618#define OSETTSTR_FALSE_ "F"
619static const char *
const OSETTSTR_FALSE = OSETTSTR_FALSE_;
645#define OSETT_ALIGNEDPTR_ 'p'
646static const char OSETT_ALIGNEDPTR = OSETT_ALIGNEDPTR_;
647#define OSETTSTR_ALIGNEDPTR_ "p"
648static const char *
const OSETTSTR_ALIGNEDPTR = OSETTSTR_ALIGNEDPTR_;
680#define OSETT_WILDPTR_ 'P'
682#define OSETTSTR_WILDPTR_ "P"
683static const char *
const OSETTSTR_WILDPTR = OSETTSTR_WILDPTR_;
710#define OSETT_NOTYPETAG_ 0
711static const char OSETT_NOTYPETAG = OSETT_NOTYPETAG_;
712#define OSETTSTR_NOTYPETAG_ "0"
713static const char *
const OSETTSTR_NOTYPETAG = OSETTSTR_NOTYPETAG_;
715#define OSETT_BUNDLE_ '|'
716static const char OSETT_BUNDLE = OSETT_BUNDLE_;
717#define OSETTSTR_BUNDLE_ "|"
718static const char *
const OSETTSTR_BUNDLE = OSETTSTR_BUNDLE_;
720#define OSETT_MESSAGE_ '-'
721static const char OSETT_MESSAGE = OSETT_MESSAGE_;
722#define OSETTSTR_MESSAGE_ "-"
723static const char *
const OSETTSTR_MESSAGE = OSETTSTR_MESSAGE_;
731#define OSE_BUNDLE_ID_ "#bundle\0"
732#define OSE_BUNDLE_ID_LEN_ 8
733#define OSE_TIMETAG_NULL_ "\0\0\0\0\0\0\0\0"
734#define OSE_TIMETAG_LEN_ 8
735static const char *
const OSE_BUNDLE_ID = OSE_BUNDLE_ID_;
736static const int32_t OSE_BUNDLE_ID_LEN = OSE_BUNDLE_ID_LEN_;
737static const char *
const OSE_TIMETAG_NULL = OSE_TIMETAG_NULL_;
738static const int32_t OSE_TIMETAG_LEN = OSE_TIMETAG_LEN_;
739static const char *
const OSE_BUNDLE_HEADER =
740 OSE_BUNDLE_ID_ OSE_TIMETAG_NULL_;
741static const int32_t OSE_BUNDLE_HEADER_LEN =
742 (OSE_BUNDLE_ID_LEN_ + OSE_TIMETAG_LEN_);
744#define OSE_EMPTY_TYPETAG_STRING_ ",\0\0\0"
745static const char *
const OSE_EMPTY_TYPETAG_STRING =
746 OSE_EMPTY_TYPETAG_STRING_;
747static const int32_t OSE_EMPTY_TYPETAG_STRING_LEN = 1;
748static const int32_t OSE_EMPTY_TYPETAG_STRING_SIZE = 4;
751#ifdef OSE_CONF_ADDRESS_ANONVAL
752#define OSE_USER_ADDRESS_ANONVAL
754static const char *
const OSE_ADDRESS_ANONVAL =
755 OSE_CONF_ADDRESS_ANONVAL;
756static const int32_t OSE_ADDRESS_ANONVAL_LEN =
757 OSE_CONF_ADDRESS_ANONVAL_LEN;
758static const int32_t OSE_ADDRESS_ANONVAL_SIZE =
759 OSE_CONF_ADDRESS_ANONVAL_SIZE;
760static const char *
const OSE_ADDRESS_ANONVAL_EMPTY_TYPETAG_STRING =
761 OSE_CONF_ADDRESS_ANONVAL OSE_EMPTY_TYPETAG_STRING_;
765#define OSE_ADDRESS_ANONVAL_ "\0\0\0\0"
766static const char *
const OSE_ADDRESS_ANONVAL = OSE_ADDRESS_ANONVAL_;
767static const int32_t OSE_ADDRESS_ANONVAL_LEN = 0;
768static const int32_t OSE_ADDRESS_ANONVAL_SIZE = 4;
769static const char *
const OSE_ADDRESS_ANONVAL_EMPTY_TYPETAG_STRING =
770 OSE_ADDRESS_ANONVAL_ OSE_EMPTY_TYPETAG_STRING_;
773static const int32_t OSE_ADDRESS_MIN_LEN = 0;
774static const int32_t OSE_ADDRESS_MIN_PLEN = 4;
782typedef int32_t (*ose_getPayloadItemLengthFn)(ose_constbundle, char,
784typedef int32_t (*ose_getPayloadItemSizeFn)(ose_constbundle, char,
786typedef int32_t (*ose_pprintPayloadItemFn)(
ose_bundle, char,
788typedef int32_t (*ose_fromStringFn)(
ose_bundle, char,
791#define OSE_TYPE_ADDR_PREFIX "/"
793#define OSE_TYPE_ADDR_PPRINTPAYLOADITEM_SUFFIX "/PPPI"
794#define OSE_PPRINTPAYLOADITEM_ADDR_ \
795 OSE_TYPE_ADDR_PREFIX "%c" OSE_TYPE_ADDR_PPRINTPAYLOADITEM_SUFFIX
796static const char *
const OSE_PPRINTPAYLOADITEM_ADDR =
797 OSE_PPRINTPAYLOADITEM_ADDR_;
798static const int32_t OSE_PPRINTPAYLOADITEM_ADDR_LEN =
799 sizeof(OSE_PPRINTPAYLOADITEM_ADDR_);
800#ifndef OSE_PPRINTPAYLOADITEM_HOOK
801#define OSE_PPRINTPAYLOADITEM_HOOK ose_pprintPayloadItem_hook
803extern int32_t OSE_PPRINTPAYLOADITEM_HOOK (
ose_bundle bundle,
806 int32_t item_offset);
809#define OSE_TYPE_ADDR_GETPAYLOADITEMLENGTH_SUFFIX "/GPIL"
810#define OSE_GETPAYLOADITEMLENGTH_ADDR_ \
811 OSE_TYPE_ADDR_PREFIX "%c" OSE_TYPE_ADDR_GETPAYLOADITEMLENGTH_SUFFIX
812static const char *
const OSE_GETPAYLOADITEMLENGTH_ADDR =
813 OSE_GETPAYLOADITEMLENGTH_ADDR_;
814static const int32_t OSE_GETPAYLOADITEMLENGTH_ADDR_LEN =
815 sizeof(OSE_GETPAYLOADITEMLENGTH_ADDR_);
816#ifndef OSE_GETPAYLOADITEMLENGTH_HOOK
817#define OSE_GETPAYLOADITEMLENGTH_HOOK ose_getPayloadItemLength_hook
819extern int32_t OSE_GETPAYLOADITEMLENGTH_HOOK (ose_constbundle bundle,
822 int32_t item_offset);
825#define OSE_TYPE_ADDR_GETPAYLOADITEMSIZE_SUFFIX "/GPIS"
826#define OSE_GETPAYLOADITEMSIZE_ADDR_ \
827 OSE_TYPE_ADDR_PREFIX "%c" OSE_TYPE_ADDR_GETPAYLOADITEMSIZE_SUFFIX
828static const char *
const OSE_GETPAYLOADITEMSIZE_ADDR =
829 OSE_GETPAYLOADITEMSIZE_ADDR_;
830static const int32_t OSE_GETPAYLOADITEMSIZE_ADDR_LEN =
831 sizeof(OSE_GETPAYLOADITEMSIZE_ADDR_);
832#ifndef OSE_GETPAYLOADITEMSIZE_HOOK
833#define OSE_GETPAYLOADITEMSIZE_HOOK ose_getPayloadItemSize_hook
835extern int32_t OSE_GETPAYLOADITEMSIZE_HOOK (ose_constbundle bundle,
838 int32_t item_offset);
841#define OSE_TYPE_ADDR_FROMSTRING_SUFFIX "/FRST"
842#define OSE_FROMSTRING_ADDR_ \
843 OSE_TYPE_ADDR_PREFIX "%c" OSE_TYPE_ADDR_FROMSTRING_SUFFIX
844static const char *
const OSE_FROMSTRING_ADDR =
845 OSE_FROMSTRING_ADDR_;
846static const int32_t OSE_FROMSTRING_ADDR_LEN =
847 sizeof(OSE_FROMSTRING_ADDR_);
848#ifndef OSE_FROMSTRING_HOOK
849#define OSE_FROMSTRING_HOOK ose_fromString_hook
851extern int32_t OSE_FROMSTRING_HOOK (
ose_bundle bundle,
853 const char *
const str);
856#ifndef OSE_REGISTERTYPE_HOOK
857#define OSE_REGISTERTYPE_HOOK ose_registerType_hook
862 const char *
const getPayloadItemLength_addr,
863 ose_getPayloadItemLengthFn getPayloadItemLength,
864 const char *
const getPayloadItemSize_addr,
865 ose_getPayloadItemSizeFn getPayloadItemSize,
866 const char *
const pprintPayloadItem_addr,
867 ose_pprintPayloadItemFn pprintPayloadItem,
868 const char *
const evalType_addr,
870 const char *
const fromString_addr,
880const char *ose_version_string(
void);
881const char *ose_debug_string(
void);
882const char *ose_date_compiled_string(
void);
905#ifdef OSE_PROVIDE_TYPE_SYMBOL
908#ifdef OSE_PROVIDE_TYPE_DOUBLE
911#ifdef OSE_PROVIDE_TYPE_INT8
914#ifdef OSE_PROVIDE_TYPE_UINT8
917#ifdef OSE_PROVIDE_TYPE_INT16
920#ifdef OSE_PROVIDE_TYPE_UINT16
923#ifdef OSE_PROVIDE_TYPE_UINT32
926#ifdef OSE_PROVIDE_TYPE_INT64
929#ifdef OSE_PROVIDE_TYPE_UINT64
932#ifdef OSE_PROVIDE_TYPE_TIMETAG
935#ifdef OSE_PROVIDE_TYPE_TRUE
938#ifdef OSE_PROVIDE_TYPE_FALSE
941#ifdef OSE_PROVIDE_TYPE_NIL
944#ifdef OSE_PROVIDE_TYPE_INFINITUM
#define ose_memmove
Move bytes that may overlap: memmove, or on the ESP32 a faster way.
Definition ose.h:148
#define OSETT_WILDPTR_
A bound function from another process, kept but not callable.
Definition ose.h:680
void(* ose_fn)(ose_bundle)
Function pointer for the basic OSE function that operates on a bundle.
Definition ose.h:409