66#if !defined(SWIG) && CHAR_BIT != 8
67#error "Unsupported hardware (CHAR_BIT != 8)"
84#define strtof(s, e) ((float)strtod((s), (e)))
85#define strtoll(s, e, b) ((long long)strtol((s), (e), (b)))
86#define strtoull(s, e, b) ((unsigned long long)strtoul((s), (e), (b)))
94#ifdef HAVE_OSE_ENDIAN_H
95#include "sys/ose_endian.h"
103#define OSE_CONF_DEBUG
112#define OSE_CONF_MEMPROFILE
129#define OSE_CONF_WRAP_BUNDLE_PTR
133#ifdef OSE_CONF_WRAP_BUNDLE_PTR
134#define OSE_WRAP_BUNDLE_PTR
137#ifdef OSE_CONF_MEMPROFILE
138#define OSE_MEMPROFILE
155#define OSE_HOT OSE_CONF_HOT
172void *
ose_memmove(
void *dst,
const void *src,
size_t n);
174#define ose_memmove memmove
192#ifdef OSE_CONF_VALIDATE_VM_STEP
193#define OSE_VALIDATE_VM_STEP
204#ifndef OSE_WRAP_BUNDLE_PTR
205#define OSE_WRAP_BUNDLE_PTR
207#ifndef OSE_MEMPROFILE
208#define OSE_MEMPROFILE
222#if defined (__unix__) \
223 || ( defined (__APPLE__) \
224 && defined (__MACH__) ) \
225 || defined (__EMSCRIPTEN__)
226#include <arpa/inet.h>
227#elif defined (_WIN32) || defined (_WIN64)
233#define OSE_NEED_HTONL
234int32_t htonl(int32_t x);
235#define OSE_BYTE_SWAP32(x) \
236 ((((x) & 0xff000000) >> 24) | \
237 (((x) & 0x00ff0000) >> 8) | \
238 (((x) & 0x0000ff00) << 8) | \
239 (((x) & 0x000000ff) << 24))
243#define OSE_NEED_NTOHL
244int32_t ntohl(int32_t x);
245#define OSE_BYTE_SWAP64(x) \
246 ((((x) & 0xff00000000000000LL) >> 56) | \
247 (((x) & 0x00ff000000000000LL) >> 40) | \
248 (((x) & 0x0000ff0000000000LL) >> 24) | \
249 (((x) & 0x000000ff00000000LL) >> 8) | \
250 (((x) & 0x00000000ff000000LL) << 8) | \
251 (((x) & 0x0000000000ff0000LL) << 24) | \
252 (((x) & 0x000000000000ff00LL) << 40) | \
253 (((x) & 0x00000000000000ffLL) << 56))
258#define ose_htonl(x) htonl(x)
259#define ose_ntohl(x) ntohl(x)
261#define ose_htonll(x) \
264 : ((uint64_t)ose_htonl((x) \
265 & 0xFFFFFFFF) << 32) \
266 | ose_htonl((x) >> 32))
268#define ose_htonll(x) htonll(x)
272#define ose_ntohll(x) \
275 : ((uint64_t)ose_ntohl((x) \
276 & 0xFFFFFFFF) << 32) \
277 | ose_ntohl((x) >> 32))
279#define ose_ntohll(x) ntohll(x)
282#define OSE_INT32_TO_BUF_SWAP(buf, i) \
284 (buf)[0] = ((i) & 0xFF000000) >> 24; \
285 (buf)[1] = ((i) & 0x00FF0000) >> 16; \
286 (buf)[2] = ((i) & 0x0000FF00) >> 8; \
287 (buf)[3] = ((i) & 0x000000FF); \
289#define OSE_INT32_TO_BUF(buf, i) memcpy((buf), &(i), 4);
291#define OSE_INT64_TO_BUF_SWAP(buf, i) \
293 (buf)[0] = ((i) & 0xFF00000000000000) >> 56; \
294 (buf)[1] = ((i) & 0x00FF000000000000) >> 48; \
295 (buf)[2] = ((i) & 0x0000FF0000000000) >> 40; \
296 (buf)[3] = ((i) & 0x000000FF00000000) >> 32; \
297 (buf)[4] = ((i) & 0x00000000FF000000) >> 24; \
298 (buf)[5] = ((i) & 0x0000000000FF0000) >> 16; \
299 (buf)[6] = ((i) & 0x000000000000FF00) >> 8; \
300 (buf)[7] = ((i) & 0x00000000000000FF); \
302#define OSE_INT64_TO_BUF(buf, i) memcpy((buf), &(i), 8);
304#define OSE_BUF_TO_INT32_SWAP(buf, i) \
306 i = (((uint64_t)b[0]) & 0xFF) << 24 \
307 | (((uint64_t)b[1]) & 0xFF) << 16 \
308 | (((uint64_t)b[2]) & 0xFF) << 8 \
309 | (((uint64_t)b[3]) & 0xFF); \
311#define OSE_BUF_TO_INT32(buf, i) memcpy(&(i), (buf), 4);
313#define OSE_BUF_TO_INT64_SWAP(buf, i) \
315 i = (((uint64_t)b[0]) & 0xFF) << 56 \
316 | (((uint64_t)b[1]) & 0xFF) << 48 \
317 | (((uint64_t)b[2]) & 0xFF) << 40 \
318 | (((uint64_t)b[3]) & 0xFF) << 32 \
319 | (((uint64_t)b[4]) & 0xFF) << 24 \
320 | (((uint64_t)b[5]) & 0xFF) << 16 \
321 | (((uint64_t)b[6]) & 0xFF) << 8 \
322 | (((uint64_t)b[7]) & 0xFF); \
324#define OSE_BUF_TO_INT64(buf, i) memcpy(&(i), (buf), 8);
326#if defined(OSE_ENDIAN)
327#if OSE_ENDIAN == OSE_LITTLE_ENDIAN
328#define OSE_BYTE_SWAP32_INT_TO_BUF(buf, i)\
329 OSE_INT32_TO_BUF_SWAP(buf, i)
330#define OSE_BYTE_SWAP64_INT_TO_BUF(buf, i)\
331 OSE_INT64_TO_BUF_SWAP(buf, i)
333#define OSE_BYTE_SWAP32_BUF_TO_INT(buf, i)\
334 OSE_BUF_TO_INT32_SWAP(buf, i)
335#define OSE_BYTE_SWAP64_BUF_TO_INT(buf, i)\
336 OSE_BUF_TO_INT64_SWAP(buf, i)
340#define OSE_BYTE_SWAP32_INT_TO_BUF(buf, i)\
341 OSE_INT32_TO_BUF(buf, i)
342#define OSE_BYTE_SWAP64_INT_TO_BUF(buf, i)\
343 OSE_INT64_TO_BUF(buf, i)
345#define OSE_BYTE_SWAP32_BUF_TO_INT(buf, i)\
346 OSE_BUF_TO_INT32(buf, i)
347#define OSE_BYTE_SWAP64_BUF_TO_INT(buf, i)\
348 OSE_BUF_TO_INT64(buf, i)
354#define OSE_BYTE_SWAP32_INT_TO_BUF(buf, i) \
355 if(ose_ntohl(1) == 1) \
357 OSE_INT32_TO_BUF(buf, i); \
361 OSE_INT32_TO_BUF_SWAP(buf, i); \
363#define OSE_BYTE_SWAP64_INT_TO_BUF(buf, i) \
364 if(ose_ntohl(1) == 1) \
366 OSE_INT64_TO_BUF(buf, i); \
370 OSE_INT64_TO_BUF_SWAP(buf, i); \
373#define OSE_BYTE_SWAP32_BUF_TO_INT(buf, i) \
374 if(ose_ntohl(1) == 1) \
376 OSE_BUF_TO_INT32(buf, i); \
380 OSE_BUF_TO_INT32_SWAP(buf, i); \
382#define OSE_BYTE_SWAP64_BUF_TO_INT(buf, i) \
383 if(ose_ntohl(1) == 1) \
385 OSE_BUF_TO_INT64(buf, i); \
389 OSE_BUF_TO_INT64_SWAP(buf, i); \
398#ifdef OSE_WRAP_BUNDLE_PTR
403#define ose_constbundle ose_bundle
404ose_bundle ose_makeBundle(
const char *
const p);
405#define ose_makeConstBundle ose_makeBundle
406#define ose_getBundlePtr(bundle) (bundle).b
415#define ose_makeBundle(charptr) charptr
420#define ose_makeConstBundle(charptr) charptr
424#define ose_getBundlePtr(bundle) (bundle)
428#define ose_constbundle const char *
440#define OSE_INTPTR2 (sizeof(intptr_t) * 2)
453#if !defined(__cplusplus) && !defined(SWIG) \
454 && !(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L)
455#ifndef __bool_true_false_are_defined
471static const char OSETT_ID = OSETT_ID_;
472#define OSETTSTR_ID_ ","
473static const char *
const OSETTSTR_ID = OSETTSTR_ID_;
475#define OSETT_INT32_ 'i'
476static const char OSETT_INT32 = OSETT_INT32_;
477#define OSETTSTR_INT32_ "i"
478static const char *
const OSETTSTR_INT32 = OSETTSTR_INT32_;
480#define OSETT_FLOAT_ 'f'
481static const char OSETT_FLOAT = OSETT_FLOAT_;
482#define OSETTSTR_FLOAT_ "f"
483static const char *
const OSETTSTR_FLOAT = OSETTSTR_FLOAT_;
485#define OSETT_STRING_ 's'
486static const char OSETT_STRING = OSETT_STRING_;
487#define OSETTSTR_STRING_ "s"
488static const char *
const OSETTSTR_STRING = OSETTSTR_STRING_;
490#define OSETT_BLOB_ 'b'
491static const char OSETT_BLOB = OSETT_BLOB_;
492#define OSETTSTR_BLOB_ "b"
493static const char *
const OSETTSTR_BLOB = OSETTSTR_BLOB_;
501#define OSE_CONF_PROVIDE_TYPE_SYMBOL
502#define OSE_CONF_PROVIDE_TYPE_DOUBLE
503#define OSE_CONF_PROVIDE_TYPE_INT8
504#define OSE_CONF_PROVIDE_TYPE_UINT8
505#define OSE_CONF_PROVIDE_TYPE_INT16
506#define OSE_CONF_PROVIDE_TYPE_UINT16
507#define OSE_CONF_PROVIDE_TYPE_UINT32
508#define OSE_CONF_PROVIDE_TYPE_INT64
509#define OSE_CONF_PROVIDE_TYPE_UINT64
510#define OSE_CONF_PROVIDE_TYPE_TIMETAG
511#define OSE_CONF_PROVIDE_TYPE_TRUE
512#define OSE_CONF_PROVIDE_TYPE_FALSE
513#define OSE_CONF_PROVIDE_TYPE_NIL
514#define OSE_CONF_PROVIDE_TYPE_INFINITUM
522#ifdef OSE_CONF_PROVIDE_TYPE_SYMBOL
523#define OSE_PROVIDE_TYPE_SYMBOL
524#define OSETT_SYMBOL_ 'S'
525static const char OSETT_SYMBOL = OSETT_SYMBOL_;
526#define OSETTSTR_SYMBOL_ "S"
527static const char *
const OSETTSTR_SYMBOL = OSETTSTR_SYMBOL_;
529#ifdef OSE_CONF_PROVIDE_TYPE_DOUBLE
530#define OSE_PROVIDE_TYPE_DOUBLE
531#define OSETT_DOUBLE_ 'd'
532static const char OSETT_DOUBLE = OSETT_DOUBLE_;
533#define OSETTSTR_DOUBLE_ "d"
534static const char *
const OSETTSTR_DOUBLE = OSETTSTR_DOUBLE_;
536#ifdef OSE_CONF_PROVIDE_TYPE_INT8
537#define OSE_PROVIDE_TYPE_INT8
538#define OSETT_INT8_ 'c'
539static const char OSETT_INT8 = OSETT_INT8_;
540#define OSETTSTR_INT8_ "c"
541static const char *
const OSETTSTR_INT8 = OSETTSTR_INT8_;
543#ifdef OSE_CONF_PROVIDE_TYPE_UINT8
544#define OSE_PROVIDE_TYPE_UINT8
545#define OSETT_UINT8_ 'C'
546static const char OSETT_UINT8 = OSETT_UINT8_;
547#define OSETTSTR_UINT8_ "C"
548static const char *
const OSETTSTR_UINT8 = OSETTSTR_UINT8_;
550#ifdef OSE_CONF_PROVIDE_TYPE_INT16
551#define OSE_PROVIDE_TYPE_INT16
552#define OSETT_INT16_ 'u'
553static const char OSETT_INT16 = OSETT_INT16_;
554#define OSETTSTR_INT16_ "u"
555static const char *
const OSETTSTR_INT16 = OSETTSTR_INT16_;
557#ifdef OSE_CONF_PROVIDE_TYPE_UINT16
558#define OSE_PROVIDE_TYPE_UINT16
559#define OSETT_UINT16_ 'U'
560static const char OSETT_UINT16 = OSETT_UINT16_;
561#define OSETTSTR_UINT16_ "U"
562static const char *
const OSETTSTR_UINT16 = OSETTSTR_UINT16_;
564#ifdef OSE_CONF_PROVIDE_TYPE_UINT32
565#define OSE_PROVIDE_TYPE_UINT32
566#define OSETT_UINT32_ 'k'
567static const char OSETT_UINT32 = OSETT_UINT32_;
568#define OSETTSTR_UINT32_ "k"
569static const char *
const OSETTSTR_UINT32 = OSETTSTR_UINT32_;
571#ifdef OSE_CONF_PROVIDE_TYPE_INT64
572#define OSE_PROVIDE_TYPE_INT64
573#define OSETT_INT64_ 'h'
574static const char OSETT_INT64 = OSETT_INT64_;
575#define OSETTSTR_INT64_ "h"
576static const char *
const OSETTSTR_INT64 = OSETTSTR_INT64_;
578#ifdef OSE_CONF_PROVIDE_TYPE_UINT64
579#define OSE_PROVIDE_TYPE_UINT64
580#define OSETT_UINT64_ 'H'
581static const char OSETT_UINT64 = OSETT_UINT64_;
582#define OSETTSTR_UINT64_ "H"
583static const char *
const OSETTSTR_UINT64 = OSETTSTR_UINT64_;
585#ifdef OSE_CONF_PROVIDE_TYPE_TIMETAG
586#define OSE_PROVIDE_TYPE_TIMETAG
587#define OSETT_TIMETAG_ 't'
588static const char OSETT_TIMETAG = OSETT_TIMETAG_;
589#define OSETTSTR_TIMETAG_ "t"
590static const char *
const OSETTSTR_TIMETAG = OSETTSTR_TIMETAG_;
592#ifdef OSE_CONF_PROVIDE_TYPE_TRUE
593#define OSE_PROVIDE_TYPE_TRUE
594#define OSETT_TRUE_ 'T'
595static const char OSETT_TRUE = OSETT_TRUE_;
596#define OSETTSTR_TRUE_ "T"
597static const char *
const OSETTSTR_TRUE = OSETTSTR_TRUE_;
598static const char *
const ose_str_true =
"/,/T";
599static const int32_t ose_strlen_true = 4;
600static const int32_t ose_pstrlen_true = 8;
602#ifdef OSE_CONF_PROVIDE_TYPE_FALSE
603#define OSE_PROVIDE_TYPE_FALSE
604#define OSETT_FALSE_ 'F'
605static const char OSETT_FALSE = OSETT_FALSE_;
606#define OSETTSTR_FALSE_ "F"
607static const char *
const OSETTSTR_FALSE = OSETTSTR_FALSE_;
608static const char *
const ose_str_false =
"/,/F";
609static const int32_t ose_strlen_false = 4;
610static const int32_t ose_pstrlen_false = 8;
612#ifdef OSE_CONF_PROVIDE_TYPE_NIL
613#define OSE_PROVIDE_TYPE_NIL
614#define OSETT_NIL_ 'N'
615static const char OSETT_NIL = OSETT_NIL_;
616#define OSETTSTR_NIL_ "N"
617static const char *
const OSETTSTR_NIL = OSETTSTR_NIL_;
618static const char *
const ose_str_nil =
"/,/N";
619static const int32_t ose_strlen_nil = 4;
620static const int32_t ose_pstrlen_nil = 8;
622#ifdef OSE_CONF_PROVIDE_TYPE_INFINITUM
623#define OSE_PROVIDE_TYPE_INFINITUM
624#define OSETT_INFINITUM_ 'I'
625static const char OSETT_INFINITUM = OSETT_INFINITUM_;
626#define OSETTSTR_INFINITUM_ "I"
627static const char *
const OSETTSTR_INFINITUM = OSETTSTR_INFINITUM_;
628static const char *
const ose_str_infinitum =
"/,/I";
629static const int32_t ose_strlen_infinitum = 4;
630static const int32_t ose_pstrlen_infinitum = 8;
637#ifndef OSE_PROVIDE_TYPE_TRUE
638#define OSETT_TRUE_ 'T'
639static const char OSETT_TRUE = OSETT_TRUE_;
640#define OSETTSTR_TRUE_ "T"
641static const char *
const OSETTSTR_TRUE = OSETTSTR_TRUE_;
644#ifndef OSE_PROVIDE_TYPE_TRUE
645#define OSETT_FALSE_ 'F'
646static const char OSETT_FALSE = OSETT_FALSE_;
647#define OSETTSTR_FALSE_ "F"
648static const char *
const OSETTSTR_FALSE = OSETTSTR_FALSE_;
682#define OSETT_ALIGNEDPTR_ 'p'
683static const char OSETT_ALIGNEDPTR = OSETT_ALIGNEDPTR_;
684#define OSETTSTR_ALIGNEDPTR_ "p"
685static const char *
const OSETTSTR_ALIGNEDPTR = OSETTSTR_ALIGNEDPTR_;
707#define OSETT_WILDPTR_ 'P'
709#define OSETTSTR_WILDPTR_ "P"
710static const char *
const OSETTSTR_WILDPTR = OSETTSTR_WILDPTR_;
749#define OSETT_OPCODE_ '!'
751#define OSETTSTR_OPCODE_ "!"
752static const char *
const OSETTSTR_OPCODE = OSETTSTR_OPCODE_;
754#define OSETT_NOTYPETAG_ 0
755static const char OSETT_NOTYPETAG = OSETT_NOTYPETAG_;
756#define OSETTSTR_NOTYPETAG_ "0"
757static const char *
const OSETTSTR_NOTYPETAG = OSETTSTR_NOTYPETAG_;
759#define OSETT_BUNDLE_ '|'
760static const char OSETT_BUNDLE = OSETT_BUNDLE_;
761#define OSETTSTR_BUNDLE_ "|"
762static const char *
const OSETTSTR_BUNDLE = OSETTSTR_BUNDLE_;
764#define OSETT_MESSAGE_ '-'
765static const char OSETT_MESSAGE = OSETT_MESSAGE_;
766#define OSETTSTR_MESSAGE_ "-"
767static const char *
const OSETTSTR_MESSAGE = OSETTSTR_MESSAGE_;
775#define OSE_BUNDLE_ID_ "#bundle\0"
786#define OSE_SIZEWORD_LEN_ 4
788static const int32_t OSE_SIZEWORD_LEN = OSE_SIZEWORD_LEN_;
789static const int32_t OSE_ALIGN = OSE_ALIGN_;
790#define OSE_BUNDLE_ID_LEN_ 8
791#define OSE_TIMETAG_NULL_ "\0\0\0\0\0\0\0\0"
792#define OSE_TIMETAG_LEN_ 8
793static const char *
const OSE_BUNDLE_ID = OSE_BUNDLE_ID_;
794static const int32_t OSE_BUNDLE_ID_LEN = OSE_BUNDLE_ID_LEN_;
795static const char *
const OSE_TIMETAG_NULL = OSE_TIMETAG_NULL_;
796static const int32_t OSE_TIMETAG_LEN = OSE_TIMETAG_LEN_;
797static const char *
const OSE_BUNDLE_HEADER =
798 OSE_BUNDLE_ID_ OSE_TIMETAG_NULL_;
802#define OSE_BUNDLE_HEADER_LEN_ (OSE_BUNDLE_ID_LEN_ + OSE_TIMETAG_LEN_)
803static const int32_t OSE_BUNDLE_HEADER_LEN = OSE_BUNDLE_HEADER_LEN_;
805#define OSE_EMPTY_TYPETAG_STRING_ ",\0\0\0"
806static const char *
const OSE_EMPTY_TYPETAG_STRING =
807 OSE_EMPTY_TYPETAG_STRING_;
808static const int32_t OSE_EMPTY_TYPETAG_STRING_LEN = 1;
809static const int32_t OSE_EMPTY_TYPETAG_STRING_SIZE = 4;
812#ifdef OSE_CONF_ADDRESS_ANONVAL
813#define OSE_USER_ADDRESS_ANONVAL
815static const char *
const OSE_ADDRESS_ANONVAL =
816 OSE_CONF_ADDRESS_ANONVAL;
817static const int32_t OSE_ADDRESS_ANONVAL_LEN =
818 OSE_CONF_ADDRESS_ANONVAL_LEN;
819#define OSE_ADDRESS_ANONVAL_SIZE_ (OSE_CONF_ADDRESS_ANONVAL_SIZE)
820static const int32_t OSE_ADDRESS_ANONVAL_SIZE =
821 OSE_ADDRESS_ANONVAL_SIZE_;
822static const char *
const OSE_ADDRESS_ANONVAL_EMPTY_TYPETAG_STRING =
823 OSE_CONF_ADDRESS_ANONVAL OSE_EMPTY_TYPETAG_STRING_;
827#define OSE_ADDRESS_ANONVAL_ "\0\0\0\0"
828static const char *
const OSE_ADDRESS_ANONVAL = OSE_ADDRESS_ANONVAL_;
829static const int32_t OSE_ADDRESS_ANONVAL_LEN = 0;
830#define OSE_ADDRESS_ANONVAL_SIZE_ 4
831static const int32_t OSE_ADDRESS_ANONVAL_SIZE = OSE_ADDRESS_ANONVAL_SIZE_;
832static const char *
const OSE_ADDRESS_ANONVAL_EMPTY_TYPETAG_STRING =
833 OSE_ADDRESS_ANONVAL_ OSE_EMPTY_TYPETAG_STRING_;
836static const int32_t OSE_ADDRESS_MIN_LEN = 0;
837static const int32_t OSE_ADDRESS_MIN_PLEN = 4;
845typedef int32_t (*ose_getPayloadItemLengthFn)(ose_constbundle, char,
847typedef int32_t (*ose_getPayloadItemSizeFn)(ose_constbundle, char,
849typedef int32_t (*ose_pprintPayloadItemFn)(
ose_bundle, char,
851typedef int32_t (*ose_fromStringFn)(
ose_bundle, char,
854#define OSE_TYPE_ADDR_PREFIX "/"
856#define OSE_TYPE_ADDR_PPRINTPAYLOADITEM_SUFFIX "/PPPI"
857#define OSE_PPRINTPAYLOADITEM_ADDR_ \
858 OSE_TYPE_ADDR_PREFIX "%c" OSE_TYPE_ADDR_PPRINTPAYLOADITEM_SUFFIX
859static const char *
const OSE_PPRINTPAYLOADITEM_ADDR =
860 OSE_PPRINTPAYLOADITEM_ADDR_;
861static const int32_t OSE_PPRINTPAYLOADITEM_ADDR_LEN =
862 sizeof(OSE_PPRINTPAYLOADITEM_ADDR_);
863#ifndef OSE_PPRINTPAYLOADITEM_HOOK
864#define OSE_PPRINTPAYLOADITEM_HOOK ose_pprintPayloadItem_hook
866extern int32_t OSE_PPRINTPAYLOADITEM_HOOK (
ose_bundle bundle,
869 int32_t item_offset);
872#define OSE_TYPE_ADDR_GETPAYLOADITEMLENGTH_SUFFIX "/GPIL"
873#define OSE_GETPAYLOADITEMLENGTH_ADDR_ \
874 OSE_TYPE_ADDR_PREFIX "%c" OSE_TYPE_ADDR_GETPAYLOADITEMLENGTH_SUFFIX
875static const char *
const OSE_GETPAYLOADITEMLENGTH_ADDR =
876 OSE_GETPAYLOADITEMLENGTH_ADDR_;
877static const int32_t OSE_GETPAYLOADITEMLENGTH_ADDR_LEN =
878 sizeof(OSE_GETPAYLOADITEMLENGTH_ADDR_);
879#ifndef OSE_GETPAYLOADITEMLENGTH_HOOK
880#define OSE_GETPAYLOADITEMLENGTH_HOOK ose_getPayloadItemLength_hook
882extern int32_t OSE_GETPAYLOADITEMLENGTH_HOOK (ose_constbundle bundle,
885 int32_t item_offset);
888#define OSE_TYPE_ADDR_GETPAYLOADITEMSIZE_SUFFIX "/GPIS"
889#define OSE_GETPAYLOADITEMSIZE_ADDR_ \
890 OSE_TYPE_ADDR_PREFIX "%c" OSE_TYPE_ADDR_GETPAYLOADITEMSIZE_SUFFIX
891static const char *
const OSE_GETPAYLOADITEMSIZE_ADDR =
892 OSE_GETPAYLOADITEMSIZE_ADDR_;
893static const int32_t OSE_GETPAYLOADITEMSIZE_ADDR_LEN =
894 sizeof(OSE_GETPAYLOADITEMSIZE_ADDR_);
895#ifndef OSE_GETPAYLOADITEMSIZE_HOOK
896#define OSE_GETPAYLOADITEMSIZE_HOOK ose_getPayloadItemSize_hook
898extern int32_t OSE_GETPAYLOADITEMSIZE_HOOK (ose_constbundle bundle,
901 int32_t item_offset);
904#define OSE_TYPE_ADDR_FROMSTRING_SUFFIX "/FRST"
905#define OSE_FROMSTRING_ADDR_ \
906 OSE_TYPE_ADDR_PREFIX "%c" OSE_TYPE_ADDR_FROMSTRING_SUFFIX
907static const char *
const OSE_FROMSTRING_ADDR =
908 OSE_FROMSTRING_ADDR_;
909static const int32_t OSE_FROMSTRING_ADDR_LEN =
910 sizeof(OSE_FROMSTRING_ADDR_);
911#ifndef OSE_FROMSTRING_HOOK
912#define OSE_FROMSTRING_HOOK ose_fromString_hook
914extern int32_t OSE_FROMSTRING_HOOK (
ose_bundle bundle,
916 const char *
const str);
919#ifndef OSE_REGISTERTYPE_HOOK
920#define OSE_REGISTERTYPE_HOOK ose_registerType_hook
925 const char *
const getPayloadItemLength_addr,
926 ose_getPayloadItemLengthFn getPayloadItemLength,
927 const char *
const getPayloadItemSize_addr,
928 ose_getPayloadItemSizeFn getPayloadItemSize,
929 const char *
const pprintPayloadItem_addr,
930 ose_pprintPayloadItemFn pprintPayloadItem,
931 const char *
const evalType_addr,
933 const char *
const fromString_addr,
943const char *ose_version_string(
void);
944const char *ose_debug_string(
void);
945const char *ose_date_compiled_string(
void);
968#ifdef OSE_PROVIDE_TYPE_SYMBOL
971#ifdef OSE_PROVIDE_TYPE_DOUBLE
974#ifdef OSE_PROVIDE_TYPE_INT8
977#ifdef OSE_PROVIDE_TYPE_UINT8
980#ifdef OSE_PROVIDE_TYPE_INT16
983#ifdef OSE_PROVIDE_TYPE_UINT16
986#ifdef OSE_PROVIDE_TYPE_UINT32
989#ifdef OSE_PROVIDE_TYPE_INT64
992#ifdef OSE_PROVIDE_TYPE_UINT64
995#ifdef OSE_PROVIDE_TYPE_TIMETAG
998#ifdef OSE_PROVIDE_TYPE_TRUE
1001#ifdef OSE_PROVIDE_TYPE_FALSE
1004#ifdef OSE_PROVIDE_TYPE_NIL
1007#ifdef OSE_PROVIDE_TYPE_INFINITUM
#define OSETT_OPCODE_
An instruction, by number: an int32 index into the host's instruction table.
Definition ose.h:749
#define ose_memmove
Move bytes that may overlap: memmove, or on the ESP32 a faster way.
Definition ose.h:174
#define OSETT_WILDPTR_
A pointer by name: the name a 'p' was bound under, as text.
Definition ose.h:707
void(* ose_fn)(ose_bundle)
Function pointer for the basic OSE function that operates on a bundle.
Definition ose.h:435