17# ifndef PARSE_C_HEADER_TO_META
161#ifndef META_HAS_THREAD
162 #error "META_HAS_THREAD was NOT defined, require 1 or 0, forget to include 'theKernel/c/compiler.mk' ?"
211#define META_TIMEOUT_REF 900
218#define META_HDL_USE__NONNULL__GCC_ATTRIBUTE 0
227#if !defined(META_ATTRIBUTE_SANITIZE)
228# define META_ATTRIBUTE_SANITIZE __attribute__((no_sanitize("address")))
279#ifndef META_DOXYGEN_USE_C_PRIVAT
280# ifdef META_DOXYGEN_SHOULD_SKIP_THIS
281# define META_DOXYGEN_USE_C_PRIVAT 0
283# define META_DOXYGEN_USE_C_PRIVAT 1
294# undef MK_C_BUILD_DLL
295# define MK_C_BUILD_DLL
296# undef META_IGNORE_EXTERN
297# define META_IGNORE_EXTERN
310#ifndef META_TYPE_DEBUG
312# define META_TYPE_DEBUG 1
314# define META_TYPE_DEBUG 0
318#if META_TYPE_DEBUG == 2
319# define META_TYPE_DEBUG__printV(...) printV(__VA_ARGS__)
321# define META_TYPE_DEBUG__printV(...)
331#define META_USE_SELF_REFCOUNT
345#ifndef __has_parser__
354# define __parser__(...)
356# define __parser__define__(...)
360# define __parser__push__(...)
362# define __parser__pop__
374# define __parser__global__(...)
376# define __parser__global__define__(...)
380# define __parser__global__push__(...)
382# define __parser__global__pop__
415#define MK_PARSER_fmtobj MK_OBJN fmtobj __parser__(default=NULL)
429 # define __attribute__(dummy)
430 # define __func__ __FUNCTION__
431 # define MK_CLRCALL __clrcall
432 # define MK_STDCALL __stdcall
433 # define MK_CDECL __cdecl
436 # ifndef PARSE_C_HEADER_TO_META
437 # define mk_inline static inline
440 # define mk_unlink _unlink
441 # define mk_snprintf _snprintf
443 # define MK_ATTR_HOT ???
444 # define MK_ATTR_COLD ???
455 # ifndef PARSE_C_HEADER_TO_META
456 # define mk_inline static inline
458 # define mk_unlink unlink
459 # define mk_snprintf snprintf
461 # define MK_ATTR_HOT __attribute__((hot))
462 # define MK_ATTR_COLD __attribute__((cold))
467 # define MK_DECL MK_CLRCALL
468#elif defined(META_COMPILE_AS_CC)
469 # define MK_DECL MK_STDCALL
471 # define MK_DECL MK_CDECL
478#undef BEGIN_MK_C_DECLS
480#if defined(META_COMPILE_AS_CC)
481# define BEGIN_MK_C_DECLS namespace libmkkernel {
482# define END_MK_C_DECLS }
483#elif defined(__cplusplus)
484# define BEGIN_MK_C_DECLS extern "C" {
485# define END_MK_C_DECLS }
487# define BEGIN_MK_C_DECLS
488# define END_MK_C_DECLS
496#if defined(_MSC_VER) || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
497 #define likely(x) !!(x)
498 #define unlikely(x) !!(x)
500 #define likely(x) __builtin_expect((x),1)
501 #define unlikely(x) __builtin_expect((x),0)
504#ifndef PARSE_C_HEADER_TO_META
506 # include <inttypes.h>
518 # include <stdbool.h>
522#if defined(_WIN32) && !defined(__CYGWIN__)
523 # ifndef PARSE_C_HEADER_TO_META
524 # include <winsock2.h>
528 # define mk_timeval timeval
537 # define mk_timeval timeval
538 # define mk_timezone timezone
544#define MK_UNUSED __attribute__((unused))
548#define MK_UNREACHABLE __builtin_unreachable()
550#define MK_ARTIFICIAL __attribute__((__artificial__))
552#ifndef PARSE_C_HEADER_TO_META
614#define MK_NULL_YES true
617#define MK_NULL_NO false
623#define MK_NULL_STR "MK_NULL"
629#define MK_NULL_STR_LEN strlen(MK_NULL_STR)
639mk_inline bool MK_NULL_STR_CHECK(
char const * const __str, const
long int __len) {
645mk_inline bool MK_NULL_STR_CHECK_1(
char const * const __str) {
646 return ((__str) ? strcmp((__str),
MK_NULL_STR)==0 :
true);
651mk_inline bool MK_NULL_STR_OR_EMPTY_CHECK_1(
char const * const __str) {
652 return ((__str) ? (__str)[0] ==
'\0' || strcmp((__str),
MK_NULL_STR)==0 :
true);
808 # define MkThreadLocal __thread
809 # define MK_RT_SHIFT 1
810 # define MK_RT_ARGS_ONLY MK_RT mkrt
811 # define MK_RT_ARGS MK_RT_ARGS_ONLY,
812 # define MK_RT_CALL_ONLY mkrt
813 # define MK_RT_CALL MK_RT_CALL_ONLY,
814 # define MK_RT_CALL_O(o) MkRT_O(o),
815 # define MK_RT_CALL_X(x) MkRT_X(x),
816 # define MK_RT_CALL_NULL_ONLY MkRT
817 # define MK_RT_CALL_NULL MK_RT_CALL_NULL_ONLY,
818 # define MK_RT_NULL NULL,
819 # define MK_RT_PTR mkrt
820 # define MK_RT_REF (*mkrt)
821 # define MK_RT_REF_NULL (MkRuntimeRLS)
822 # define MK_RT_UNUSED MK_UNUSED
823 # define MK_RT_CALL_RT(ptr) ptr,
824 # define MK_PARSER_RT_ONLY MK_RT_ARGS_ONLY __parser__(internal,default=N#RUNTIME)
825 # define MK_PARSER_RT MK_PARSER_RT_ONLY,
830 # define MkThreadLocal
831 # define MK_RT_SHIFT 0
832 # define MK_RT_ARGS_ONLY void
834 # define MK_RT_CALL_ONLY
836 # define MK_RT_CALL_O(o)
837 # define MK_RT_CALL_X(x)
838 # define MK_RT_CALL_NULL_ONLY
839 # define MK_RT_CALL_NULL
841 # define MK_RT_PTR (&MkRuntimeRLS)
842 # define MK_RT_REF (MkRuntimeRLS)
843 # define MK_RT_REF_NULL (MkRuntimeRLS)
844 # define MK_RT_UNUSED
845 # define MK_RT_CALL_RT(ptr)
846 # define MK_PARSER_RT_ONLY void
847 # define MK_PARSER_RT
851# define MK_RT_ATTR_FORMAT_1 __attribute__((format (printf, 1+MK_RT_SHIFT, 2+MK_RT_SHIFT)));
852# define MK_RT_ATTR_FORMAT_2 __attribute__((format (printf, 2+MK_RT_SHIFT, 3+MK_RT_SHIFT)))
853# define MK_RT_ATTR_FORMAT_4 __attribute__((format (printf, 4+MK_RT_SHIFT, 5+MK_RT_SHIFT)))
857# define __MK_ATTR_RT_RUNTIME
859#if META_HDL_USE__NONNULL__GCC_ATTRIBUTE == 1
861 # define __MK_ATTR_RT_INSTANCE __attribute__((nonnull(1+MK_RT_SHIFT)))
862 # define __MK_ATTR_INSTANCE __attribute__((nonnull(1)))
863 # define MK_INSTANCE_HDL(x)
865 # define __MK_ATTR_RT_INSTANCE
866 # define __MK_ATTR_INSTANCE
867 # define MK_INSTANCE_HDL(x) assert(x!=NULL)
871#define MK_ATTR_INSTANCE __MK_ATTR_INSTANCE
872#define MK_ATTR_RT_INSTANCE __MK_ATTR_RT_RUNTIME __MK_ATTR_RT_INSTANCE
873#define MK_ATTR_STATIC __parser__(static)
874#define MK_ATTR_RT_STATIC __MK_ATTR_RT_RUNTIME __parser__(static)
877#define MK_INSTANCE_RT_X(x) MK_INSTANCE_HDL(x); MkRtSetup_XN_RT(x)
878#define MK_INSTANCE_RT_XN(x) MkRtSetup_X_RT(x)
879#define MK_INSTANCE_RT_O(o) MK_INSTANCE_HDL(o); MkRtSetup_ON_RT(o)
880#define MK_INSTANCE_RT_ON(o) MkRtSetup_O_RT(o)
881#define MK_DESTRUCTOR_RT_X(c,x) MK_INSTANCE_HDL(x); \
882 if (!MkCheckNN(c,x)) return; \
884#define MK_STATIC_RT MkRtSetup_NULL_RT
893#ifndef PARSE_C_HEADER_TO_META
973#if defined(_MSC_VER) && defined(_DLL)
980#ifdef META_IS_WINDOWS
981 # define META_DIR_SEPARATOR '\\'
982 # define META_EOL "\r\n"
984 # define META_DIR_SEPARATOR '/'
985 # define META_EOL "\n"
995#if defined(META_IGNORE_EXTERN)
999# if defined(DLL_EXPORT)
1001# if defined(MK_C_BUILD_DLL)
1002# define MK_EXTERN __declspec(dllexport)
1004# define MK_EXTERN __declspec(dllimport)
1008# define MK_EXTERN __attribute__ ((visibility("default")))
1016#undef MK_EXTERN_DATA
1017#if defined(META_PRIVATE)
1018# define MK_EXTERN_DATA extern
1019#elif defined(META_IGNORE_EXTERN)
1020# define MK_EXTERN_DATA extern
1023# if defined(DLL_EXPORT)
1025# if defined(MK_C_BUILD_DLL)
1026# define MK_EXTERN_DATA __declspec(dllexport)
1028# define MK_EXTERN_DATA __declspec(dllimport)
1032# define MK_EXTERN_DATA __attribute__ ((visibility("default"))) extern
1035# define MK_EXTERN_DATA extern
1041#define MK_CPPXSTR(s) MK_CPPSTR(s)
1043#define MK_CPPSTR(s) #s
1045#define MK_CONCAT(a,b) a ## b
1046#define MK_CONCAT2(a,b) MK_CONCAT(a,b)
1047#define MK_CONCAT3(a,b,c) a ## b ## c
1051 #define mk_append_fix_str(t,s) t=stpcpy(t,s)
1053 #define mk_append_fix_str(t,s) t=strcpy(t,s)+sizeof(s)-1
1057#define mk_bit_compare(t,f) (t&f)==f
1073struct MkBufferListS;
1084#define MK_ALFA_STR ((MkStringR){1,"@"})
1092__parser__(type=ME_NB1_MK_BOL:
"1 byte 'boolean' data-type")
1097__parser__(type=ME_NB0_MK_BOOL:"'
boolean' data-type":primary)
1099#define bool2str(_bool) (_bool?"true":"false")
1109__parser__(type=ME_NI1_MK_I8:
"1 byte 'byte' data-type")
1112__parser__(type=ME_NI2_MK_I16:"2
byte '
short integer' data-type":primary:int16_t)
1115__parser__(type=ME_NI4_MK_I32:"4
byte 'integer' data-type":primary:int32_t)
1118#if defined(_MSC_VER)
1122 __parser__(type=ME_NI8_MK_I64:
"8 byte 'wide integer' data-type":primary:int64_t)
1126__parser__(type=ME_NIL_MK_LONG:
"4/8 byte 'long' data-type":primary)
1137__parser__(type=ME_NU1_MK_U8:"1
byte '
unsigned byte' data-type":primary:uint8_t)
1139__parser__(type=ME_NU2_MK_U16:"2
byte '
unsigned short' data-type":primary:uint16_t)
1141__parser__(type=ME_NU4_MK_U32:"4
byte '
unsigned integer' data-type":primary:uint32_t)
1143__parser__(type=ME_NU8_MK_U64:"8
byte '
unsigned wide' data-type":primary:uint64_t)
1147__parser__(type=ME_NUL_MK_ULN:"8
byte '
unsigned long' data-type":primary)
1157__parser__(type=ME_NF4_MK_FLT:"4
byte '
float' data-type":primary)
1160__parser__(type=ME_NF8_MK_DBL:"8
byte '
double' data-type":primary)
1181__parser__(type=ME_NIH_MK_HDL:"handle data-type")
1184#define MK_HDL_REF_S3(__prefix) __prefix ## NI4
1185#define MK_HDL_REF_S1(__prefix) __prefix ## I32
1186#define MK_HDLT MK_I32T
1200__parser__(type=ME_NIL_MK_SIZE:
"long byte 'size' datay-type")
1204__parser__(type=ME_RUA_MkBufferAtomU:"atomic native data buffer type")
1211#define MK_FORMAT_N "%i"
1214__parser__(type=ME_NI4_MK_DBG:
"debug-level data-type")
1285__parser__(type=ME_NIL_MK_TIME_T:"time [sec] data-type")
1287#define MK_FORMAT_TIME "%li"
1288#define MK_TIME ((MK_TIME_T)time(NULL))
1289#define MK_TIME_MAX (365*24*60*60)
1300__parser__(type=ME_PVB_MK_PTRB:
"pointer type data-type")
1304__parser__(type=ME_PVX_MK_PTR:"generic pointer data-type":primary)
1307__parser__(type=ME_PVN_MK_PTRN:"const generic pointer data-type":primary)
1310__parser__(type=ME_PCX_MK_CCP:"class constructor/destructor data type")
1313__parser__(type=ME_PAX_MK_CBP:"generic pointer to call-back data")
1316__parser__(type=ME_CXC_MK_MNG:"managed
object pointer; datatype will be checked at runtime")
1319__parser__(type=ME_CXN_MK_MNGN:"const - a managed
object pointer; datatype will be checked at runtime")
1322__parser__(type=ME_PEX_MK_EXP:"target language exception-class-
object")
1325__parser__(type=ME_CXC_MkExceptionC:"target language library-exception-class-
object")
1336__parser__(type=ME_PLB_MK_LSTB:"list type data-type")
1340__parser__(type=ME_PLX_MK_LST:"list pointer data-type")
1351__parser__(type=ME_PBB_MK_BINB:"
byte-array type data-type")
1355__parser__(type=ME_PBX_MK_BIN:"
byte-array pointer data-type":primary)
1359__parser__(type=ME_PBN_MK_BINN:"const
byte-array pointer data-type":primary)
1370__parser__(type=ME_PSB_MK_STRB:"
string type data-type")
1374__parser__(type=ME_PSX_MK_STR:"
string pointer data-type":primary)
1378__parser__(type=ME_PSN_MK_STRN:"constant
string pointer data-type":primary)
1392__parser__(type=ME_PFX_MK_FST:
"constant 'printf' format string")
1401__parser__(type=ME_PVX_MK_NAT_OBJECT:"target language
object pointer")
1403__parser__(type=ME_PVX_MK_NAT_LIST:"target language list pointer")
1423 __parser__(type=ME_CCC_MkObjectC:"MkObjectC class handle":primary)
1426 __parser__(type=ME_CCN_MkObjectC:"const - MkObjectC class handle":primary)
1437 __parser__(type=ME_CCC_MkBufferC:"MkBufferC class handle":primary)
1440 __parser__(type=ME_CCN_MkBufferC:"const - MkBufferC class handle":primary)
1451 __parser__(type=ME_CCC_MkBufferStreamC:"MkBufferStreamC class handle":primary)
1454 __parser__(type=ME_CCN_MkBufferStreamC:"const - MkBufferStreamC class handle":primary)
1465 __parser__(type=ME_CCC_MkBufferListC:"MkBufferListC class handle":primary)
1468 __parser__(type=ME_CCN_MkBufferListC:"const - MkBufferListC class handle":primary)
1479 __parser__(type=ME_CCC_MkLogFileC:"MkLogFileC class handle":primary)
1482 __parser__(type=ME_CCN_MkLogFileC:"const - MkLogFileC class handle":primary)
1493 __parser__(type=ME_CCC_MkErrorC:"MqErrorC class handle":primary)
1496 __parser__(type=ME_CCN_MkErrorC:"const - MqErrorC class handle":primary)
1507 __parser__(internal,type=ME_CCC_MkExtensionC:"abstract class for the extension technology":internal)
1510 __parser__(internal,type=ME_CCN_MkExtensionC:"const - abstract class for the extension technology":internal)
1521 __parser__(internal,type=ME_CCC_MkErrExtC:"final class for the
MkErrorS extention technology":internal)
1524 __parser__(internal,type=ME_CCN_MkErrExtC:"const - final class for the
MkErrorS extention technology":internal)
1535 __parser__(internal,type=ME_CCC_MkRtExtC:"final class for the
MkRuntimeS extention technology":internal)
1538 __parser__(internal,type=ME_CCN_MkRtExtC:"const - final class for the
MkRuntimeS extention technology":internal)
1549 __parser__(type=ME_CCC_MkRuntimeC:"runtime singleton class
object":primary)
1552 __parser__(type=ME_CCN_MkRuntimeC:"const - runtime singleton class
object":primary)
1563 __parser__(internal,type=ME_CCC_MkTypeC:"a managed
object class type !base! pointer":internal)
1566 __parser__(internal,type=ME_CCN_MkTypeC:"const - a managed
object class type !base! pointer":internal)
1578__parser__(type=ME_CXC_MK_BAC:"a list of 'buffer' as last argument in function")
1583__parser__(type=ME_CXN_MK_BAC:"const - a list of 'buffer' as last argument in function")
1615 return bin.
data == NULL;
1697 if (len < 0) len = strR.
len;
1698 if (start > strR.
len) {
1700 }
else if ((start+len) > strR.
len) {
1710 assert(len_out != NULL);
1711 assert(str_out != NULL);
1712 *len_out = strR.
len; *str_out = strR.
ptr;
1779__parser__(doc-group=Enum,doc-index=_ignore_,
class=MkKernel,no-rpc,prefix=EnumFunc,
return-type-
default-no)
1784__parser__(doc-group=Enum,doc-index=_ignore_,class=MkKernel,no-rpc,prefix=EnumFunc,return-type-default-no)
1792__parser__(doc-group=Enum,doc-index=_ignore_,
class=MkKernel,no-rpc,prefix=EnumFunc)
1841__parser__(doc-group=Enum,doc-index=_ignore_,
class=MkKernel,no-rpc,prefix=EnumFunc,
return-type-
default-no)
1846__parser__(doc-group=Enum,doc-index=_ignore_,class=MkKernel,no-rpc,prefix=EnumFunc,return-type-default-no)
1854__parser__(doc-group=Enum,doc-index=_ignore_,
class=MkKernel,no-rpc,prefix=EnumFunc)
1875__parser__(internal,no-rpc,prefix=EnumFunc,
return-type-
default-no)
1880__parser__(internal,no-rpc,prefix=EnumFunc,return-type-default-no)
1916__parser__(internal,no-rpc,prefix=EnumFunc,
return-type-
default-no)
1921__parser__(internal,no-rpc,prefix=EnumFunc,return-type-default-no)
1941#define MK_TYPE_IS_1_I8E (1<<0)
1944#define MK_TYPE_IS_2_I8E (1<<1)
1947#define MK_TYPE_IS_4_I8E (1<<2)
1950#define MK_TYPE_IS_8_I8E (1<<3)
1953#define MK_TYPE_IS_NATIVE ( MK_TYPE_IS_1_I8E | MK_TYPE_IS_2_I8E | \
1954 MK_TYPE_IS_4_I8E | MK_TYPE_IS_8_I8E )
1957#define MK_TYPE_SHIFT 4
1985__parser__(doc-group=Enum,doc-index=_ignore_,
class=MkKernel,no-rpc,prefix=EnumFunc,
return-type-
default-no)
1990__parser__(doc-group=Enum,doc-index=_ignore_,class=MkKernel,no-rpc,prefix=EnumFunc,return-type-default-no)
1998__parser__(doc-group=Enum,doc-index=_ignore_,
class=MkKernel,no-rpc,prefix=EnumFunc)
2085#if defined(__cplusplus)
2088 MkBufferAtomU(MK_BOL val) : BOL(val) {};
2089 MkBufferAtomU(MK_I16 val) : I16(val) {};
2090 MkBufferAtomU(MK_I32 val) : I32(val) {};
2091 MkBufferAtomU(MK_I64 val) : I64(val) {};
2092 MkBufferAtomU(MK_FLT val) : FLT(val) {};
2093 MkBufferAtomU(MK_DBL val) : DBL(val) {};
2116#define MkType_O MK_BOL
2117#define MkType_Y MK_I8
2118#define MkType_S MK_I16
2119#define MkType_I MK_I32
2120#define MkType_W MK_I64
2121#define MkType_F MK_FLT
2122#define MkType_D MK_DBL
2123#define MkType_C MK_STRN
2124#define MkType_B MK_BIN
2125#define MkType_U MK_BUF
2126#define MkType_L MK_BFL
2174__parser__(doc-group=Enum,doc-index=_ignore_,
class=MkKernel,no-rpc,prefix=EnumFunc,
return-type-
default-no)
2179__parser__(doc-group=Enum,doc-index=_ignore_,class=MkKernel,no-rpc,prefix=EnumFunc,return-type-default-no)
2187__parser__(doc-group=Enum,doc-index=_ignore_,
class=MkKernel,no-rpc,prefix=EnumFunc)
2226 #define MkCacheItemS_signature 0x44196912
2244#define MkCacheS_name_size 32
2254#define MkCacheS_MkCacheItemS_size 8
2405typedef
MK_PTR (*MkSysCallocF) (
size_t,
size_t) __attribute__ ((alloc_size (1, 2)));
2410typedef
MK_PTR (*MkSysMallocF) (
size_t) __attribute__ ((alloc_size (1)));
2420typedef
MK_STR (*MkSysStrNCpyF) (
char*,const
char*,
size_t);
2425typedef
MK_STR (*MkSysStrNDupF) (
MK_STRN,
size_t) __attribute__ ((alloc_size (2)));
2441typedef pid_t (*MkSysForkF) (
void);
2446typedef enum
MkErrorE (*MkSysWaitF) (
2461typedef
void (*MkSysExitF) (
2502 unsigned int const usec
2514 unsigned int const sec
2546 ) __attribute__((noreturn));
2569__attribute__ ((alloc_size (2, 3)))
2582__attribute__ ((alloc_size (2)))
2633__attribute__ ((alloc_size (3)))
2688#define MkSysFree(pointer) \
2690 if ( likely((pointer) != (NULL)) ) { \
2691 (*MkLal.SysFree)((MK_PTR)pointer); \
2692 (pointer) = (NULL); \
2697#define MkSysFreeNonNull(pointer) (*MkLal.SysFree)((MK_PTR)pointer)
2794 useconds_t const usec
2842 bool const includeExtension
2895#define MkSysStringSetNULL_R(_str) _str[0] = '\0'
2899#define MkSysStringSet_R(_str,_val) strcpy(_str,_val)
2903#define MkSysStringIsNULL_R(_str) (_str[0] == '\0')
2912 return (str != NULL && *str !=
'\0');
2917#define MkSysStringIsEQUAL(_str,_other) (strcmp(_str,_other) == 0)
2921#define MkSysStringIsLenEQUAL(_str,_other,_len) (strncmp(_str,_other,(size_t)_len) == 0)
2930 return str == NULL ?
"" : str;
3165#define __MkCheckTO(t,o) (((*o).signature & (*t).objmask) == (*t).objsig)
3166#define _MkCheckTO(t,o) ((o) && __MkCheckTO((t),(o)))
3167#define __MkCheckO(cls,o) (((*o).signature & cls##_MASK) == cls##_SIGNATURE)
3168#define _MkCheckO(cls,o) ((o) && __MkCheckO(cls,(o)))
3169#define __MkCheckX(cls,x) __MkCheckO(cls,(cls##_X2obj(x)))
3170#define _MkCheckX(cls,x) ((x) && __MkCheckO(cls,(cls##_X2obj(x))))
3171#define __MkCheckM(cls,m) __MkCheckO(cls,((MK_OBJ)(m)))
3172#define _MkCheckM(cls,m) ((m) && __MkCheckM(cls,m))
3174#define MkCheckNN(cls,x) __MkCheckO(cls,(cls##_X2obj(x)))
3176#ifdef __SANITIZE_ADDRESS__
3178 #define MkSanitizeCheck(_root,_m) _MkCheckM(_root,_m)
3179 #define MkSanitizeCheckO(_root,_o) _MkCheckO(_root,_o)
3181 #define MkSanitizeCheck(_root,_m) _MkCheckM(_root,_m)
3182 #define MkSanitizeCheckO(_root,_o) _MkCheckO(_root,_o)
3187#define MkAssertO(cls,o) assert(o==NULL?true:__MkCheckO(cls,o))
3188#define MkAssertX(cls,x) assert(x==NULL?true:__MkCheckX(cls,o))
3192#define MkAssertCastM(cls,m) ({MK_OBJ o=(MK_OBJ)(m);MkAssertO(cls,o);(cls##_type)(o);})
3194#define toTT(_type) (MkTYP(_type))
3199#define MK_NULL_SIGNATURE 0
3250#if defined(META_USE_SELF_REFCOUNT)
3288 #define MkObjectC_SIGNATURE (0x59B3u<<16)
3289 #define MkObjectC_MASK (((1u<<16)-1)<<16)
3297 #define MkObjectC_X2obj(x) (x)
3310 #define MkObjectC_T (&MK_RT_REF._MkObjectC_T)
3312 #define MkObjectC_TT (MkTYP(MkObjectC_T))
3314 #define MkObjectST MkObjectC_T
3316 #define MkObjectSTT (MkTYP(MkObjectST))
3318 #define MkObjectC_type MK_OBJ
3320 #define MkObjectCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
3322 #define MkObjectCTT_X(instance) (MkOBJ_R(instance).type)
3324 #define MkObjectCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
3326 #define MkObjectC_NS MK
3328 #define MkObjectCTT MkObjectCTT
3330 #define MkObjectCT ( (struct MkSuperTypeS *) MkObjectCTT )
3338 #pragma GCC diagnostic push
3339 #pragma GCC diagnostic ignored "-Wattributes"
3357 #pragma GCC diagnostic pop
3358 #define MkObjectC_Check(mng) MkObjCheck(mng)
3368 META_ATTRIBUTE_SANITIZE
3376 META_ATTRIBUTE_SANITIZE
3383 #define MkObjRaise(_obj) if (!_MkCheckX(MkObjectC,_obj)) { \
3384 MkErrorSetC_1E("'MkObjectC' hdl is NULL"); \
3389 #define MkOBJ_R(x) (*(x)).super.obj
3391 #define MkOBJ(x) (&MkOBJ_R(x))
3409__parser__push__(doc-group=_ignore_,doc-index=Class,doc-name=Export,
class=MkObjectC,no-rpc);
3424#define MkObjectHandleGetOfType_1X(x) MkObjectHandleGetOfType(MkOBJ(x))
3459__parser__push__(doc-group=_ignore_,doc-index=Class,doc-name=Export,
class=MkObjectC);
3481#define MkObjectHandleGet_1X(x) MkObjectHandleGet(x?MkOBJ(x):NULL)
3505#define MkObjectHandleResolve_e(netHdl) ({ \
3506 MK_HDL tmpHdl=netHdl; \
3511 tmp=MkObjectHandleResolve(tmpHdl); \
3513 MkErrorSetC_1_NULL("ERROR: 'MkObjectC' handle is 'NULL'"); \
3542 __parser__(doc-group=_ignore_,doc-index=Class,doc-name=Misc,
class=MkObjectC,null-
return-allow)
3758 #define MkTypeS_name_size 32
3802 #define MkTypeC_SIGNATURE (MkObjectC_SIGNATURE ^ (10u<<10))
3803 #define MkTypeC_MASK (((1u<<22)-1)<<10)
3811 #define MkTypeC_X2typ(x) (x)
3812 #define MkTypeC_X2obj(x) MkOBJ(x)
3825 #define MkTypeSTT (&MK_RT_REF._MkTypeC_TT)
3827 #define MkTypeC_TT (&MK_RT_REF._MkTypeC_TT)
3829 #define MkTypeC_type MK_TYP
3831 #define MkTypeCT_X(instance) ( (struct MkTypeS *) (MkOBJ_R(instance).type) )
3833 #define MkTypeCTT_X(instance) (MkOBJ_R(instance).type)
3835 #define MkTypeCT_TT(typ) ( (struct MkTypeS *) (typ) )
3837 #define MkTypeC_NS MK
3839 #define MkTypeCTT MkTypeCTT
3841 #define MkTypeCT ( (struct MkTypeS *) MkTypeCTT )
3849 #pragma GCC diagnostic push
3850 #pragma GCC diagnostic ignored "-Wattributes"
3868 #pragma GCC diagnostic pop
3869 #define MkTypeC_Check(mng) MkTypCheck(mng)
3902#define MkTYP_R(x) (*(x)).super.typ
3904#define MkTYP(x) (&MkTYP_R(x))
3934 #define MkSuperTypeC_SIGNATURE (MkTypeC_SIGNATURE ^ (1u<<6))
3935 #define MkSuperTypeC_MASK (((1u<<26)-1)<<6)
3943 #define MkSuperTypeC_X2typ(x) MkTYP(x)
3944 #define MkSuperTypeC_X2obj(x) MkOBJ(x)
3957 #define MkSuperTypeSTT (&MK_RT_REF._MkSuperTypeC_TT)
3959 #define MkSuperTypeC_TT (&MK_RT_REF._MkSuperTypeC_TT)
3961 #define MkSuperTypeCT_X(instance) ( (struct MkTypeS *) (MkOBJ_R(instance).type) )
3963 #define MkSuperTypeCTT_X(instance) (MkOBJ_R(instance).type)
3965 #define MkSuperTypeCT_TT(typ) ( (struct MkTypeS *) (typ) )
3967 #define MkSuperTypeC_NS MK
3969 #define MkSuperTypeCTT MkSuperTypeCTT
3971 #define MkSuperTypeCT ( (struct MkTypeS *) MkSuperTypeCTT )
3999#define MkTypeSlotResolve(_tt,fptr,force) ({ \
4000 MK_TYP tt = (_tt) ; \
4001 tt == NULL ? NULL : \
4002 !force && tt->fptr == (MK_PTR) 0x1 ? NULL : \
4003 tt->fptr > (typeof(tt->fptr)) 0x1 ? tt->fptr : \
4004 tt == MkTypeSTT ? NULL : \
4005 (typeof(tt->fptr)) MkTypeSlotResolveP(MK_RT_CALL tt, offsetof(struct MkTypeS, fptr), force); \
4008#define MkTypeSlotCall(_tt,fptr,...) do { \
4009 typeof((_tt)->fptr) slot = MkTypeSlotResolve((_tt),fptr,false); \
4010 if (slot) (*slot)(MK_RT_CALL __VA_ARGS__); \
4037#if defined(META_USE_SELF_REFCOUNT)
4039 #define MkObjInit2(rtmkV,rtExtV,sigV,typeV,refCountV,isLocalV) \
4040 (struct MkObjectS) { \
4041 .signature = sigV, \
4042 .refCount = refCountV, \
4046 .selfCreated = false, \
4047 .selfRefCount = 0, \
4049 .objRtExt = rtExtV, \
4051 .isLocal = isLocalV, \
4058 #define MkObjInit2(rtmkV,rtExtV,sigV,typeV,refCountV,isLocalV) \
4059 (struct MkObjectS) { \
4060 .signature = sigV, \
4061 .refCount = refCountV, \
4065 .selfCreated = false, \
4067 .objRtExt = rtExtV, \
4069 .isLocal = isLocalV, \
4076#define MkObjInit(rtmkV,rtExtV,cls,refCountV,isLocalV) \
4077 MkObjInit2(rtmkV,rtExtV,cls##_SIGNATURE,cls##_TT,refCountV,isLocalV)
4080#define MkObjInitFromType(typeV,isLocalV) \
4081 MkObjInit2(MK_RT_PTR, NULL, (*typeV).objsig, typeV, 0, isLocalV)
4084#define MkObjInitFromInstance(instV) \
4085 MkObjInit2(MK_RT_PTR, NULL, MkOBJ_R(instV).type->objsig, MkOBJ_R(instV).type, 0, false)
4184#define MkObjectDelete_NULL(obj) MkObjectDeleteToNull(MkObjectDelete_RT,MK,obj)
4185#define MkObjectDelete_NULL_X(x) MkObjectDeleteToNull_X(MkObjectDelete_RT,MK,x)
4186#define MkObjectDelete_1X(x) MkObjectDeleteToNull_X(MkObjectDelete_RT,MK,x)
4188#define MkObjectDeleteToNull(fct,NS,x) if (x) { fct (NS##_RT_CALL x); (x) = NULL ; }
4189#define MkObjectDeleteToNull_X(fct,NS,x) if (x) { fct (NS##_RT_CALL MkOBJ(x)); (x) = NULL ; }
4212#define MkObjectDispose_NULL(obj) MkObjectDeleteToNull(MkObjectDispose_RT,MK,obj)
4213#define MkObjectDispose_NULL_X(x) MkObjectDeleteToNull_X(MkObjectDispose_RT,MK,x)
4214#define MkObjectDispose_1X(x) MkObjectDispose(MkOBJ(x))
4217#define MkObjectDeleteCallF_CHECK do { \
4218 assert (__data__ != NULL); \
4223#define MkObjectDeleteCallF_ARGS \
4225 MK_OBJN const obj __parser__(internal), \
4226 MK_STRN const typeName, \
4227 MK_HDL const typeHdl, \
4228 MK_HDL const objHdl, \
4229 MK_CBP const __data__ \
4231#define MkObjectDeleteCallF_CALL MK_RT_CALL obj, __data__
4281#define MkObjectDeleteFreeF_ARGS MK_RT_ARGS MK_CBP *dataP __parser__(inout)
4318__parser__(class=MkObjectC,callback-name=ObjectDelete,callback-null)
4322 MkObjectDeleteCallF fCall
__parser__(callback-call),
4324 MkObjectDeleteFreeF fFree
__parser__(callback-free),
4396#define MkRefLOCK 999999
4406#define MkRefIncr_1X(x) MkRefIncr(MkOBJ(x))
4407#define MkRefIncr_1M(m) MkRefIncr(MkObj(m))
4422#define MkRefIncr_FX(x) MkRefIncr(MkOBJ(x))
4441#define MkRefDecr_O(o) do { MkRefDecr_RT(MK_RT_CALL o); o=NULL; } while (0)
4445#define MkRefDecr_X(x) do { MkRefDecr_RT(MK_RT_CALL MkOBJ(x)); x=NULL; } while (0)
4447#define MkRefDecr_X_NULL(x) do { MkRefDecr_RT(MK_RT_NULL MkOBJ(x)); x=NULL; } while (0)
4452#define MkRefDecr_M(m) do { MkRefDecr_RT(MK_RT_CALL MkObj(m)); m=NULL; } while (0)
4454#define MkRefDecr_M_NULL(m) do { MkRefDecr_RT(MK_RT_NULL MkObj(m)); m=NULL; } while (0)
4457#define MkRefDecr_FX(x) do { --(MkOBJ_R(x).refCount); } while(0)
4474#define MkRefIncrSelf_2X(x,s) MkRefIncrSelf(MkOBJ(x),s)
4522 return (*obj).refCount;
4525#define MkRefGet_1X(x) MkRefGet(MkOBJ(x))
4534#define MkRefLock_1X(x) MkRefLock(MkOBJ(x))
4544#define MkRefIsLocked_1X(x) MkRefIsLocked(MkOBJ(x))
4547#define MkRefSet(target,source) ({ \
4548 if (target != source) { \
4549 typeof(target) targetSave=target; \
4551 MkRefDecr_X(targetSave);\
4552 MkRefIncr_1X(target);\
4560#define MkRefCidN_NULL() MkRefCidN_RT(MK_RT_CALL_NULL_ONLY)
4587#define MkSelfSet_3X(x,self,env) MkSelfSet(MkOBJ(x),self,env)
4595 return obj ? obj->
self : NULL;
4598#define MkSelfGet_1X(x) MkSelfGet(MkOBJ(x))
4631#define MkSelfNew_3X(x,self_out,env) MkSelfNew(MkOBJ(x),self_out,env)
4648#define MkSelfCreate_2X(x,env) MkSelfCreate(MkOBJ(x),env)
4664#define MkSelfDelete_1X(x) MkSelfDelete_RT(MK_RT_CALL MkOBJ(x))
4688#define MkSelfDeleteForce_1X(x) MkSelfDeleteForce(MkOBJ(x))
4712#define MkSelfUnlink_1X(x) MkSelfUnlink(MkOBJ(x))
4718 return obj->
self != NULL;
4721#define MkSelfExists_1X(x) MkSelExists(MkOBJ(x))
4833#define MkTypeCreate(clsV, basicV, identV) ({ \
4834 MK_TYP ret = MkTypeDup2(basicV ## _TT,identV); \
4835 ret->objsig = clsV ## _SIGNATURE; \
4836 ret->objmask = clsV ## _MASK; \
4837 ret->objsize = sizeof(clsV##R); \
4933#if META_TYPE_DEBUG == 0
4934 #define MkTypeLoop(_cls, _var) \
4935 for (_cls##_type _var = (_cls##_type)_cls##_TT->instances; _var != NULL; \
4936 _var = (_cls##_type)_cls##_X2obj(_var)->obj_protect.next)
4938 #define MkTypeLoop(_cls, _var) \
4939 bool _var##_firstB = true; \
4940 _cls##_type _var##_first = (_cls##_type)_cls##_TT->instances; \
4942 _cls##_type _var = _var##_first; \
4943 ({ if (!_var##_firstB && _var == _var##_first) { \
4944 MkPanicV_2M(_var,"[MkTypeLoop] INTERNAL ERROR: found 'circle' in 'MkTypeC=%s'", _var->type_name); \
4945 } ; _var##_firstB = false; _var; }); \
4946 _var = (_cls##_type)_cls##_X2obj(_var)->obj_protect.next \
4988#define MkObjectToName_1X(x) MkObjectToName(MkOBJ(x))
5010#define MkObjectToNameOfType_1X(x) MkObjectToNameOfType(MkOBJ(x))
5028#define MkObjectToNameOfClass_1X(x) MkObjectToNameOfClass_RT(MK_RT_CALL MkOBJ(x))
5045#define MkObjectToString_1X(x) MkObjectToString(x?MkOBJ(x):NULL)
5046#define MkObjectToString_1M(m) MkObjectToString(m?MkObjN(m):NULL)
5133#define MkLogC_4X(x,message,debug,callfunc) MkLogC(MkOBJ(x),message,debug,callfunc)
5134#define MkLogC_3X(x,message,debug) MkLogC_3(MkOBJ(x),message,debug)
5135#define MkLogC_2X(x,message) MkLogC_2(MkOBJ(x),message)
5136#define MkLogW(x,callfunc,_debug,message) MkLogC(MkOBJ(x),message,_debug,callfunc)
5156#define MkLogV_lvl(x,debug,printfmt,...) MkLogV(MkOBJ(x),__func__,debug,printfmt,__VA_ARGS__)
5158#define MkLogV_4M(x,callfunc,debug,printfmt,...) MkLogV(MkObjN(x),callfunc,debug,printfmt,__VA_ARGS__)
5159#define MkLogV_4X(x,callfunc,debug,printfmt,...) MkLogV(MkOBJ(x),callfunc,debug,printfmt,__VA_ARGS__)
5160#define MkLogV_3X(x,callfunc,printfmt,...) MkLogV_3(MkOBJ(x),callfunc,printfmt,__VA_ARGS__)
5161#define MkLogV_2X(x,printfmt,...) MkLogV_2(MkOBJ(x),printfmt,__VA_ARGS__)
5182#define MkLogVL_5X(fmtobj,callfunc,debug,printfmt,var_list) \
5183 MkLogVL(MkOBJ(fmtobj),callfunc,debug,printfmt,var_list)
5185#if defined(META_DISABLE_LOG)
5186 # define MkDCheck(_debug)
5187 # define MkDLogC(x,_debug,str)
5188 # define MkDLogV(x,_debug,printfmt,...)
5191 # define MkDDInit const MK_I32 __dbg = MK_RT_REF.debug
5192 # define MkDDInitNum(n) const MK_I32 __dbg = n
5197# define MkDCheck(_debug) if (unlikely(MK_RT_REF.debug >= _debug))
5198# define MkDDCheck(_debug) if (unlikely(__dbg >= _debug))
5206# define MkDLogC_O(fmtobj,_debug,str) \
5207 if (unlikely(MK_RT_REF.debug >= _debug)) MkLogC(fmtobj,str,_debug,__func__)
5209# define MkDLogC(x,_debug,str) MkDLogC_O(MkOBJ(x),_debug,str)
5211# define MkDDLogC(x,_debug,str) \
5212 if (unlikely(__dbg >= _debug)) MkLogC_4X(x,str,_debug,__func__)
5221# define MkDLogV_O(fmtobj,_debug,printfmt,...) \
5222 if (unlikely(MK_RT_REF.debug >= _debug)) MkLogV(fmtobj,__func__,_debug,printfmt,__VA_ARGS__)
5224# define MkDLogV(x,_debug,printfmt,...) MkDLogV_O(MkOBJ(x),_debug,printfmt,__VA_ARGS__)
5226# define MkDDLogV(fmtobj,_debug,printfmt,...) \
5227 if (unlikely(__dbg >= _debug)) MkLogV_4M(fmtobj,__func__,_debug,printfmt,__VA_ARGS__)
5245#define MkLogHEX_4X(fmtobj,callfunc,data,len) MkLogHEX_RT(MkOBJ(fmtobj),callfunc,data,len)
5267#define MkObjectLogSimple_1X(x) MkObjectLogSimple(MkOBJ(x),NULL,0,__func__,0)
5289#define MkObjectLogDetail_1X(x) MkObjectLogDetail(MkOBJ(x),NULL,0,__func__,0)
5290#define MkObjectLogDetail_1M(m) MkObjectLogDetail(MkObj(m),NULL,0,__func__,0)
5377#define MkObjectLog_1X(x) MkObjectLog(MkOBJ(x),NULL,0,__func__,0)
5413#define MkDbgL_2M(x,message) MkDbgL(MkObj(x),message,0,__func__,-1)
5418__parser__(no-type-extension,
template-overload)
5426#define MkDbgDump_2M(x,message) MkDbgDump_2(MkObj(x),message)
5446#define MkDbgSTACK_3X(x,num,callfunc) MkDbgSTACK_3(MkOBJ(x),num,callfunc)
5462#define MkDbgO_2X(x,callfunc) MkDbgO(MkObj(x),callfunc)
5463#define MkDbgO_1X(x) MkDbgO_2X(x,__func__)
5464#define MkDbgO_1O(x) MkDbgO(x,__func__)
5475#define MkDbgLogC_2X(x,callfunc) MkDbgLogC_2(MkOBJ(x),callfunc)
5512#define MkBufferS_ils_size (0)
5577 #define MkBufferC_SIGNATURE (MkObjectC_SIGNATURE ^ (1u<<10))
5578 #define MkBufferC_MASK (((1u<<22)-1)<<10)
5586 #define MkBufferC_X2buf(x) (x)
5587 #define MkBufferC_X2obj(x) MkOBJ(x)
5600 #define MkBufferC_T (&MK_RT_REF._MkBufferC_T)
5602 #define MkBufferC_TT (MkTYP(MkBufferC_T))
5604 #define MkBufferST MkBufferC_T
5606 #define MkBufferSTT (MkTYP(MkBufferST))
5608 #define MkBufferC_type MK_BUF
5610 #define MkBufferCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
5612 #define MkBufferCTT_X(instance) (MkOBJ_R(instance).type)
5614 #define MkBufferCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
5616 #define MkBufferC_NS MK
5618 #define MkBufferCTT MkBufferCTT
5620 #define MkBufferCT ( (struct MkSuperTypeS *) MkBufferCTT )
5628 #pragma GCC diagnostic push
5629 #pragma GCC diagnostic ignored "-Wattributes"
5647 #pragma GCC diagnostic pop
5648 #define MkBufferC_Check(mng) MkBufCheck(mng)
5658 META_ATTRIBUTE_SANITIZE
5666 META_ATTRIBUTE_SANITIZE
5673 #define MkBufRaise(_buf) if (!_MkCheckX(MkBufferC,_buf)) { \
5674 MkErrorSetC_1E("'MkBufferC' hdl is NULL"); \
5679 #define MkBUF_R(x) (*(x)).super.buf
5681 #define MkBUF(x) (&MkBUF_R(x))
5704__parser__push__(doc-group=_ignore_,doc-index=Class,doc-name=Export,
class=MkBufferC);
5756#define MkBufferHandleResolve_e(netHdl) ({ \
5757 MK_HDL tmpHdl=netHdl; \
5762 tmp=MkBufferHandleResolve(tmpHdl); \
5764 MkErrorSetC_1_NULL("ERROR: 'MkBufferC' handle is 'NULL'"); \
5779 __parser__(flags=
new,doc-group=_ignore_,doc-index=Class,doc-name=Misc,
class=MkBufferC,null-
return-allow)
5807#define MkBuffer64S_ils_size (64)
5838 #define MkBuffer64C_SIGNATURE (MkBufferC_SIGNATURE ^ (1u<<6))
5839 #define MkBuffer64C_MASK (((1u<<26)-1)<<6)
5847 #define MkBuffer64C_X2buf(x) MkBUF(x)
5848 #define MkBuffer64C_X2obj(x) MkOBJ(x)
5861 #define MkBuffer64C_T (&MK_RT_REF._MkBuffer64C_T)
5863 #define MkBuffer64C_TT (MkTYP(MkBuffer64C_T))
5865 #define MkBuffer64ST MkBuffer64C_T
5867 #define MkBuffer64STT (MkTYP(MkBuffer64ST))
5869 #define MkBuffer64CT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
5871 #define MkBuffer64CTT_X(instance) (MkOBJ_R(instance).type)
5873 #define MkBuffer64CT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
5875 #define MkBuffer64C_NS MK
5877 #define MkBuffer64CTT MkBuffer64CTT
5879 #define MkBuffer64CT ( (struct MkSuperTypeS *) MkBuffer64CTT )
5901#define MkBuffer256S_ils_size (256)
5932 #define MkBuffer256C_SIGNATURE (MkBufferC_SIGNATURE ^ (2u<<6))
5933 #define MkBuffer256C_MASK (((1u<<26)-1)<<6)
5941 #define MkBuffer256C_X2buf(x) MkBUF(x)
5942 #define MkBuffer256C_X2obj(x) MkOBJ(x)
5955 #define MkBuffer256C_T (&MK_RT_REF._MkBuffer256C_T)
5957 #define MkBuffer256C_TT (MkTYP(MkBuffer256C_T))
5959 #define MkBuffer256ST MkBuffer256C_T
5961 #define MkBuffer256STT (MkTYP(MkBuffer256ST))
5963 #define MkBuffer256CT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
5965 #define MkBuffer256CTT_X(instance) (MkOBJ_R(instance).type)
5967 #define MkBuffer256CT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
5969 #define MkBuffer256C_NS MK
5971 #define MkBuffer256CTT MkBuffer256CTT
5973 #define MkBuffer256CT ( (struct MkSuperTypeS *) MkBuffer256CTT )
5995#define MkBuffer1024S_ils_size (1024)
6026 #define MkBuffer1024C_SIGNATURE (MkBufferC_SIGNATURE ^ (3u<<6))
6027 #define MkBuffer1024C_MASK (((1u<<26)-1)<<6)
6035 #define MkBuffer1024C_X2buf(x) MkBUF(x)
6036 #define MkBuffer1024C_X2obj(x) MkOBJ(x)
6049 #define MkBuffer1024C_T (&MK_RT_REF._MkBuffer1024C_T)
6051 #define MkBuffer1024C_TT (MkTYP(MkBuffer1024C_T))
6053 #define MkBuffer1024ST MkBuffer1024C_T
6055 #define MkBuffer1024STT (MkTYP(MkBuffer1024ST))
6057 #define MkBuffer1024CT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
6059 #define MkBuffer1024CTT_X(instance) (MkOBJ_R(instance).type)
6061 #define MkBuffer1024CT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
6063 #define MkBuffer1024C_NS MK
6065 #define MkBuffer1024CTT MkBuffer1024CTT
6067 #define MkBuffer1024CT ( (struct MkSuperTypeS *) MkBuffer1024CTT )
6080#ifndef __has_parser__
6091#define MkBuf2XXXfast(buf) (*(buf)->storage.first.A)
6093#define MkBuf2BOLfast(buf) MkBuf2XXXfast(buf).BOL
6094#define MkBuf2I8fast(buf) MkBuf2XXXfast(buf).I8
6095#define MkBuf2I16fast(buf) MkBuf2XXXfast(buf).I16
6096#define MkBuf2I32fast(buf) MkBuf2XXXfast(buf).I32
6097#define MkBuf2I64fast(buf) MkBuf2XXXfast(buf).I64
6098#define MkBuf2FLTfast(buf) MkBuf2XXXfast(buf).FLT
6099#define MkBuf2DBLfast(buf) MkBuf2XXXfast(buf).DBL
6108#define MkBuf2XXX(xxx,len,buf) ({MK_##xxx __tmp; memcpy(&__tmp,buf->storage.first.B,len); __tmp;})
6110#define MkBuf2BOL(buf) MkBuf2XXX(BOL,1,buf)
6111#define MkBuf2I8(buf) MkBuf2XXX(I8,1,buf)
6112#define MkBuf2I16(buf) MkBuf2XXX(I16,2,buf)
6113#define MkBuf2I32(buf) MkBuf2XXX(I32,4,buf)
6114#define MkBuf2I64(buf) MkBuf2XXX(I64,8,buf)
6115#define MkBuf2FLT(buf) MkBuf2XXX(FLT,4,buf)
6116#define MkBuf2DBL(buf) MkBuf2XXX(DBL,8,buf)
6118#define MkBuf2Ptr(len,ptr,buf) memcpy((void*)ptr,buf->storage.first.B,len)
6119#define MkBuf2BOL_P(ptr,buf) MkBuf2Ptr(1,ptr,buf)
6120#define MkBuf2I8_P(ptr,buf) MkBuf2Ptr(1,ptr,buf)
6121#define MkBuf2I16_P(ptr,buf) MkBuf2Ptr(2,ptr,buf)
6122#define MkBuf2I32_P(ptr,buf) MkBuf2Ptr(4,ptr,buf)
6123#define MkBuf2I64_P(ptr,buf) MkBuf2Ptr(8,ptr,buf)
6124#define MkBuf2FLT_P(ptr,buf) MkBuf2Ptr(4,ptr,buf)
6125#define MkBuf2DBL_P(ptr,buf) MkBuf2Ptr(8,ptr,buf)
6127#define MkBuf2Ptr_A(l,a,b) memcpy(a.B##l,b->storage.first.B,l)
6128#define MkBuf2BOL_A(ato,buf) MkBuf2Ptr_A(1,ato,buf)
6129#define MkBuf2I8_A(ato,buf) MkBuf2Ptr_A(1,ato,buf)
6130#define MkBuf2I16_A(ato,buf) MkBuf2Ptr_A(2,ato,buf)
6131#define MkBuf2I32_A(ato,buf) MkBuf2Ptr_A(4,ato,buf)
6132#define MkBuf2I64_A(ato,buf) MkBuf2Ptr_A(8,ato,buf)
6133#define MkBuf2FLT_A(ato,buf) MkBuf2Ptr_A(4,ato,buf)
6134#define MkBuf2DBL_A(ato,buf) MkBuf2Ptr_A(8,ato,buf)
6165#define MkString2O(s,l,r) MkString2BOL_RT(MK_RT_CALL s,l,r)
6174#define MkString2Y(s,l,r) MkString2I8_RT(MK_RT_CALL s,l,r)
6183#define MkString2S(s,l,r) MkString2I16_RT(MK_RT_CALL s,l,r)
6192#define MkString2US(s,l,r) MkString2U16_RT(MK_RT_CALL s,l,r)
6201#define MkString2I(s,l,r) MkString2I32_RT(MK_RT_CALL s,l,r)
6210#define MkString2UI(s,l,r) MkString2U32_RT(MK_RT_CALL s,l,r)
6219#define MkString2W(s,l,r) MkString2I64_RT(MK_RT_CALL s,l,r)
6239#define MkString2F(s,l,r) MkString2FLT_RT(MK_RT_CALL s,l,r)
6248#define MkString2D(s,l,r) MkString2DBL_RT(MK_RT_CALL s,l,r)
6353#define MkBufferCreateTLS_T(cls,name,size) \
6354 static MkThreadLocal cls##R name##R = {0}; \
6355 MK_BUF name = MkBUF(&name##R); \
6356 if (unlikely(!__MkCheckX(cls,&name##R))) { \
6357 MkBufferInit(name,cls##_TT,size); \
6358 MkRefIncr_1X(name); \
6359 } else if (MkBUF_R(&name##R).var.cursize) { \
6360 MkBufferReset(name); \
6373#define MkBufferCreateTLS_inout_T(cls,name,inout) \
6374 static MkThreadLocal struct MkBufferS __hidden_##name##R = {0}; \
6375 MK_BUF name = *inout != NULL ? *inout : &__hidden_##name##R; \
6376 if (likely(!__MkCheckX(MkBufferC,name))) { \
6377 MkBufferInit(name,cls##_TT,0); \
6378 MkRefIncr_1X(name); \
6379 } else if (name->var.cursize) { \
6380 MkBufferReset(name); \
6400#define MkBufferCreateLOCAL_T(cls,name,size) \
6401 cls##R name##R = {0}; \
6402 struct MkBufferS * const name = MkBUF(&name##R); \
6403 MkBufferInit(name,cls##_TT,size)
6626 MK_I8 * const val_out
6691MK_EXTERN enum MkErrorE MK_DECL MkBufferGetLL_RT (
6694 MK_LLG * const val_out
6695) MK_ATTR_RT_INSTANCE;
6697#define MkBufferGetLLG(b,o) MkBufferGetLL(b,o)
7017#define MkBufferLogS_2V(buf,fmt) MkBufferLogS_3(buf,#fmt,MkOBJ(fmt))
7246__parser__(template-required,no-rpc,keep,no-static)
7299struct MkBufferStreamSaveS;
7302#define MkBufferStreamS_ils_size (0)
7389 #define MkBufferStreamC_SIGNATURE (MkBufferC_SIGNATURE ^ (4u<<6))
7390 #define MkBufferStreamC_MASK (((1u<<26)-1)<<6)
7398 #define MkBufferStreamC_X2bus(x) (x)
7399 #define MkBufferStreamC_X2buf(x) MkBUF(x)
7400 #define MkBufferStreamC_X2obj(x) MkOBJ(x)
7413 #define MkBufferStreamC_T (&MK_RT_REF._MkBufferStreamC_T)
7415 #define MkBufferStreamC_TT (MkTYP(MkBufferStreamC_T))
7417 #define MkBufferStreamST MkBufferStreamC_T
7419 #define MkBufferStreamSTT (MkTYP(MkBufferStreamST))
7421 #define MkBufferStreamC_type MK_BUS
7423 #define MkBufferStreamCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
7425 #define MkBufferStreamCTT_X(instance) (MkOBJ_R(instance).type)
7427 #define MkBufferStreamCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
7429 #define MkBufferStreamC_NS MK
7431 #define MkBufferStreamCTT MkBufferStreamCTT
7433 #define MkBufferStreamCT ( (struct MkSuperTypeS *) MkBufferStreamCTT )
7441 #pragma GCC diagnostic push
7442 #pragma GCC diagnostic ignored "-Wattributes"
7446 __parser__(
class=MkBufferStreamC,
static,hide)
7454 __parser__(
class=MkBufferStreamC,
static,hide)
7460 #pragma GCC diagnostic pop
7461 #define MkBufferStreamC_Check(mng) MkBusCheck(mng)
7470 __parser__(
class=MkBufferStreamC,hide,
static)
7471 META_ATTRIBUTE_SANITIZE
7478 __parser__(
class=MkBufferStreamC,hide,
static)
7479 META_ATTRIBUTE_SANITIZE
7486 #define MkBusRaise(_bus) if (!_MkCheckX(MkBufferStreamC,_bus)) { \
7487 MkErrorSetC_1E("'MkBufferStreamC' hdl is NULL"); \
7492 #define MkBUS_R(x) (*(x)).super.bus
7494 #define MkBUS(x) (&MkBUS_R(x))
7513__parser__push__(doc-group=_ignore_,doc-index=Class,doc-name=Export,
class=MkBufferStreamC);
7565#define MkBufferStreamHandleResolve_e(netHdl) ({ \
7566 MK_HDL tmpHdl=netHdl; \
7571 tmp=MkBufferStreamHandleResolve(tmpHdl); \
7573 MkErrorSetC_1_NULL("ERROR: 'MkBufferStreamC' handle is 'NULL'"); \
7588 __parser__(flags=
new,doc-group=_ignore_,doc-index=Class,doc-name=Misc,
class=MkBufferStreamC,null-
return-allow)
7610#define MkBufferStream64_ils_size (64)
7642 #define MkBufferStream64C_SIGNATURE (MkBufferStreamC_SIGNATURE ^ (3u<<3))
7643 #define MkBufferStream64C_MASK (((1u<<29)-1)<<3)
7651 #define MkBufferStream64C_X2bus(x) MkBUS(x)
7652 #define MkBufferStream64C_X2buf(x) MkBUF(x)
7653 #define MkBufferStream64C_X2obj(x) MkOBJ(x)
7666 #define MkBufferStream64C_T (&MK_RT_REF._MkBufferStream64C_T)
7668 #define MkBufferStream64C_TT (MkTYP(MkBufferStream64C_T))
7670 #define MkBufferStream64ST MkBufferStream64C_T
7672 #define MkBufferStream64STT (MkTYP(MkBufferStream64ST))
7674 #define MkBufferStream64CT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
7676 #define MkBufferStream64CTT_X(instance) (MkOBJ_R(instance).type)
7678 #define MkBufferStream64CT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
7680 #define MkBufferStream64C_NS MK
7682 #define MkBufferStream64CTT MkBufferStream64CTT
7684 #define MkBufferStream64CT ( (struct MkSuperTypeS *) MkBufferStream64CTT )
7705#define MkBufferStream256S_ils_size (256)
7737 #define MkBufferStream256C_SIGNATURE (MkBufferStreamC_SIGNATURE ^ (2u<<3))
7738 #define MkBufferStream256C_MASK (((1u<<29)-1)<<3)
7746 #define MkBufferStream256C_X2bus(x) MkBUS(x)
7747 #define MkBufferStream256C_X2buf(x) MkBUF(x)
7748 #define MkBufferStream256C_X2obj(x) MkOBJ(x)
7761 #define MkBufferStream256C_T (&MK_RT_REF._MkBufferStream256C_T)
7763 #define MkBufferStream256C_TT (MkTYP(MkBufferStream256C_T))
7765 #define MkBufferStream256ST MkBufferStream256C_T
7767 #define MkBufferStream256STT (MkTYP(MkBufferStream256ST))
7769 #define MkBufferStream256CT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
7771 #define MkBufferStream256CTT_X(instance) (MkOBJ_R(instance).type)
7773 #define MkBufferStream256CT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
7775 #define MkBufferStream256C_NS MK
7777 #define MkBufferStream256CTT MkBufferStream256CTT
7779 #define MkBufferStream256CT ( (struct MkSuperTypeS *) MkBufferStream256CTT )
7800#define MkBufferStream1024_ils_size (1024)
7832 #define MkBufferStream1024C_SIGNATURE (MkBufferStreamC_SIGNATURE ^ (4u<<3))
7833 #define MkBufferStream1024C_MASK (((1u<<29)-1)<<3)
7841 #define MkBufferStream1024C_X2bus(x) MkBUS(x)
7842 #define MkBufferStream1024C_X2buf(x) MkBUF(x)
7843 #define MkBufferStream1024C_X2obj(x) MkOBJ(x)
7856 #define MkBufferStream1024C_T (&MK_RT_REF._MkBufferStream1024C_T)
7858 #define MkBufferStream1024C_TT (MkTYP(MkBufferStream1024C_T))
7860 #define MkBufferStream1024ST MkBufferStream1024C_T
7862 #define MkBufferStream1024STT (MkTYP(MkBufferStream1024ST))
7864 #define MkBufferStream1024CT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
7866 #define MkBufferStream1024CTT_X(instance) (MkOBJ_R(instance).type)
7868 #define MkBufferStream1024CT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
7870 #define MkBufferStream1024C_NS MK
7872 #define MkBufferStream1024CTT MkBufferStream1024CTT
7874 #define MkBufferStream1024CT ( (struct MkSuperTypeS *) MkBufferStream1024CTT )
7895#define MkBufferStream16384S_ils_size (16384)
7927 #define MkBufferStream16384C_SIGNATURE (MkBufferStreamC_SIGNATURE ^ (1u<<3))
7928 #define MkBufferStream16384C_MASK (((1u<<29)-1)<<3)
7936 #define MkBufferStream16384C_X2bus(x) MkBUS(x)
7937 #define MkBufferStream16384C_X2buf(x) MkBUF(x)
7938 #define MkBufferStream16384C_X2obj(x) MkOBJ(x)
7951 #define MkBufferStream16384C_T (&MK_RT_REF._MkBufferStream16384C_T)
7953 #define MkBufferStream16384C_TT (MkTYP(MkBufferStream16384C_T))
7955 #define MkBufferStream16384ST MkBufferStream16384C_T
7957 #define MkBufferStream16384STT (MkTYP(MkBufferStream16384ST))
7959 #define MkBufferStream16384CT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
7961 #define MkBufferStream16384CTT_X(instance) (MkOBJ_R(instance).type)
7963 #define MkBufferStream16384CT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
7965 #define MkBufferStream16384C_NS MK
7967 #define MkBufferStream16384CTT MkBufferStream16384CTT
7969 #define MkBufferStream16384CT ( (struct MkSuperTypeS *) MkBufferStream16384CTT )
8014#define MkBufferStreamCreate_1(size) MkBufferStreamCreate(NULL,size)
8076#define MkBufferStreamCreateLOCAL_T(cls,name,size) \
8077 cls##R name##R = {0}; \
8078 struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
8079 MkBufferStreamInit(name,cls##_TT,size)
8092#define MkBufferStreamCreateSTATIC_T(cls,name) \
8093 static cls##R name##R = {0}; \
8094 struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
8095 if (__MkCheckX(cls,&name##R)) { \
8096 MkBufferStreamReset(name); \
8098 MkBufferStreamInit(name,cls##TT,0); \
8112#define MkBufferStreamCreateTLS_T(cls,name) \
8113 static MkThreadLocal cls##R name##R = {0}; \
8114 struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
8115 if (__MkCheckX(cls,&name##R)) { \
8116 MkBufferStreamReset(name); \
8118 MkBufferStreamInit(name,cls##_TT,0); \
8297#define MkBufferStreamLog_5F(bus,fmt,...) MkBufferStreamLog(bus,MkObj(fmt),__VA_ARGS__)
8298#define MkBufferStreamLog_2F(bus,fmt) MkBufferStreamLog_5F(bus,fmt,0,__func__,0)
8299#define MkBufferStreamLog_3F(bus,fmt,pfx) MkBufferStreamLog_5F(bus,fmt,0,pfx,0)
8671 MK_I8 * const val_out
8798#include "MkBufferListC_def_mk.h"
8854 #define MkLogFileC_SIGNATURE (MkObjectC_SIGNATURE ^ (3u<<10))
8855 #define MkLogFileC_MASK (((1u<<22)-1)<<10)
8863 #define MkLogFileC_X2lfl(x) (x)
8864 #define MkLogFileC_X2obj(x) MkOBJ(x)
8873 __parser__(ignore)
typedef struct MkLogFileS MkLogFileCR;
8875 __parser__(ignore)
typedef const struct MkLogFileS MkLogFileCNR;
8877 #define MkLogFileC_T (&MK_RT_REF._MkLogFileC_T)
8879 #define MkLogFileC_TT (MkTYP(MkLogFileC_T))
8881 #define MkLogFileST MkLogFileC_T
8883 #define MkLogFileSTT (MkTYP(MkLogFileST))
8885 #define MkLogFileC_type MK_LFL
8887 #define MkLogFileCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
8889 #define MkLogFileCTT_X(instance) (MkOBJ_R(instance).type)
8891 #define MkLogFileCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
8893 #define MkLogFileC_NS MK
8895 #define MkLogFileCTT MkLogFileCTT
8897 #define MkLogFileCT ( (struct MkSuperTypeS *) MkLogFileCTT )
8905 #pragma GCC diagnostic push
8906 #pragma GCC diagnostic ignored "-Wattributes"
8912 mk_inline bool MkLflCheck (MK_MNGN mng) {
8924 #pragma GCC diagnostic pop
8925 #define MkLogFileC_Check(mng) MkLflCheck(mng)
8935 META_ATTRIBUTE_SANITIZE
8943 META_ATTRIBUTE_SANITIZE
8950 #define MkLflRaise(_lfl) if (!_MkCheckX(MkLogFileC,_lfl)) { \
8951 MkErrorSetC_1E("'MkLogFileC' hdl is NULL"); \
8956 #define MkLFL_R(x) (*(x)).super.lfl
8958 #define MkLFL(x) (&MkLFL_R(x))
8977__parser__push__(doc-group=_ignore_,doc-index=Class,doc-name=Export,
class=MkLogFileC);
9013mk_inline MK_LFL MkLogFileHandleResolve_RT (
9029#define MkLogFileHandleResolve_e(netHdl) ({ \
9030 MK_HDL tmpHdl=netHdl; \
9035 tmp=MkLogFileHandleResolve(tmpHdl); \
9037 MkErrorSetC_1_NULL("ERROR: 'MkLogFileC' handle is 'NULL'"); \
9052 __parser__(flags=
new,doc-group=_ignore_,doc-index=Class,doc-name=Misc,
class=MkLogFileC,null-
return-allow)
9054 mk_inline MK_LFL MkLogFileGetNull (
void ) {
9089 MK_OBJ errfmt
__parser__(argument,
default=NULL),
9169MkLogFileGetFile_RT (
9225 #define MkExtensionC_SIGNATURE (MkObjectC_SIGNATURE ^ (8u<<10))
9226 #define MkExtensionC_MASK (((1u<<22)-1)<<10)
9234 #define MkExtensionC_X2ext(x) (x)
9235 #define MkExtensionC_X2obj(x) MkOBJ(x)
9244 __parser__(ignore)
typedef struct MkExtensionS MkExtensionCR;
9246 __parser__(ignore)
typedef const struct MkExtensionS MkExtensionCNR;
9248 #define MkExtensionC_T (&MK_RT_REF._MkExtensionC_T)
9250 #define MkExtensionC_TT (MkTYP(MkExtensionC_T))
9252 #define MkExtensionST MkExtensionC_T
9254 #define MkExtensionSTT (MkTYP(MkExtensionST))
9256 #define MkExtensionC_type MK_EXT
9258 #define MkExtensionCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
9260 #define MkExtensionCTT_X(instance) (MkOBJ_R(instance).type)
9262 #define MkExtensionCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
9264 #define MkExtensionC_NS MK
9266 #define MkExtensionCTT MkExtensionCTT
9268 #define MkExtensionCT ( (struct MkSuperTypeS *) MkExtensionCTT )
9276 #pragma GCC diagnostic push
9277 #pragma GCC diagnostic ignored "-Wattributes"
9283 mk_inline bool MkExtCheck (MK_MNGN mng) {
9295 #pragma GCC diagnostic pop
9296 #define MkExtensionC_Check(mng) MkExtCheck(mng)
9306 META_ATTRIBUTE_SANITIZE
9314 META_ATTRIBUTE_SANITIZE
9321 #define MkExtRaise(_ext) if (!_MkCheckX(MkExtensionC,_ext)) { \
9322 MkErrorSetC_1E("'MkExtensionC' hdl is NULL"); \
9327 #define MkEXT_R(x) (*(x)).super.ext
9329 #define MkEXT(x) (&MkEXT_R(x))
9342#define MkExtension_size 64
9446 #define MkErrorC_SIGNATURE (MkObjectC_SIGNATURE ^ (4u<<10))
9447 #define MkErrorC_MASK (((1u<<22)-1)<<10)
9455 #define MkErrorC_X2err(x) (x)
9456 #define MkErrorC_X2obj(x) MkOBJ(x)
9465 __parser__(ignore)
typedef struct MkErrorS MkErrorCR;
9467 __parser__(ignore)
typedef const struct MkErrorS MkErrorCNR;
9469 #define MkErrorC_T (&MK_RT_REF._MkErrorC_T)
9471 #define MkErrorC_TT (MkTYP(MkErrorC_T))
9473 #define MkErrorST MkErrorC_T
9475 #define MkErrorSTT (MkTYP(MkErrorST))
9477 #define MkErrorC_type MK_ERR
9479 #define MkErrorCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
9481 #define MkErrorCTT_X(instance) (MkOBJ_R(instance).type)
9483 #define MkErrorCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
9485 #define MkErrorC_NS MK
9487 #define MkErrorCTT MkErrorCTT
9489 #define MkErrorCT ( (struct MkSuperTypeS *) MkErrorCTT )
9497 #pragma GCC diagnostic push
9498 #pragma GCC diagnostic ignored "-Wattributes"
9504 mk_inline bool MkErrCheck (MK_MNGN mng) {
9516 #pragma GCC diagnostic pop
9526 META_ATTRIBUTE_SANITIZE
9534 META_ATTRIBUTE_SANITIZE
9537 return (MkErrCheck(mng) ? (MK_ERRN)mng : NULL);
9541 #define MkErrRaise(_err) if (!_MkCheckX(MkErrorC,_err)) { \
9542 MkErrorSetC_1E("'MkErrorC' hdl is NULL"); \
9547 #define MkERR_R(x) (*(x)).super.err
9549 #define MkERR(x) (&MkERR_R(x))
9571__parser__push__(doc-group=_ignore_,doc-index=Class,doc-name=Export,
class=MkErrorC);
9607mk_inline MK_ERR MkErrorHandleResolve_RT (
9623#define MkErrorHandleResolve_e(netHdl) ({ \
9624 MK_HDL tmpHdl=netHdl; \
9629 tmp=MkErrorHandleResolve(tmpHdl); \
9631 MkErrorSetC_1_NULL("ERROR: 'MkErrorC' handle is 'NULL'"); \
9646 __parser__(flags=
new,doc-group=_ignore_,doc-index=Class,doc-name=Misc,
class=MkErrorC,null-
return-allow)
9648 mk_inline MK_ERR MkErrorGetNull (
void ) {
9668#define MK_ERREXT_ARGS MK_RT_ARGS MK_ERR const mkerr, MK_ERREXT const errext
9669#define MK_ERREXT_CALL MK_RT_CALL err, errext
9671#define MK_ERREXT_ARGS_N MK_RT_ARGS MK_ERRN const mkerr, MK_ERREXT const errext
9672#define MK_ERREXT_CALL_N MK_RT_CALL err, errext
9686 MK_I32 const errnum, MK_STRN const fmt, va_list ap);
9763 #define MkErrExtC_SIGNATURE (MkExtensionC_SIGNATURE ^ (1u<<6))
9764 #define MkErrExtC_MASK (((1u<<26)-1)<<6)
9772 #define MkErrExtC_X2errext(x) (x)
9773 #define MkErrExtC_X2ext(x) MkEXT(x)
9774 #define MkErrExtC_X2obj(x) MkOBJ(x)
9783 __parser__(ignore)
typedef struct MkErrExtS MkErrExtCR;
9785 __parser__(ignore)
typedef const struct MkErrExtS MkErrExtCNR;
9787 #define MkErrExtC_T (&MK_RT_REF._MkErrExtC_T)
9789 #define MkErrExtC_TT (MkTYP(MkErrExtC_T))
9791 #define MkErrExtST MkErrExtC_T
9793 #define MkErrExtSTT (MkTYP(MkErrExtST))
9795 #define MkErrExtC_type MK_ERREXT
9797 #define MkErrExtCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
9799 #define MkErrExtCTT_X(instance) (MkOBJ_R(instance).type)
9801 #define MkErrExtCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
9803 #define MkErrExtC_NS MK
9805 #define MkErrExtCTT MkErrExtCTT
9807 #define MkErrExtCT ( (struct MkSuperTypeS *) MkErrExtCTT )
9815 #pragma GCC diagnostic push
9816 #pragma GCC diagnostic ignored "-Wattributes"
9822 mk_inline bool MkErrExtCheck (MK_MNGN mng) {
9834 #pragma GCC diagnostic pop
9835 #define MkErrExtC_Check(mng) MkErrExtCheck(mng)
9845 META_ATTRIBUTE_SANITIZE
9853 META_ATTRIBUTE_SANITIZE
9855 mk_inline MK_ERREXTN MkErrExtN(MK_MNGN mng) {
9860 #define MkErrExtRaise(_errext) if (!_MkCheckX(MkErrExtC,_errext)) { \
9861 MkErrorSetC_1E("'MkErrExtC' hdl is NULL"); \
9866 #define MkERREXT_R(x) (*(x)).super.errext
9868 #define MkERREXT(x) (&MkERREXT_R(x))
9878#define MkErrExtAdd(_mkerrR,add) do { \
9879 (_mkerrR).mkErrExt = (typeof((_mkerrR).mkErrExt)) MkExtensionAdd(MkEXT((_mkerrR).mkErrExt),MkEXT(add)); \
9881 MkERREXT_R(add).mkerrhead = &(_mkerrR); \
9884#define MkErrExtDel(_mkerrR,del) do { \
9886 (_mkerrR).mkErrExt = (typeof((_mkerrR).mkErrExt)) MkExtensionDel(MkEXT((_mkerrR).mkErrExt),MkEXT(del)); \
9887 MkERREXT_R(del).mkerrhead = NULL; \
9905struct MkErrorPanicS {
9909 struct MkObjectS obj;
9926 #define MkErrorPanicC_SIGNATURE (MkObjectC_SIGNATURE ^ (7u<<10))
9927 #define MkErrorPanicC_MASK (((1u<<22)-1)<<10)
9935 #define MkErrorPanicC_X2obj(x) MkOBJ(x)
9948 #define MkErrorPanicC_T (&MK_RT_REF._MkErrorPanicC_T)
9950 #define MkErrorPanicC_TT (MkTYP(MkErrorPanicC_T))
9952 #define MkErrorPanicST MkErrorPanicC_T
9954 #define MkErrorPanicSTT (MkTYP(MkErrorPanicST))
9956 #define MkErrorPanicCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
9958 #define MkErrorPanicCTT_X(instance) (MkOBJ_R(instance).type)
9960 #define MkErrorPanicCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
9962 #define MkErrorPanicC_NS MK
9964 #define MkErrorPanicCTT MkErrorPanicCTT
9966 #define MkErrorPanicCT ( (struct MkSuperTypeS *) MkErrorPanicCTT )
9991struct MkErrorIgnoreS {
9995 struct MkObjectS obj;
10012 #define MkErrorIgnoreC_SIGNATURE (MkObjectC_SIGNATURE ^ (5u<<10))
10013 #define MkErrorIgnoreC_MASK (((1u<<22)-1)<<10)
10021 #define MkErrorIgnoreC_X2obj(x) MkOBJ(x)
10034 #define MkErrorIgnoreC_T (&MK_RT_REF._MkErrorIgnoreC_T)
10036 #define MkErrorIgnoreC_TT (MkTYP(MkErrorIgnoreC_T))
10038 #define MkErrorIgnoreST MkErrorIgnoreC_T
10040 #define MkErrorIgnoreSTT (MkTYP(MkErrorIgnoreST))
10042 #define MkErrorIgnoreCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
10044 #define MkErrorIgnoreCTT_X(instance) (MkOBJ_R(instance).type)
10046 #define MkErrorIgnoreCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
10048 #define MkErrorIgnoreC_NS MK
10050 #define MkErrorIgnoreCTT MkErrorIgnoreCTT
10052 #define MkErrorIgnoreCT ( (struct MkSuperTypeS *) MkErrorIgnoreCTT )
10077struct MkErrorPrintS {
10081 struct MkObjectS obj;
10098 #define MkErrorPrintC_SIGNATURE (MkObjectC_SIGNATURE ^ (6u<<10))
10099 #define MkErrorPrintC_MASK (((1u<<22)-1)<<10)
10107 #define MkErrorPrintC_X2obj(x) MkOBJ(x)
10120 #define MkErrorPrintC_T (&MK_RT_REF._MkErrorPrintC_T)
10122 #define MkErrorPrintC_TT (MkTYP(MkErrorPrintC_T))
10124 #define MkErrorPrintST MkErrorPrintC_T
10126 #define MkErrorPrintSTT (MkTYP(MkErrorPrintST))
10128 #define MkErrorPrintCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
10130 #define MkErrorPrintCTT_X(instance) (MkOBJ_R(instance).type)
10132 #define MkErrorPrintCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
10134 #define MkErrorPrintC_NS MK
10136 #define MkErrorPrintCTT MkErrorPrintCTT
10138 #define MkErrorPrintCT ( (struct MkSuperTypeS *) MkErrorPrintCTT )
10167struct MkErrorDefaultS {
10171 struct MkObjectS obj;
10172 struct MkErrorS err;
10189 #define MkErrorDefaultC_SIGNATURE (MkErrorC_SIGNATURE ^ (1u<<6))
10190 #define MkErrorDefaultC_MASK (((1u<<26)-1)<<6)
10198 #define MkErrorDefaultC_X2err(x) MkERR(x)
10199 #define MkErrorDefaultC_X2obj(x) MkOBJ(x)
10208 __parser__(ignore)
typedef struct MkErrorDefaultS MkErrorDefaultCR;
10210 __parser__(ignore)
typedef const struct MkErrorDefaultS MkErrorDefaultCNR;
10212 #define MkErrorDefaultC_T (&MK_RT_REF._MkErrorDefaultC_T)
10214 #define MkErrorDefaultC_TT (MkTYP(MkErrorDefaultC_T))
10216 #define MkErrorDefaultST MkErrorDefaultC_T
10218 #define MkErrorDefaultSTT (MkTYP(MkErrorDefaultST))
10220 #define MkErrorDefaultCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
10222 #define MkErrorDefaultCTT_X(instance) (MkOBJ_R(instance).type)
10224 #define MkErrorDefaultCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
10226 #define MkErrorDefaultC_NS MK
10228 #define MkErrorDefaultCTT MkErrorDefaultCTT
10230 #define MkErrorDefaultCT ( (struct MkSuperTypeS *) MkErrorDefaultCTT )
10255#define MkERROR_R(r) ((*r).error_mk)
10256#define MkERROR MkERROR_R(&MK_RT_REF)
10257#define MkERROR_RT MkERROR_R(&MK_RT_REF)
10258#define MkERROR_O(o) MkERROR_R(MkRT_O(o))
10259#define MkERROR_X(x) MkERROR_R(MkRT_X(x))
10260#define MkERROR_XN(x) MkERROR_R(MkRT_XN(x))
10261#define MkERROR_NULL MkERROR_R(&MkRuntimeRLS)
10269#define MK_ERROR_DEFAULT_R(r) MkOBJ(&(*r).error_mk)
10270#define MK_ERROR_DEFAULT MK_ERROR_DEFAULT_R(&MK_RT_REF)
10271#define MK_ERROR_DEFAULT_X(x) MK_ERROR_DEFAULT_R(MkRT_X(x))
10272#define MK_ERROR_DEFAULT_NULL MK_ERROR_DEFAULT_R(&MkRuntimeRLS)
10289#define MK_ERROR_PANIC_R(r) MkOBJ(&(*r).error_panic)
10290#define MK_ERROR_PANIC MK_ERROR_PANIC_R(&MK_RT_REF)
10291#define MK_ERROR_PANIC_X(x) MK_ERROR_PANIC_R(MkRT_X(x))
10293#define MK_ERROR_PANIC_NULL MK_ERROR_PANIC_R(&MkRuntimeRLS)
10320#define MK_ERROR_IGNORE_R(r) MkOBJ(&(*r).error_ignore)
10321#define MK_ERROR_IGNORE MK_ERROR_IGNORE_R(&MK_RT_REF)
10322#define MK_ERROR_IGNORE_X(x) MK_ERROR_IGNORE_R(MkRT_X(x))
10323#define MK_ERROR_IGNORE_XN(x) MK_ERROR_IGNORE_R(MkRT_XN(x))
10325#define MK_ERROR_IGNORE_NULL MK_ERROR_IGNORE_R(&MkRuntimeRLS)
10360#define MK_ERROR_PRINT_R(r) MkOBJ(&(*r).error_print)
10361#define MK_ERROR_PRINT MK_ERROR_PRINT_R(&MK_RT_REF)
10362#define MK_ERROR_PRINT_X(x) MK_ERROR_PRINT_R(MkRT_X(x))
10364#define MK_ERROR_PRINT_NULL MK_ERROR_PRINT_R(&MkRuntimeRLS)
10388#define MK_ERROR_FORMAT_R(r) ((*r).error_mk.format_of_error ? (*r).error_mk.format_of_error : \
10389 MkObjN((*r).error_mk.source_of_error) ? MkObjN((*r).error_mk.source_of_error) : \
10390 MK_ERROR_DEFAULT_R(r))
10391#define MK_ERROR_FORMAT MK_ERROR_FORMAT_R(&MK_RT_REF)
10392#define MK_ERROR_FORMAT_X(x) MK_ERROR_FORMAT_R(MkRT_X(x))
10394#define MK_ERROR_FORMAT_NULL MK_ERROR_FORMAT_R(&MkRuntimeRLS)
10417#define MkErrorFORMAT_1M(m) MkErrorFORMAT(MkObjN(m))
10418#define MkErrorFORMAT_1X(x) MkErrorFORMAT(MkOBJ(x))
10419#define MkErrorFORMAT_1O(o) MkErrorFORMAT(o)
10488#define MkErrorGetCodeI(e) ((*e).code)
10490#define MkErrorGetCodeE_NULL() (MkERROR_NULL.code)
10492#define MkErrorGetCode_O(o) (MkERROR_O(o).code)
10501#define MkErrorGetTextI(e) (MkBUF_R(&(*e).text).storage.first.C)
10510#define MkErrorGetSizeI(e) ((MK_SIZE)MkBUF_R(&(*e).text).var.cursize)
10519#define MkErrorGetNumI(e) ((*e).num)
10548#define MkErrorSetCONTINUE_0E() MkErrorSetCONTINUE(&MkERROR)
10568 MK_STRN
const callfunc
__parser__(
default=F#FUNC)
10575 MK_STRN
const detail
__parser__(
default=S#
"UNKNOWN"),
10576 MK_STRN
const callfunc
__parser__(
default=F#FUNC)
10663#define MkErrorCheckI(err) ((err) >= MK_ERROR)
10667#define MkErrorCheckE_0E() (MkErrorCheckI(MkErrorGetCode_0E()))
10668#define MkErrorCheckE_NULL() (MkErrorCheckI(MkErrorGetCodeE_NULL()))
10669#define MkErrorCheckE_O(o) (MkErrorCheckI(MkErrorGetCode_O(o)))
10670#define MkErrorCheckE_X(x) MkErrorCheckE_O(MkOBJ(x))
10673#define MkErrorCheck(err) if (MkErrorCheckI(err)) goto error
10675#define MkErrorE_Check(err) if (MkErrorCheckI(err)) goto error
10677#define MkErrorCheck_0E() if (MkErrorCheckE_0E()) goto error
10679#define MkErrorBreak(err) if (MkErrorCheckI(err)) break
10681#define MkContinueCheck(err) switch (err) { \
10682case MK_OK: break; case MK_CONTINUE: goto cont; case MK_ERROR: goto error;\
10686#define MkErrorSwitch(PROC) switch (PROC) {\
10687case MK_OK: break; case MK_ERROR: goto error; case MK_CONTINUE: return MK_CONTINUE;\
10694#define MkErrorReturnAppend(PROC) \
10695if (MkErrorCheckI(PROC)) { \
10696 return MkErrorStack_0E (); \
10697} else if (MkErrorCheckE_0E()) { \
10698 return MkErrorReset_0E (); \
10700 return MkERROR.code; \
10704#define MkErrorReturn_2X(mngx,PROC) switch (PROC) {\
10705case MK_OK: return MK_OK; case MK_CONTINUE: return MK_CONTINUE; default: return MkErrorStack_1X (mngx);\
10708#define MkErrorReturn_1(PROC) switch (PROC) {\
10709case MK_OK: return MK_OK; case MK_CONTINUE: return MK_CONTINUE; default: return MkErrorStack_0E ();\
10712#define MkErrorReturn(PROC) MkErrorReturn_2X(META_CONTEXT_S,PROC)
10714#define check_MkErrorE(PROC) if (MkErrorCheckI(PROC))
10717#define MkErrorReturnLabel(mng) \
10720 return MkErrorStack_1M(mng);
10749 MK_OBJN
const errfmt
__parser__(
default=F#ERROR_FORMAT),
10750 MK_STRN
const callfunc
__parser__(
default=F#FUNC),
10752 MK_FST
const printfmt,
10756#define MkPanicVL_5M(errobj,callfunc,errnum,printfmt,var_list) \
10757 MkPanicVL(MkObj(errobj),callfunc,errnum,printfmt,var_list)
10771 MK_STRN
const callfunc
__parser__(
default=F#FUNC),
10773 MK_FST
const printfmt,
10777#define MkPanicV_4M(errobj,callfunc,errnum,printfmt,...) \
10778 MkPanicV(MkObj(errobj),callfunc,errnum,printfmt,__VA_ARGS__)
10780#define MkPanicV_2M(x,printfmt,...) \
10781 MkPanicV_2(MkObj(x),printfmt,__VA_ARGS__)
10795 MK_OBJN
const errfmt
__parser__(
default=F#ERROR_FORMAT),
10796 MK_STRN
const callfunc
__parser__(
default=F#FUNC),
10798 MK_STRN
const message
10801#define MkPanicC_4M(errobj,callfunc,errnum,message) \
10802 MkPanicC(MkObj(errobj),callfunc,errnum,message)
10804#define MkPanicC_2M(x,message) MkPanicC_2(MkObj(x),message)
10810#define MkPanicSYS(mngx) do { \
10811 MkLogC_2X(mngx,"internal ERROR, please contact your local support\n"); \
10812 MkDisasterSignal(-1); \
10823) __attribute__ ((noreturn));
10834 MK_FST const printfmt,
10952#define MkErrorSetC_1XS(message) MkErrorSetC_4M(META_CONTEXT_S,message,__func__,-1)
10953#define MkErrorSetC_2E_E(caller,message) MkErrorCheck(MkErrorSetC_2E(message,caller))
10955#define MkErrorSetC_4_NULL(...) MkErrorSetC_RT(MK_RT_NULL __VA_ARGS__)
10956#define MkErrorSetC_3_NULL(...) MkErrorSetC_4_NULL(&MkERROR_NULL,__VA_ARGS__)
10957#define MkErrorSetC_2_NULL(msg,pfx) MkErrorSetC_3_NULL(msg,pfx,-1)
10958#define MkErrorSetC_1_NULL(msg) MkErrorSetC_3_NULL(msg,__func__,-1)
10960#define MkErrorSetC_4M_NULL(m,...) MkErrorSetC_4_NULL(MkErrorFORMAT_1M(m),__VA_ARGS__)
10961#define MkErrorSetC_3M_NULL(m,msg,pfx) MkErrorSetC_4M_NULL(m,msg,pfx,-1)
10962#define MkErrorSetC_2M_NULL(m,msg) MkErrorSetC_4M_NULL(m,msg,__func__,-1)
11009#define MkErrorSetV_4EO_NULL(o,...) MkErrorSetV_NULL(MkErrorFORMAT_EO(o), __VA_ARGS__)
11010#define MkErrorSetV_4M_NULL(m,...) MkErrorSetV_NULL(MkErrorFORMAT_1M(m),__VA_ARGS__)
11011#define MkErrorSetV_2M_NULL(m,...) MkErrorSetV_4M_NULL(m,__func__,-1,__VA_ARGS__)
11012#define MkErrorSetV_2X(x,...) MkErrorSetV(MkErrorFORMAT_1X(x),__func__,-1,__VA_ARGS__)
11014#define MkErrorSetV_1_NULL(printfmt,...) \
11015 MkErrorSetV_NULL(&MkERROR_NULL,__func__,-1,printfmt,__VA_ARGS__)
11017#define MkErrorSetV_1XS(printfmt,...) \
11018 MkErrorSetV_4M(META_CONTEXT_S,__func__,-1,printfmt,__VA_ARGS__)
11020#define MkErrorSetV_2E_E(caller,printfmt,...) \
11021 MkErrorCheck(MkErrorSetV_2E(caller,printfmt,__VA_ARGS__))
11023#define MkErrorSet_ObjectIsNullError(m,printfmt,...) \
11024 MkErrorSetV_4M(m,"ObjectIsNullError",-1,printfmt,__VA_ARGS__)
11026#define MkErrorSysO(obj,cmd) \
11027 MkErrorSetV_4EO_NULL (obj, __func__, errno, \
11028 "can not '%s' -> ERR<%s>", MK_CPPXSTR(cmd), strerror (errno))
11053#define MkErrorPrintln_0() MkErrorPrintln_0E()
11068 MK_ERRN
const err ,
11071 MK_STRN
const callfunc
__parser__(
default=F#FUNC),
11075#define MkErrorLog_1EF_NULL(fmt) MkErrorLog(&MkERROR_NULL,MkObj(fmt),0,__func__,0)
11098 MK_EXP
const exception
__parser__(
default=NULL,has-reference),
11099 MK_STRN
const callfunc
__parser__(
default=F#FUNC)
11131 MK_EXP
const exception
__parser__(
default=NULL,has-reference),
11132 MK_STRN
const callfunc
__parser__(
default=F#FUNC)
11136#define MkObjectErrorCatch_3X(x,...) MkObjectErrorCatch(MkOBJ(x),__VA_ARGS__)
11165 bool const force
__parser__(
default=B#
false)
11168#define MkErrorReset_0M() MkErrorReset_4M(NULL,__func__,__LINE__,0);
11169#define MkErrorResetFORCE(m) MkErrorReset_4M(m,__func__,__LINE__,1);
11171#define MkErrorReset_4X(x,...) MkErrorReset(MkErrorFORMAT_1X(x),__VA_ARGS__)
11172#define MkErrorReset_1X(x) MkErrorReset_4X(x,__func__,__LINE__,0)
11187 MK_STRN callfile
__parser__(
default=F#FILE),
11188 MK_I32
const callline
__parser__(
default=F#LINE)
11204 MK_STRN
const callfunc
__parser__(
default=F#FUNC),
11205 MK_STRN
const callfile
__parser__(
default=F#FILE),
11206 MK_I32
const callline
__parser__(
default=F#LINE)
11209#define MkErrorStack_1M_Check(m) (MkErrorCheckE_0E() ? MkErrorStack_1M(m) : MkErrorGetCode_0E())
11210#define MkErrorStack_0E_Check() (MkErrorCheckE_0E() ? MkErrorStack_0E() : MkErrorGetCode_0E())
11212#define MkErrorStack_4X(x,...) MkErrorStack_RT(MK_RT_CALL MkErrorFORMAT_1X(x),__VA_ARGS__)
11213#define MkErrorStack_3X(...) MkErrorStack_4X(__VA_ARGS__,__LINE__)
11214#define MkErrorStack_2X(...) MkErrorStack_4X(__VA_ARGS__,__FILE__,__LINE__)
11215#define MkErrorStack_1X(...) MkErrorStack_4X(__VA_ARGS__,__func__,__FILE__,__LINE__)
11217#define MkErrorStack_0_NULL() MkErrorStack_NULL(&MkERROR_NULL,__func__,__FILE__,__LINE__)
11219#define MkErrorStack_4X_NULL(x,...) MkErrorStack_NULL(MkErrorFORMAT_1X(x),__VA_ARGS__)
11220#define MkErrorStack_3X_NULL(...) MkErrorStack_4X_NULL(__VA_ARGS__,__LINE__)
11221#define MkErrorStack_2X_NULL(...) MkErrorStack_4X_NULL(__VA_ARGS__,__FILE__,__LINE__)
11222#define MkErrorStack_1X_NULL(...) MkErrorStack_4X_NULL(__VA_ARGS__,__func__,__FILE__,__LINE__)
11224#define MkErrorStack_NUM 50
11225#define MkErrorStack_STR "50"
11279bool MkExceptionCheck (MK_EXP exception);
11287void MkExceptionRaise (
11288 MK_MNG const expobj,
11289 MK_STRN const callfunc,
11290 MK_I32 const callline
11344 #define MkRtExtC_SIGNATURE (MkExtensionC_SIGNATURE ^ (2u<<6))
11345 #define MkRtExtC_MASK (((1u<<26)-1)<<6)
11353 #define MkRtExtC_X2rtext(x) (x)
11354 #define MkRtExtC_X2ext(x) MkEXT(x)
11355 #define MkRtExtC_X2obj(x) MkOBJ(x)
11364 __parser__(ignore)
typedef struct MkRtExtS MkRtExtCR;
11366 __parser__(ignore)
typedef const struct MkRtExtS MkRtExtCNR;
11368 #define MkRtExtC_T (&MK_RT_REF._MkRtExtC_T)
11370 #define MkRtExtC_TT (MkTYP(MkRtExtC_T))
11372 #define MkRtExtST MkRtExtC_T
11374 #define MkRtExtSTT (MkTYP(MkRtExtST))
11376 #define MkRtExtC_type MK_RTEXT
11378 #define MkRtExtCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
11380 #define MkRtExtCTT_X(instance) (MkOBJ_R(instance).type)
11382 #define MkRtExtCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
11384 #define MkRtExtC_NS MK
11386 #define MkRtExtCTT MkRtExtCTT
11388 #define MkRtExtCT ( (struct MkSuperTypeS *) MkRtExtCTT )
11396 #pragma GCC diagnostic push
11397 #pragma GCC diagnostic ignored "-Wattributes"
11403 mk_inline bool MkRtExtCheck (MK_MNGN mng) {
11415 #pragma GCC diagnostic pop
11416 #define MkRtExtC_Check(mng) MkRtExtCheck(mng)
11426 META_ATTRIBUTE_SANITIZE
11434 META_ATTRIBUTE_SANITIZE
11436 mk_inline MK_RTEXTN MkRtExtN(MK_MNGN mng) {
11441 #define MkRtExtRaise(_rtext) if (!_MkCheckX(MkRtExtC,_rtext)) { \
11442 MkErrorSetC_1E("'MkRtExtC' hdl is NULL"); \
11447 #define MkRTEXT_R(x) (*(x)).super.rtext
11449 #define MkRTEXT(x) (&MkRTEXT_R(x))
11459#define MkRtExtAdd(_mkrtR,add,id) do { \
11460 (_mkrtR).mkRtExt = (typeof((_mkrtR).mkRtExt)) MkExtensionAdd(MkEXT((_mkrtR).mkRtExt),MkEXT(add)); \
11461 MkRTEXT_R(add).mkrtHead = &(_mkrtR); \
11462 (_mkrtR).mkRtExtAry[id] = MkRTEXT(add); \
11465#define MkRtExtDel(_mkrtR,del,id) do { \
11466 (_mkrtR).mkRtExt = (typeof((_mkrtR).mkRtExt)) MkExtensionDel(MkEXT((_mkrtR).mkRtExt),MkEXT(del)); \
11467 MkRTEXT_R(del).mkrtHead = NULL; \
11468 (_mkrtR).mkRtExtAry[id] = NULL; \
11538#pragma GCC diagnostic push
11539#pragma GCC diagnostic ignored "-Wlto-type-mismatch"
11541#if defined(MK_C_BUILD_DLL)
11543 #define META_SECTION_DEFINE
11544 #include "MkRuntimeS_mk.h"
11545 #undef META_SECTION_DEFINE
11571 struct MkObjectS obj;
11577 struct MkErrorS error_mk;
11580 struct MkErrorPanicS error_panic;
11583 struct MkErrorIgnoreS error_ignore;
11648 bool MkSelfIncrOnCacheB;
11687#pragma GCC diagnostic pop
11700 #define MkRuntimeC_SIGNATURE (MkObjectC_SIGNATURE ^ (9u<<10))
11701 #define MkRuntimeC_MASK (((1u<<22)-1)<<10)
11709 #define MkRuntimeC_X2rt(x) (x)
11710 #define MkRuntimeC_X2obj(x) MkOBJ(x)
11719 __parser__(ignore)
typedef struct MkRuntimeS MkRuntimeCR;
11721 __parser__(ignore)
typedef const struct MkRuntimeS MkRuntimeCNR;
11723 #define MkRuntimeC_T (&MK_RT_REF._MkRuntimeC_T)
11725 #define MkRuntimeC_TT (MkTYP(MkRuntimeC_T))
11727 #define MkRuntimeST MkRuntimeC_T
11729 #define MkRuntimeSTT (MkTYP(MkRuntimeST))
11731 #define MkRuntimeC_type MK_RT
11733 #define MkRuntimeCT_X(instance) ( (struct MkSuperTypeS *) (MkOBJ_R(instance).type) )
11735 #define MkRuntimeCTT_X(instance) (MkOBJ_R(instance).type)
11737 #define MkRuntimeCT_TT(typ) ( (struct MkSuperTypeS *) (typ) )
11739 #define MkRuntimeC_NS MK
11741 #define MkRuntimeCTT MkRuntimeCTT
11743 #define MkRuntimeCT ( (struct MkSuperTypeS *) MkRuntimeCTT )
11751 #pragma GCC diagnostic push
11752 #pragma GCC diagnostic ignored "-Wattributes"
11758 mk_inline bool MkRtCheck (MK_MNGN mng) {
11770 #pragma GCC diagnostic pop
11771 #define MkRuntimeC_Check(mng) MkRtCheck(mng)
11781 META_ATTRIBUTE_SANITIZE
11789 META_ATTRIBUTE_SANITIZE
11796 #define MkRtRaise(_rt) if (!_MkCheckX(MkRuntimeC,_rt)) { \
11797 MkErrorSetC_1E("'MkRuntimeC' hdl is NULL"); \
11821__parser__push__(doc-group=_ignore_,doc-index=Class,doc-name=Export,
class=MkRuntimeC);
11857mk_inline MK_RT MkRuntimeHandleResolve_RT (
11859 MK_HDL const netHdl
11873#define MkRuntimeHandleResolve_e(netHdl) ({ \
11874 MK_HDL tmpHdl=netHdl; \
11879 tmp=MkRuntimeHandleResolve(tmpHdl); \
11881 MkErrorSetC_1_NULL("ERROR: 'MkRuntimeC' handle is 'NULL'"); \
11896 __parser__(flags=
new,doc-group=_ignore_,doc-index=Class,doc-name=Misc,
class=MkRuntimeC,null-
return-allow)
11898 mk_inline MK_RT MkRuntimeGetNull (
void ) {
11922#define MkRT (&MkRuntimeRLS)
11923#define MkRT_R (MkRuntimeRLS)
11926 #define MkRT_O(o) ((o) && (*o).objRt ? (*o).objRt : MkRuntimeGet())
11927 #define MkRT_X(x) ((x) && MkOBJ_R(x).objRt ? MkOBJ_R(x).objRt : MkRuntimeGet())
11928 #define MkRT_ONN(o) ((*o).objRt)
11929 #define MkRT_ON(o) ( (*o).objRt ? (*o).objRt : MkRuntimeGet())
11930 #define MkRT_XN(x) ( MkOBJ_R(x).objRt ? MkOBJ_R(x).objRt : MkRuntimeGet())
11932 #define MkRT_O(o) MkRT
11933 #define MkRT_X(x) MkRT
11934 #define MkRT_ONN(o) MkRT
11935 #define MkRT_ON(o) MkRT
11936 #define MkRT_XN(x) MkRT
11940 #define MkRtSetup_O(o) MK_RT_UNUSED MK_RT const mkrt = MkRT_O(o)
11941 #define MkRtSetup_X(x) MK_RT_UNUSED MK_RT const mkrt = MkRT_X(x)
11942 #define MkRtSetup_XN(x) MK_RT_UNUSED MK_RT const mkrt = MkRT_XN(x)
11943 #define MkRtSetup_ON(o) MK_RT_UNUSED MK_RT const mkrt = MkRT_ON(o)
11944 #define MkRtSetup_NULL MK_RT_UNUSED MK_RT const mkrt = MkRuntimeGet()
11945 #define MkRtSetup_RT(r) MK_RT_UNUSED MK_RT const mkrt = r
11946 #define MkRtSetupFromRtExt(rtx) MK_RT_UNUSED MK_RT const mkrt = MkRTEXT_R(rtx).mkrtHead
11949 #define MkRtSetup_O_RT(o) if (mkrt == NULL) mkrt = MkRT_O(o)
11950 #define MkRtSetup_ON_RT(o) if (mkrt == NULL) mkrt = MkRT_ON(o)
11951 #define MkRtSetup_X_RT(x) if (mkrt == NULL) mkrt = MkRT_X(x)
11952 #define MkRtSetup_XN_RT(x) if (mkrt == NULL) mkrt = MkRT_XN(x)
11953 #define MkRtSetup_NULL_RT if (mkrt == NULL) mkrt = MkRuntimeGet()
11955 #define AllRtSetup_O(o) MkRtSetup_O(o)
11956 #define AllRtSetup_ON(o) MkRtSetup_ON(o)
11957 #define AllRtSetup_X(x) MkRtSetup_X(x)
11958 #define AllRtSetup_XN(x) MkRtSetup_XN(x)
11959 #define AllRtSetup_NULL MkRtSetup_NULL
11961 #define MkRtSetup_O(o)
11962 #define MkRtSetup_X(x)
11963 #define MkRtSetup_XN(x)
11964 #define MkRtSetup_ON(o)
11965 #define MkRtSetup_NULL
11966 #define MkRtSetup_RT(r)
11968 #define MkRtSetup_O_RT(o)
11969 #define MkRtSetup_X_RT(x)
11970 #define MkRtSetup_XN_RT(x)
11971 #define MkRtSetup_ON_RT(o)
11972 #define MkRtSetup_NULL_RT
11974 #define AllRtSetup_O(o)
11975 #define AllRtSetup_ON(o)
11976 #define AllRtSetup_X(x)
11977 #define AllRtSetup_XN(x)
11978 #define AllRtSetup_NULL
12039typedef struct MkRuntimeCallbackS {
12040 MkRuntimeInitF cb ;
12042 #define MkRuntimeCallbackS_ident_size 30
12047 size_t rtId_plus_1 ;
12050 struct MkRuntimeCallbackS *prev ;
12051 struct MkRuntimeCallbackS *next ;
12126 MkRuntimeInitF rt_callback,
12204mk_inline MK_I32 MkRuntimeGetDebug (
void ) {
12205 return MkRuntimeRLS.
debug;
12238mk_inline enum MkErrorE MkRuntimeGetErrorCode_RT (
12514 #define MK_EMBEDDED(type,call,...) ({ \
12515 type ret = (type) 0; \
12516 if (MkErrorCheckI(call (__VA_ARGS__,&ret))) goto error; \
12521#ifndef MK_EMBEDDED_REF
12523 #define MK_EMBEDDED_REF(type,call,...) ({ \
12525 if (MkErrorCheckI(call (__VA_ARGS__,&ret))) goto error; \
12647__parser__push__(doc-name=Introspection,doc-index=Class,
class=MkBufferListC,no-rpc,null-
return-allow,flags=
new);
12659mk_inline MK_BFL MkBufferListNext(MK_BFL
const bfl) {
12682__parser__push__(doc-name=Introspection,doc-index=Class,
class=MkBufferC,no-rpc,null-
return-allow,flags=
new);
12717__parser__push__(doc-name=Introspection,doc-index=Class,
class=MkBufferStreamC,no-rpc,null-
return-allow,flags=
new);
12752__parser__push__(doc-name=Introspection,doc-index=Class,
class=MkErrorC,no-rpc,null-
return-allow,flags=
new);
12787__parser__push__(doc-name=Introspection,doc-index=Class,
class=MkLogFileC,no-rpc,null-
return-allow,flags=
new);
12822__parser__push__(doc-name=Introspection,doc-index=Class,
class=MkObjectC,no-rpc,null-
return-allow);
12857__parser__push__(doc-name=Introspection,doc-index=Class,
class=MkRuntimeC,no-rpc,null-
return-allow,flags=
new);
12899 if ((*typ).objsig == typeSIG)
return (*typ).instances;
12952 assert(self_out != NULL);
12962 if (self != NULL) {
12964 MkErrorSetV_2M(obj,
"RefCount Error: object '%s' has 'self' but 'refCout <= 0", obj->type->type_name);
12973 if (self == NULL) {
12974 MkErrorSetV_2M(obj,
"Error: '%s->SelfCreate' return a NULL pointer", obj->type->type_name);
13005#define MkObjectToError_1X(obj) MkObjectToError(MkOBJ(obj))
#define MkCacheS_MkCacheItemS_size
#define MkCacheS_name_size
#define MkTypeS_name_size
#define MkRuntimeCallbackS_ident_size
#define MkBuffer1024S_ils_size
1024 bytes I)instance L)ocal S)torage - the memory that adds the final-class to the abstract-class.
#define MkBuffer256S_ils_size
256 bytes I)instance L)ocal S)torage - the memory that adds the final-class to the abstract-class.
#define MkBuffer64S_ils_size
64 bytes I)instance L)ocal S)torage - the memory that adds the final-class to the abstract-class.
enum MkErrorE MkString2U16_RT(MK_RT mkrt, MK_STRN const str, MK_NUM const length, MK_U16 *val_out)
enum MkErrorE MkString2LONG_RT(MK_RT mkrt, MK_STRN const str, MK_NUM const length, MK_LONG *val_out)
enum MkErrorE MkString2I64_RT(MK_RT mkrt, MK_STRN const str, MK_NUM const length, MK_I64 *val_out)
enum MkErrorE MkString2DBL_RT(MK_RT mkrt, MK_STRN const str, MK_NUM const length, MK_DBL *val_out)
#define MkBufferS_ils_size
64 bytes I)instance L)ocal S)torage - the memory that adds the final-class to the abstract-class.
enum MkErrorE MkString2BOOL_RT(MK_RT mkrt, MK_STRN const str, MK_NUM const length, MK_BOOL *val_out)
enum MkErrorE MkString2BOL_RT(MK_RT mkrt, MK_STRN const str, MK_NUM const length, MK_BOL *val_out)
convert a string into a native
enum MkErrorE MkString2I16_RT(MK_RT mkrt, MK_STRN const str, MK_NUM const length, MK_I16 *val_out)
enum MkErrorE MkString2I8_RT(MK_RT mkrt, MK_STRN const str, MK_NUM const length, MK_I8 *val_out)
enum MkErrorE MkString2I32_RT(MK_RT mkrt, MK_STRN const str, MK_NUM const length, MK_I32 *val_out)
enum MkErrorE MkString2FLT_RT(MK_RT mkrt, MK_STRN const str, MK_NUM const length, MK_FLT *val_out)
enum MkErrorE MkString2U32_RT(MK_RT mkrt, MK_STRN const str, MK_NUM const length, MK_U32 *val_out)
struct MkBufferS * MK_BUF
class-shortcut for struct MkBufferS *, all shortcut using the XX_YYY syntax (only for public API) …
static MK_BUF MkBufferGetNull(void)
Null-Slot - return a MkBufferC typed NULL instance …
static MK_HDL MkBufferHandleGet_RT(MK_RT mkrt, MK_BUF const buf)
Handle-Get-Slot - returns a export-hdl to the MkBufferC useable for external storage
static MK_BUF MkBufferPrev(MK_BUF const buf)
get previous instance from linked-list of MkBufferS type
static MK_BUF MkBufferNext(MK_BUF const buf)
get next instance from linked-list of MkBufferS type
static MK_BUF MkBuf(MK_MNG mng)
cast a unknown-object into an MkBufferS pointer or NULL if not possible
#define MkBufferC_X2obj(x)
static bool MkBufCheckO(MK_OBJN obj)
check MkBufferS -> libmkkernel::MkObjectS::signature …
static bool MkBufCheck(MK_MNGN mng)
check MkBufferS -> libmkkernel::MkObjectS::signature …
#define MkBufferC_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
void MkBufferLogS_RT(MK_RT mkrt, MK_BUFN const buf, MK_STRN const varname, MK_OBJN fmtobj, MK_STRN const callfunc)
log the short MkBufferC object data to the MkLogFileC (default: stderr) …
MK_I32 MkBufferCmp_RT(MK_RT mkrt, MK_BUFN const buf1, MK_BUFN const buf2)
compare TWO MkBufferC objects like strcmp do it for strings …
MK_STRN MkBufferToString_RT(MK_RT mkrt, MK_BUFN const inst)
String-Slot - returns the string representation of the inst …
enum MkErrorE MkBufferCastTo_RT(MK_RT mkrt, MK_BUF const buf, enum MkTypeE const typ)
change the type of an MkBufferC to type …
MK_BUF MkBufferSizeAdd_RT(MK_RT mkrt, MK_BUF const buf, MK_NUM const size)
add size storage to the buf …
void MkBufferResetFull_RT(MK_RT mkrt, MK_BUF const buf)
reset a MkBufferC to the length zero and free allocated storage…
MK_BUF MkBufferReset_RT(MK_RT mkrt, MK_BUF const buf)
reset a MkBufferC to the length zero …
MK_BUF MkBufferSizeNew_RT(MK_RT mkrt, MK_BUF const buf, MK_NUM const size)
alloc min size storage to the buf …
#define MkBufferCreateLOCAL_T(cls, name, size)
create an new MkBufferC object as L)ocal S)torage…
#define MkBufferCreateTLS_inout_T(cls, name, inout)
Constructs a MkBufferC instance as T)hread L)ocal S)torage OR reuse inout if possible…
#define MkBufferCreateTLS_T(cls, name, size)
create an new MkBufferC object as T)hread L)ocal S)torage…
static MK_BFL MkBufferListPrev(MK_BFL const bfl)
get previous instance from linked-list of MkBufferListS type
static MK_BFL MkBufferListInstances_RT(MK_RT mkrt)
get head-instance from linked-list of MkBufferListS type …
#define MkBufferListC_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
#define MkBufferListC_X2obj(x)
#define MkBufferStream1024_ils_size
1024 bytes I)instance L)ocal S)torage - the memory that adds the final-class to the abstract-class.
#define MkBufferStream16384S_ils_size
16384 bytes I)instance L)ocal S)torage - the memory that adds the final-class to the abstract-class.
#define MkBufferStream256S_ils_size
256 bytes I)instance L)ocal S)torage - the memory that adds the final-class to the abstract-class.
#define MkBufferStream64_ils_size
64 bytes I)instance L)ocal S)torage - the memory that adds the final-class to the abstract-class.
#define MkBufferStreamS_ils_size
64 bytes I)instance L)ocal S)torage - the memory that adds the final-class to the abstract-class.
static MK_HDL MkBufferStreamHandleGet_RT(MK_RT mkrt, MK_BUS const bus)
Handle-Get-Slot - returns a export-hdl to the MkBufferStreamC useable for external storage
static MK_BUS MkBufferStreamPrev(MK_BUS const bus)
get previous instance from linked-list of MkBufferStreamS type
struct MkBufferStreamS * MK_BUS
class-shortcut for struct MkBufferStreamS *, all shortcut using the XX_YYY syntax (only for public AP...
static MK_BUS MkBufferStreamNext(MK_BUS const bus)
get next instance from linked-list of MkBufferStreamS type
static MK_BUS MkBufferStreamGetNull(void)
Null-Slot - return a MkBufferStreamC typed NULL instance …
static MK_BUS MkBus(MK_MNG mng)
cast a unknown-object into an MkBufferStreamS pointer or NULL if not possible
#define MkBufferStreamC_X2obj(x)
static bool MkBusCheck(MK_MNGN mng)
check MkBufferStreamS -> libmkkernel::MkObjectS::signature …
#define MkBufferStreamC_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
static bool MkBusCheckO(MK_OBJN obj)
check MkBufferStreamS -> libmkkernel::MkObjectS::signature …
void MkBufferStreamPosToStart_RT(MK_RT mkrt, MK_BUS const bus)
set the current-access-position to the start of MkBufferStreamC …
#define MkBufferStreamCreateSTATIC_T(cls, name)
Constructs a MkBufferStreamC instance as S)tatic S)torage …
#define MkBufferStreamCreateTLS_T(cls, name)
Constructs a MkBufferStreamC instance as T)hread L)ocal S)torage …
#define MkBufferStreamCreateLOCAL_T(cls, name, size)
Constructs a MkBufferStreamC instance as L)ocal S)torage …
bool(* MkErrorSetVLF)(MK_ERREXT_ARGS, MK_OBJN const fmtobj, MK_STRN const)
void(* MkErrorPanikF)(MK_ERREXT_ARGS_N, MK_OBJN const errobj, MK_STRN const prefix, MK_I32 const errnum, MK_STRN const fmt, va_list ap)
MK_OBJN const errobj because of MK_ERROR_FORMAT value.
void(* MkErrorResetF)(MK_ERREXT_ARGS, MK_OBJN const fmtobj)
bool(* MkErrorAppendFLT)(MK_ERREXT_ARGS, MK_OBJN const fmtobj)
void(* MkErrorSetRF)(MK_ERREXT_ARGS, MK_MNGN const errctx, MK_OBJN const fmtobj)
MK_OBJN(* MkErrorFormatOfF)(MK_ERREXT_ARGS_N, int const dummy)
void(* MkErrorSetEF)(MK_ERREXT_ARGS, MK_ERREXT const newerr, MK_OBJN const fmtobj)
void(* MkErrorLogF)(MK_ERREXT_ARGS_N, MK_OBJN const, MK_DBG const, MK_STRN const, MK_I32 const, MK_STRN const, MK_OBJ const)
void(* MkErrorInit)(MK_ERREXT_ARGS, MK_OBJN const fmtobj)
bool(* MkErrorResetOnExitF)(MK_ERREXT_ARGS, MK_OBJN const fmtobj)
const struct MkErrExtS * MK_ERREXTN
class-shortcut for const struct MkErrExtS *, all const shortcut using the XX_YYYC syntax (only for pu...
static bool MkErrExtCheckO(MK_OBJN obj)
check MkErrExtS -> libmkkernel::MkObjectS::signature …
static bool MkErrExtCheck(MK_MNGN mng)
check MkErrExtS -> libmkkernel::MkObjectS::signature …
static MK_ERR MkErrorNext(MK_ERR const err)
get next instance from linked-list of MkErrorS type
struct MkErrorS * MK_ERR
class-shortcut for struct MkErrorS *, all shortcut using the XX_YYY syntax (only for public API) …
static MK_ERR MkErrorPrev(MK_ERR const err)
get previous instance from linked-list of MkErrorS type
#define MkErrorC_X2obj(x)
static bool MkErrCheckO(MK_OBJN obj)
check MkErrorS -> libmkkernel::MkObjectS::signature …
static MK_ERR MkErr(MK_MNG mng)
cast a unknown-object into an MkErrorS pointer or NULL if not possible
#define MkErrorC_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
static bool MkErrCheck(MK_MNGN mng)
check MkErrorS -> libmkkernel::MkObjectS::signature …
enum MkErrorE MkErrorGetCode(MK_ERRN const err)
get the value of MkErrorS::code …
#define MkErrorGetSizeI(e)
get the error-message-size from the exception-object …
#define MkErrorGetCodeI(e)
get the value of MkErrorS::code …
MK_STRN MkErrorGetText(MK_ERRN const err)
get the MkErrorS::text …
#define MkErrorGetTextI(e)
get the MkErrorS::text …
#define MkErrorGetNumI(e)
get the MkErrorS::num. The number can be used as exit-code …
MK_I32 MkErrorGetNum(MK_ERRN const err)
get the MkErrorS::num. The number can be used as exit-code …
enum MkErrorE MkErrorReset_RT(MK_RT mkrt, MK_ERR const err, MK_STRN const callfunc, MK_I32 const callline, bool const force)
This function clears the err and resets to libmkkernel::MK_OK …
enum MkErrorE MkErrorSetV_RT(MK_RT mkrt, MK_ERR err, MK_STRN const callfunc, MK_I32 const errnum, MK_FST const printfmt,...)
set the MkErrorS object using a format string argument list and raise an error …
enum MkErrorE MkErrorSetE_RT(MK_RT mkrt, MK_ERR const err, MK_ERR const newerr)
set the MkErrorC from a MkErrorC copy and raise an error …
enum MkErrorE MkErrorSetVL_RT(MK_RT mkrt, MK_ERR err, MK_STRN const callfunc, MK_I32 const errnum, MK_FST const printfmt, va_list var_list)
'set' and 'raise' the MkErrorC using a vararg-list message …
#define MkErrorSetV_2M(err, printfmt,...)
void MkPanicC_RT(MK_RT mkrt, MK_OBJN const errfmt, MK_STRN const callfunc, MK_I32 const errnum, MK_STRN const message)
do a panic with string as argument …
enum MkErrorE MkErrorSetC_RT(MK_RT mkrt, MK_ERR err, MK_STRN const message, MK_STRN const callfunc, MK_I32 const errnum)
'set' and 'raise' the MkErrorC using a string-message and a errnum-number …
bool MkErrorIsSOCKET(MK_ERRN const err)
check on SOCKET-DOWN error …
void MkErrorSetCode_RT(MK_RT mkrt, MK_ERR const err, enum MkErrorE code)
set the MkErrorS::code value …
bool MkErrorIsABORT(MK_ERRN const err)
check on ABORT signal …
static MK_ERR MkErrorPRINT_RT(MK_RT mkrt)
ignore-system-error - print the next error into MkLogFileC …
#define MkErrorFORMAT_1O(o)
static MK_ERR MkErrorPANIC_RT(MK_RT mkrt)
panic-system-error - panic on next error …
static MK_ERR MkErrorDEFAULT_RT(MK_RT mkrt)
default-system-error - default-error …
const struct MkErrorIgnoreS MkErrorIgnoreCNR
const instance-struct-reference same as const struct MkErrorIgnoreS, useable in a class-macro as: cla...
struct MkErrorIgnoreS MkErrorIgnoreCR
instance-struct-reference same as struct MkErrorIgnoreS, useable in a class-macro as: class##R …
const struct MkErrorPanicS MkErrorPanicCNR
const instance-struct-reference same as const struct MkErrorPanicS, useable in a class-macro as: clas...
struct MkErrorPanicS MkErrorPanicCR
instance-struct-reference same as struct MkErrorPanicS, useable in a class-macro as: class##R …
const struct MkErrorPrintS MkErrorPrintCNR
const instance-struct-reference same as const struct MkErrorPrintS, useable in a class-macro as: clas...
struct MkErrorPrintS MkErrorPrintCR
instance-struct-reference same as struct MkErrorPrintS, useable in a class-macro as: class##R …
#define MkExtension_size
maximum number of runtime-extensions useable in a theKernel software.
const struct MkExtensionS * MK_EXTN
class-shortcut for const struct MkExtensionS *, all const shortcut using the XX_YYYC syntax (only for...
static bool MkExtCheck(MK_MNGN mng)
check MkExtensionS -> libmkkernel::MkObjectS::signature …
static bool MkExtCheckO(MK_OBJN obj)
check MkExtensionS -> libmkkernel::MkObjectS::signature …
static MkBinaryR MkBinaryCreate(MK_SIZE size, MK_BINN data)
create a binary from data and size ...
static const MkBinaryR MkBinaryCreateSlice(const MkBinaryR bin, MK_SIZE start, MK_SIZE wide)
create a binary slice ...
static bool MkBinaryIsNull(const MkBinaryR bin)
check if binary is NULL ...
static MkBinaryR MkBinaryDup_RT(MK_RT mkrt, const MkBinaryR bin)
create a binary as duplicate from an already existsing MkBinaryR ...
static MK_SIZE MkBinaryGetSize(const MkBinaryR bin)
get size from the binary ...
static MK_BINN MkBinaryGetData(const MkBinaryR bin)
get data pointer from the binary ...
MK_PTR(* MkCacheCF)(MK_RT mkrt, MK_PTR const)
void(* MkCacheDF)(MK_RT mkrt, MK_PTR *const)
#define MK_NULL_STR
the string "MK_NULL" value as MK_NULL_STR …
#define MK_PARSER_fmtobj
use param_fmtobj for documentation
#define MK_NO_RETURN
dosable "MK_NO_RETURN" because C# require "return" from "MqExit" for thread-pool support
#define MK_EXTERN
static library
#define MK_UNUSED
mark unnused variables and functions
#define MK_NULL
The Programming-Language-Micro-Kernel (PLMK) NULL value as MK_NULL in C++ …
void * MK_MACRO_TYP
helper-type used to declare a prototype for a macro
#define MK_NULL_STR_LEN
the integer strlen("MK_NULL") value as MK_NULL_STR_LEN …
#define MK_TYPE_IS_1_I8E
the type is native and has a size of 1 byte …
MkTypeE
basic data-types supported by Programming-Language-Micro-Kernel (PLMK) …
MkTimeoutE
Predefined Timeout values …
#define MK_TYPE_IS_2_I8E
the type is native and has a size of 2 bytes …
MkNativeIsE
define if data is string or little or big endian …
#define MK_TYPE_SHIFT
FIXED: type is only 8bit -> 4 bit=15 for type and 4 bit for flag …
MkBoolE
the internal boolean …
#define MK_TYPE_IS_8_I8E
the type is native and has a size of 8 bytes …
MkErrorE
collection for the different error-codes …
#define MK_TYPE_IS_4_I8E
the type is native and has a size of 4 bytes …
@ MK_I8T
Y: 1 byte 'byte' type.
@ MK_I16T
S: 2 byte 'short' type.
@ MK_FLTT
F: 4 byte 'float' type.
@ MK_DBLT
D: 8 byte 'double' type.
@ MK_STRT
C: X byte 'string' type (e.g. with a \0 at the end)
@ MK_TIMEOUT_NORMAL
normal timeout in sec (90 sec) …
@ MK_TIMEOUT_DEFAULT
request the default timeout value …
@ MK_TIMEOUT_SOCKET
shorter timeout in sec (10 sec) … This TIMEOUT is used for socket connection with 'connect'
@ MK_TIMEOUT_SHORT
short timeout in sec (20 sec) …
@ MK_TIMEOUT_INIT
maximum timeout in sec (900 sec) …
@ MK_TIMEOUT_VERYSHORT
very short timeout in sec (5 sec) …
@ MK_TIMEOUT_MAX
request the maximum possible (infinite) timeout value …
@ MK_TIMEOUT_USER
request the user defined timeout value from the –timeout configuration value …
@ MK_TIMEOUT_LONG
long timeout in sec (180 sec) …
@ MK_NATIVE_IS_LITTLE
L = using if the binary protocoll, data in little-edian.
@ MK_NATIVE_IS_BIG
B = using if the binary protocoll, data in big-endian.
@ MK_NATIVE_IS_INITIAL
0 = initial value
@ MK_NATIVE_IS_STRING
S = using of the string protocol.
@ MK_CONTINUE
(transient) raise an continue-event, the calling-function must handle this.
@ MK_OK
(persistent) everything is OK.
@ MK_ERROR
(persistent) raise an error-event, the calling-fucntion is interrupted.
#define __parser__global__(...)
parser: apply an attribute to a dunction in global scope …
#define __parser__pop__
parser: stop apply a list of local attributes to a block of code …
#define __parser__push__(...)
parser: start apply a list of local attributes to a block of code …
#define __parser__(...)
parser: apply an attribute to an object in local scope …
static MkStringR MkStringCreate(MK_NUM len, MK_STRN str)
create a str from ptr and len ...
static bool MkStringIsNULL(MkStringR const strR)
check if strR is MK_NULL_STR return true or false …
static MK_NUM MkStringGetSize(MkStringR const str)
get len from the string ...
static MkStringR MkStringDup_RT(MK_RT mkrt, MkStringR const str)
create a string as duplicate from an already existsing MkBinaryR ...
static MkStringR MkStringCreate_1(MK_STRN str)
create a str from ptr use MK_NULL as end-of-string ...
static MK_STRN MkStringGetData(MkStringR const str)
get ptr pointer from the string ...
static void MkStringLog_RT(MK_RT mkrt, MkStringR const str, MK_STRN func)
log the string ...
static MkStringR MkStringSlice(MkStringR strR, MK_NUM start, MK_NUM len)
create a slice of strR start at start with max len bytes …
static void MkStringSplit(MkStringR strR, MK_NUM *len_out, MK_STRN *str_out)
split a str into ptr and len …
const MK_PTRB * MK_PTRN
const generic pointer data-type
unsigned long long MK_U64
double MK_DBL
8 byte double data-type
MK_PTRB * MK_MNG
managed object pointer, datatype will be checked at runtime
unsigned char MK_LSTB
list type data-type
unsigned char MK_BINB
byte-array type data-type
unsigned char MK_BOL
1 byte boolean data-type
signed char MK_I8
1 byte byte data-type
MK_PTRB * MK_CBP
generic pointer to call-back data
float MK_FLT
4 byte float data-type
signed long long MK_I64
8 byte wide integer data-type
MK_PTRB * MK_MXP
MkExceptionC object pointer.
MK_BINB const * MK_BINN
const byte-array pointer data-type
long MK_LONG
4/8 byte long data-type
MK_BINB * MK_BIN
byte-array pointer data-type with binary encoding (MK_BINN)
MK_LSTB * MK_LST
list pointer data-type
MK_STRB const * MK_FST
const format string pointer data-type
bool MK_BOOL
real bool data-type
int32_t MK_HDL
4 byte int handle data-type
MK_PTRB * MK_CCP
class constructor/destructor data type
int32_t MK_NUM
array size data-type ('num' items in array …
char MK_STRB
string type data-type
signed short int MK_I16
2 byte short data-type
int MK_DBG
debug-level data-type …
signed int MK_I32
4 byte integer data-type
MK_STRB * MK_STR
string pointer data-type with UTF8 ecoding (MK_STR)
unsigned int MK_SIG
signature datatype
MK_PTRB * MK_PTR
generic pointer data-type
const MK_PTRB * MK_MNGN
const - a managed object pointer, datatype will be checked at runtime
MK_PTRB const * MK_EXP
exception object pointer
const MK_STRB * MK_STRN
constant string pointer data-type
void MK_PTRB
pointer type data-type
struct MkLogFileS * MK_LFL
class-shortcut for struct MkLogFileS *, all shortcut using the XX_YYY syntax (only for public API) …
static MK_LFL MkLogFilePrev(MK_LFL const lfl)
get previous instance from linked-list of MkLogFileS type
static MK_LFL MkLogFileNext(MK_LFL const lfl)
get next instance from linked-list of MkLogFileS type
const struct MkLogFileS * MK_LFLN
class-shortcut for const struct MkLogFileS *, all const shortcut using the XX_YYYC syntax (only for p...
static bool MkLflCheckO(MK_OBJN obj)
check MkLogFileS -> libmkkernel::MkObjectS::signature …
#define MkLogFileC_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
#define MkLogFileC_X2obj(x)
static MK_LFL MkLfl(MK_MNG mng)
cast a unknown-object into an MkLogFileS pointer or NULL if not possible
static bool MkLflCheck(MK_MNGN mng)
check MkLogFileS -> libmkkernel::MkObjectS::signature …
enum MkErrorE MkLogFileOpen_RT(MK_RT mkrt, MK_OBJ errfmt, MK_STRN const file, MK_LFL *lfh_out)
open the log-file in append mode …
void MkLogFileClose_RT(MK_RT mkrt, MK_LFL lfh)
Destructor - delete a MkLogFileC instance …
enum MkErrorE MkLogFileWriteVL_RT(MK_RT mkrt, MK_LFLN lfl, MK_FST printfmt, va_list var_list)
write to log-file …
enum MkErrorE MkLogFileWriteV_RT(MK_RT mkrt, MK_LFLN lfl, MK_FST printfmt,...)
write to log-file …
MK_STRN(* MkToStringF)(MK_RT mkrt, MK_OBJN const obj)
MK_OBJ(* MkDup2F)(MK_RT mkrt, MK_OBJ const obj, MK_STRN const ident)
MK_OBJ(* MkResetF)(MK_RT mkrt, MK_OBJ const obj)
void(* MkDestructorF)(MK_RT mkrt, MK_OBJ const obj)
MK_PTR(* MkAllocCreateFLT)(MK_RT mkrt, MK_TYP const type)
void(* MkSelfDeleteF)(MK_RT mkrt, MK_PTR self, MK_PTR const env)
#define __MkCheckX(cls, x)
MK_OBJ(* MkCopyF)(MK_RT mkrt, MK_OBJ const obj, MK_OBJN const src)
void(* MkSelfUnlinkF)(MK_RT mkrt, MK_PTR self, MK_PTR const env)
void(* MkTypeInitF)(MK_RT mkrt, MK_TYP const type)
#define MkSanitizeCheck(_root, _m)
MK_PTR(* MkSelfCreateF)(MK_RT mkrt, MK_OBJ const obj, MK_PTR const env)
void(* MkLogF)(MK_RT mkrt, MK_OBJN const obj, MK_OBJN fmt, MK_I32 const debug, MK_STRN const prefix, MK_I32 const lvl)
bool(* MkLogFormatF)(MK_RT mkrt, char *header, MK_SIZE const headerSize, MK_OBJN const obj, MK_STRN const caller, MK_I32 const debug, MK_STRN const fmt)
MK_OBJ(* MkMergeF)(MK_RT mkrt, MK_OBJ const obj)
void(* MkAllocDeleteF)(MK_RT mkrt, MK_TYP const type, MK_PTR ptr)
MK_OBJ(* MkConstructorF)(MK_RT mkrt, MK_TYP type, MK_PTR nat, MK_PTR lnk)
MK_OBJ(* MkDupF)(MK_RT mkrt, MK_OBJ const obj)
#define MkSanitizeCheckO(_root, _o)
MK_OBJ MkObjectHandleResolve_RT(MK_RT mkrt, MK_HDL const netHdl)
Handle-Resolve-Slot - return a MkObjectC from netHdl or MK_NULL if invalid…
static MK_OBJ MkObjectPrev(MK_OBJ const obj)
get previous instance from linked-list of MkObjectS type
bool MkObjectHandleExists(MK_OBJ const obj)
check if obj has already a handle defined…
#define MkObjectHandleResolve(...)
#define MkObjectHandleGet(...)
const struct MkObjectS * MK_OBJN
class-shortcut for const struct MkObjectS *, all const shortcut using the XX_YYYC syntax (only for pu...
static MK_HDL MkObjectHandleGetOfType(MK_OBJ const obj)
Export-Slot - returns typeHdl of the obj .
void MkObjectHandleDeleteByNetHdl_RT(MK_RT mkrt, MK_HDL const netHdl)
Handle-Delete-Slot - delete a netHdl from handle-storage …
static MK_OBJ MkObjectGetNull(void)
Null-Slot - return a MkObjectC typed NULL instance …
MK_HDL MkObjectHandleGetOr0(MK_OBJ const obj)
return export-hdl or 0 in not created…
void MkObjectHandleDelete_RT(MK_RT mkrt, MK_OBJ const netObj)
Handle-Delete-Slot - delete a netObj from handle-storage …
static MK_OBJ MkObjectNext(MK_OBJ const obj)
get next instance from linked-list of MkObjectS type
MK_HDL MkObjectHandleGet_RT(MK_RT mkrt, MK_OBJ const obj)
Handle-Get-Slot - returns a export-hdl to the MkObjectC useable for external storage
struct MkObjectS * MK_OBJ
class-shortcut for struct MkObjectS *, all shortcut using the XX_YYY syntax (only for public API) …
#define MkObjectC_X2obj(x)
static bool MkObjCheck(MK_MNGN mng)
check MkObjectS -> libmkkernel::MkObjectS::signature …
#define MkOBJ(x)
cast a known-object into an MkObjectS pointer
static bool MkObjCheckO(MK_OBJN obj)
check MkObjectS -> libmkkernel::MkObjectS::signature …
#define MkObjectC_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
void MkDbgM_RT(MK_RT mkrt, MK_STRN const message, MK_DBG const debug, MK_STRN const callfunc, MK_I32 const lvl)
debug: write a static-marker to the MkLogFileC (default: stderr) …
void MkLogHEX_RT(MK_RT mkrt, MK_OBJN fmtobj, MK_STRN const callfunc, MkBinaryR const data)
log binaray data as HEX into the MkLogFileC (default: stderr) …
void MkLogVL_RT(MK_RT mkrt, MK_OBJN fmtobj, MK_STRN const callfunc, MK_DBG debug, MK_FST const printfmt, va_list var_list)
write a vprintf style logging-message to MkLogFileC using the internal format …
void MkObjectLog_RT(MK_RT mkrt, MK_OBJN const obj, MK_OBJN fmtobj, MK_DBG const debug, MK_STRN const callfunc, MK_I32 const lvl)
Log-Slot - log a summary of an object to the MkLogFileC (default: stderr) target …
void MkLogV_RT(MK_RT mkrt, MK_OBJN fmtobj, MK_STRN const callfunc, MK_DBG debug, MK_FST const printfmt,...)
write a printf style logging-message to MkLogFileC (default: stderr) using the internal format …
static bool MkObjectIsNull(MK_OBJ const obj)
ckeck if the object is MK_NULL
MK_STRN MkObjectToString_RT(MK_RT mkrt, MK_OBJN const inst)
String-Slot - returns the string representation of the inst …
static MK_ERR MkObjectToError_RT(MK_RT mkrt, MK_OBJ const obj)
Error-Slot - return an error-object pre initialized with obj data.
#define MkObjectToString(...)
MK_STRN MkObjectToNameOfType_RT(MK_RT mkrt, MK_OBJN const obj)
Type-Slot - returns the LibMkKernel-Type-Name of the obj as a string
static MK_PTR MkSelfGet(MK_OBJ const obj)
get the MkObjectS::self value
void(* MkSelfIncrF)(MK_RT mkrt, MK_PTR self, MK_PTR const env)
static void MkSelfSet(MK_OBJ const obj, MK_PTR const self, MK_PTR const env)
set the MkObjectS::self value
#define MkSelfCreate(...)
void(* MkSelfDecrF)(MK_RT mkrt, MK_PTR self, MK_PTR const env)
static void MkRefIncrSelf(MK_OBJ const obj, MK_PTR const self, MK_PTR const env)
ATOMIC operation -> link self with reference-count.
MK_NUM MkRefCidN_RT(MK_RT mkrt)
return the reference-count-recursion-level
static MK_I32 MkRefGet(MK_OBJ const obj)
get the reference-count
#define MkRefLOCK
unchangeable reference
MK_PTR MkSelfCreate_RT(MK_RT mkrt, MK_OBJ const obj, MK_PTR const env)
create the MkObjectS::self value
static bool MkRefIsLocked(MK_OBJ const obj)
check if object is locked
static bool MkSelfExists(MK_OBJN obj)
Check if the MkObjectS::self exists …
static MK_I32 MkRefLock(MK_OBJ const obj)
lock the object
MK_OBJ MkRefDecrWithUnlinkSelf_RT(MK_RT mkrt, MK_OBJ const obj)
ATOMIC operation -> unlink self from META und decr-ref-count in MQ.
MK_OBJ MkRefDecrWithoutSelf_RT(MK_RT mkrt, MK_OBJ const obj)
ATOMIC operation -> unlink self with reference-count.
static MK_ATTR_HOT enum MkErrorE MkSelfNew_RT(MK_RT mkrt, MK_OBJ obj, MK_PTR *self_out, MK_PTR const env)
return the self pointer for a given obj …
void MkSysFreeP(MK_PTR data)
free syscall with ccmkkernel error plugin
static enum MkErrorE MkSysSleep(MK_OBJN fmtobj, MK_I32 const sec)
sleep syscall with ccmkkernel error plugin
void(* MkSysExitF)(MK_RT mkrt, int isThread, int num) MK_NO_RETURN
exit syscall with ccmkkernel error plugin
MK_PTR(* MkSysCallocF)(size_t, size_t)
calloc syscall …
MK_PTR(* MkSysMallocF)(size_t)
malloc syscall …
#define MkSysStringIsLenEQUAL(_str, _other, _len)
MK_STR(* MkSysStrNCpyF)(char *, const char *, size_t)
strdup strncpy …
MkIdSE
signal type of the MkIdS data val …
static MK_STRN MkSysStringGetNoNULL(MK_STRN str)
get string "" or VALUE …
MK_STR MkSysBasename_RT(MK_RT mkrt, MK_STRN const pathName, bool const includeExtension)
basename syscall with ccmkkernel error plugin
enum MkErrorE(* MkSysWaitF)(MK_OBJN const fmtobj, MK_IDNT const id)
wait for process to finish syscall with ccmkkernel error plugin
void MkSysPrintTrace_RT(MK_RT mkrt, MK_OBJN fmtobj, MK_I32 skip, MK_I32 const num, MK_I32 const debug, MK_STRN const callfunc, MK_I32 const lvl)
backtrace syscall with ccmkkernel error plugin
MK_STRN MkSysGetTrace_RT(MK_RT mkrt, MK_OBJN fmtobj, MK_I32 skip, MK_I32 const num, MK_I32 const debug, MK_STRN const callfunc, MK_I32 const lvl)
same as MkSysPrintTrace but return an string…
MK_STR MkSysDirname_RT(MK_RT mkrt, MK_STRN const pathName)
dirname syscall with ccmkkernel error plugin
uintptr_t MK_IDNT
process or thread identifier …
static bool MkSysStringIsNULL(MK_STRN str)
test if string is NULL or EMPTY …
#define MkSysFree(pointer)
pid_t(* MkSysForkF)(void)
fork syscall …
#define MkSysStringSetNULL_R(_str)
MK_STR(* MkSysStrNDupF)(MK_STRN, size_t)
strndup syscall …
MK_STR(* MkSysStrDupF)(MK_STRN)
strdup syscall …
struct MkLalS MkLal
Language Abstraction Layer in duty.
#define MkSysStringIsNULL_R(_str)
#define MkSysStringSet_R(_str, _val)
#define MkSysStringIsEQUAL(_str, _other)
static bool MkSysStringIsNotNULL(MK_STRN str)
test if string is NOT NULL or EMPTY …
#define MkSysFreeNonNull(pointer)
void(* MkSysFreeF)(MK_PTR)
free syscall …
MK_STR MkSysPrintF_RT(MK_RT mkrt, MK_STRN const format,...)
sprintf syscall with ccmkkernel error plugin
MK_PTR(* MkSysReallocF)(MK_PTR, size_t)
realloc syscall …
MK_PTR MkSysMemDup(MK_OBJN fmtobj, MK_PTRN const blck, size_t const size)
memdup syscall with ccmkkernel error plugin
static MK_NO_RETURN void MkSysExit(MK_RT mkrt, int isThread, int num)
exit syscall with ccmkkernel error plugin
#define MkSysPrintTrace(...)
static MK_STRN MkSysStringGet(MK_STRN str)
get string NULL or VALUE …
@ MK_ID_UNUSED
empty struct
@ MK_ID_PROCESS
val has a process handle
@ MK_ID_THREAD
val has a thread handle
#define MkObjectDeleteCallF_ARGS
the libmkkernel::MkObjectDeleteCallF arguments with default names
#define MkObjectDeleteFreeF_ARGS
the libmkkernel::MkObjectDeleteFreeF arguments with default names
const struct MkRtExtS * MK_RTEXTN
class-shortcut for const struct MkRtExtS *, all const shortcut using the XX_YYYC syntax (only for pub...
static bool MkRtExtCheck(MK_MNGN mng)
check MkRtExtS -> libmkkernel::MkObjectS::signature …
static bool MkRtExtCheckO(MK_OBJN obj)
check MkRtExtS -> libmkkernel::MkObjectS::signature …
#define MkRuntimeHandleResolve(...)
#define MkRuntimeHandleGet(...)
const struct MkRuntimeS * MK_RTN
class-shortcut for const struct MkRuntimeS *, all const shortcut using the XX_YYYC syntax (only for p...
static MK_RT MkRuntimeNext(MK_RT const rt)
get next instance from linked-list of MkRuntimeS type
#define MkRuntimeInstances()
static MK_RT MkRuntimePrev(MK_RT const rt)
get previous instance from linked-list of MkRuntimeS type
struct MkRuntimeS * MK_RT
class-shortcut for struct MkRuntimeS *, all shortcut using the XX_YYY syntax (only for public API) …
#define MkRuntimeC_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
static bool MkRtCheck(MK_MNGN mng)
check MkRuntimeS -> libmkkernel::MkObjectS::signature …
static MK_RT MkRt(MK_MNG mng)
cast a unknown-object into an MkRuntimeS pointer or NULL if not possible
#define MkRuntimeC_X2obj(x)
static bool MkRtCheckO(MK_OBJN obj)
check MkRuntimeS -> libmkkernel::MkObjectS::signature …
static void MkRuntimeSetIsSilent_RT(MK_RT mkrt, bool silent)
set the MkRuntimeS::isSilent value …
static bool MkRuntimeGetIsSilent(void)
get the MkRuntimeS::isSilent value …
static void MkRuntimeSetDebug(MK_I32 dbg)
set the MkRuntimeS::debug value …
static MK_STRN MkRuntimeGetLogfile(void)
get the MkRuntimeS::logfile value …
void MkRuntimeLog_RT(MK_RT mkrt, MK_RTN const rt, MK_OBJN fmtobj, MK_DBG const debug, MK_STRN const callfunc, MK_I32 const lvl)
log the MkRuntimeC …
static MK_RT MkRuntimeGet(void)
return a initialized MkRuntimeRLS …
#define MkRtSetup_ON_RT(o)
#define MK_ATTR_RT_INSTANCE
MK_RT MkRuntimeSetup(MK_RT const mkrt)
initialize MkRuntimeRLS …
#define MK_RT_ATTR_FORMAT_4
size_t MkRuntimeCallbackAdd(MK_RT mkrt, MkRuntimeCallbackS *cbdata, MkRuntimeInitF rt_callback, MK_STRN ident)
add a callback to the runtime …
void MkRuntimeCleanup(MK_RT mkrt)
cleanup MkRuntimeRLS …
#define MK_INSTANCE_RT_O(o)
#define MK_RT_ATTR_FORMAT_1
#define MK_RT_ATTR_FORMAT_2
void MkRuntimeCallbackDel(MkRuntimeCallbackS *cbdata)
delete a callback from the runtime …
#define MK_PARSER_RT_ONLY
#define MK_ATTR_RT_STATIC
struct libmkkernel::MkRuntimeCallbackS MkRuntimeCallbackS
keep callback related data …
__thread struct MkRuntimeS MkRuntimeRLS
RLS …
#define MK_INSTANCE_HDL(x)
static bool MkTypCheckO(MK_OBJN obj)
check MkTypeS -> libmkkernel::MkObjectS::signature …
static bool MkTypCheck(MK_MNGN mng)
check MkTypeS -> libmkkernel::MkObjectS::signature …
#define MkTypeLoop(_cls, _var)
MK_TYP MkTypeResolve_RT(MK_RT mkrt, MK_TYPN const typ)
resolve a new type
MK_TYP MkTypeDup2_RT(MK_RT mkrt, MK_TYPN const typ, MK_STRN const ident)
duplicate a type-type as duplicate from an existing type but with a new name …
MK_OBJ MkTypeAlloc_RT(MK_RT mkrt, MK_TYPN const typ)
alloc instance-memory for MkTypeS …
#define MkTypeCreate(clsV, basicV, identV)
void MkTypeDelete_RT(MK_RT mkrt, MK_TYP const typ)
delete a type object
static MK_OBJ MkObjectInstancesOfType_RT(MK_RT mkrt, MK_SIG typeSIG)
return the head-instance from a specific type defined by signature typeSIG …
array of libmkkernel::MK_STRN values …
define the storage-allocator function
MK_PTR alloc_data
data use for alloc_createF and alloc_deleteF
MkAllocCreateFLT alloc_createF
"calloc" the memory of the object
MkAllocDeleteF alloc_deleteF
"free" the memory of the object
binary data default format …
MK_BINN data
pointer to the binary data
MK_SIZE size
size of the data pointer
the final class of MkBufferS with 1024 byte ILS-Size …
the final class of MkBufferS with 256 byte ILS-Size …
the final class of MkBufferS with 64 byte ILS-Size …
The CLASS used to store a list of MkBufferS items into a flat array…
instance storage predefined
MK_NUM size
size of the MkBufferS::ils_data
MK_NUM offset
offset from start of MkBufferS to the start of MkBufferS::ils_data
The ABSTRACT-CLASS used to store a native-type-data-item defined by PRIMITIVE TYPE …
MK_NUM cursize
currently used size (always: cursize < size)
bool doBufferFree
should the data be freed? -> example: pBufferRefInit
MK_NUM size
the size of the data-segment
enum MkTypeE type
type of the item stored into the data-segment
the final class of MkBufferStreamS with 1024 byte ILS-Size …
the final class of MkBufferStreamS with 16384 byte ILS-Size …
the final class of MkBufferStreamS with 256 byte ILS-Size …
the final class of MkBufferStreamS with 64 byte ILS-Size …
The ABSTRACT-CLASS MkBufferStreamS is used for package-based serialized IO …
struct MkBufferStreamSaveS * busReadSave
struct MkBufferStreamSaveS * busWriteSave
a linked-list to opearate a storage of data items
MK_SIG signature
check if item is valid or not
struct MkCacheItemS * prev
link to the prev item
struct MkCacheItemS * next
link to the next item
bool doFree
should the item be freed?
This is an circel storage of a linked-list connected with a "lock" at libmkkernel::MkCacheS …
struct MkCacheItemS * used
used cache items
MkCacheDF deleteF
function to delete 'data'
struct MkCacheItemS * free_last
free last cache item
MK_NUM num
MIN num items in cache.
MkCacheCF createF
function to create 'data'
MK_PTR createD
additional create data item
struct MkCacheItemS * free_first
free first cache item
MK_RT runtime
link to the runtime
extension-slot for MkErrorS …
signal-slot for print on error …
The data-type to store and handle the error-condition …
MK_OBJN format_of_error
used to format the error-message and as input for source_of_error
Base class for the extension technologie …
data type for process/thread identification …
bool ioIsPipe
startet in PIPE mode: client @ server @ ... and NOT in server --thread|spawn|fork
MK_IDNT val
process or thread handle
enum MkIdSE type
signal type of val data
Interface between ccmkkernel and the Operating-System …
MkSysWaitF MkSysWaitForThreadCB
wait for process to finish syscall with ccmkkernel error plugin
MkSysCallocF SysCalloc
calloc syscall …
MkSysWaitF MkSysWaitForProcessCB
wait for process to finish syscall with ccmkkernel error plugin
MkSysFreeF SysFree
free syscall …
MkSysReallocF SysRealloc
realloc syscall …
MkSysStrNDupF SysStrNDup
strndup syscall …
MkSysStrDupF SysStrDup
strdup syscall …
MkSysStrNCpyF SysStrNCpy
strdup strncpy …
enum MkErrorE(* SysSleep)(MK_OBJN const obj, unsigned int const sec)
sleep syscall with ccmkkernel error plugin
MkSysForkF SysFork
fork syscall …
MkSysMallocF SysMalloc
malloc syscall …
enum MkErrorE(* SysUSleep)(MK_OBJN const obj, unsigned int const usec)
usleep syscall with ccmkkernel error plugin
MkSysExitF MkSysExitCB
exit syscall with ccmkkernel error plugin
define a MkLogFileC object …
the protect is used to "protect" data set by pAllocCreate if the new object is later initialized with...
bool isLocal
has the object a local reference? - has been created by TLS or MkBufferCreateREF ?...
MK_TYP type
link to the object type
MK_RTEXT objRtExt
link to the kernel-runtime-extension the instance was created in …
MK_I32 selfRefCount
Delete the MkObjectS::self at the same MkObjectS::refCount as was created …
MK_I32 refCount
is THIS object in use?
MK_SIG signature
should be the SIGNATURE
MK_PTR self
link between the managed object and the object in the target-programming-language
MK_RT objRt
link to the kernel-runtime the instance was created in …
MK_PTR env
link to the object "runtime", set by selfCreate …
bool selfCreated
if the self was created by selfCreate than it is an INTERNAL object …
MK_HDL netHdl
if not-null the object was exported with MkObjectHandleGet
bool deleteCallbackCalled
Activate if object is on delete.
MkRtExtS - extend the MkRuntimeC with a library specific feature …
keep callback related data …
The MkRuntimeS provide a per-thread environment for ccmkkernel …
bool isSilent
write (false) or don't write (true) any message to MkLogFileC (default: stderr) (default: false) …
MK_I32 debug
set the debug-level of the context … Valid values are 0 <= debug-level <= 9 using 0 for no-debug and ...
MK_STR logfile
append to logfile, valid values are: stderr, stdout or a filename (default: stderr)
string data default format …
MK_NUM len
len of the string data
MK_STRN ptr
pointer to the string data
super-class-base, the MkTypeS using the super-macro-syntax for all non specific types …
MkTypeS - class known as typ or type is used as class-base for a Managed-Object-Technology (MOT) type...
MkLogF log
"log" object data to MkLogFileC (default: stderr)
MkSelfCreateF selfCreate
"create" the "self" pointer
bool noSelf
do NOT use the self feature -> used by MqFactoryS
MK_I32 delCbCnt
number of callback registered for this type
size_t typsize
the size of the this type self, used in MkTypeDup2
MkDestructorF destructor
delete an object
MK_SIG objmask
public object signatur-mask of the type-instance
MK_OBJ instances
linked list of instances belong to type
MK_I32 type_id
default "0" but "MkFactoryTypeAdd" need more
MkLogFormatF fLogFormat
format the log message of an object, used in "sLogVL_O"
MkDupF dup
"dup" constructor
MkMergeF merge
"merge" constructor
MkSelfUnlinkF selfUnlink
"unlink" the "self" pointer from MQ, example RUBY
MkSelfDeleteF selfDelete
"delete" the "self" pointer
MkDup2F dup2
"dup" constructor with "ident" initialisation
MkTypeInitF type_init
initializer for new type
size_t objsize
the size of the new object created with this type, used in malloc
MkResetF reset
"reset" the object to the "initial" state
MkToStringF toString
get the string representation
MK_SIG objsig
public st signatur of the type-instance
MkConstructorF constructor
create an object
union used to set or modify native data from an MkBufferS object …
MK_BOL BOL
1 byte boolean data
MK_DBL DBL
8 byte double data
MK_I32 I32
4 byte integer data
MK_I16 I16
2 byte short data
MK_I64 I64
8 byte integer data
MK_FLT FLT
4 byte float data
a union for all data items supported by MkBufferS …
MK_ATO * A
atom for native data-types
MK_BIN B
arbitrary byte-array data
MK_LST L
list object type data
MK_STR S
C string like data (e.g. with a \0 at the end)
MK_STRN C
const C string like data (e.g. with a \0 at the end)