Inline implementation of maincontext_t.tcontext_maincontext.
#define tcontext_maincontext( ) (sys_context_threadtls())
Tests CONDITION and jumps to label ONABORT in case of false.
#define TEST( CONDITION ) if ( !(CONDITION) ) { logfailed_unittest(__FILE__, __LINE__, 0); goto ONABORT; }
Static initializer.
#define test_errortimer_FREE { 0, 0 }
Static initializer.
#define testmm_FREE { 0, 0 }
Tests (CMP FCTCALL) jumps to label ONABORT in case of false.
#define TESTP( PRIx, CMP, FCTCALL ) { typeof(FCTCALL) _r = FCTCALL; if ( !(CMP _r) ) { logfailedunexpected_unittest( __FILE__, __LINE__, "%" PRIx, _r); goto ONABORT; } }
Static initializer.
#define textpos_FREE { 0, 0, 0 }
Static initializer.
#define textpos_INIT { 0, 1, 0 }
Implements utf8reader_t.textpos_utf8reader.
#define textpos_utf8reader( utfread ) (&(utfread)->pos)
Static initializer.
#define textresource_FREE { 0, 0, 0, slist_INIT, slist_INIT, outconfig_FREE }
Static initializer.
#define textresource_langref_INIT( language ) { slist_INIT, 0, (language) }
Static initializer.
#define textresource_language_INIT( name ) { string_INIT(name->size, name->addr), 0 }
Static initializer.
#define textresource_parameter_FREE { arraystf_node_INIT(0,0), 0, 0, typemodifier_PLAIN }
Static initializer.
#define textresource_paramtype_INIT( cstr, modifier, format ) textresource_paramtype_INIT2(cstr,modifier,format,"")
Static initializer.
#define textresource_reader_FREE { textresource_FREE, utf8reader_FREE } ;
Static initializer.
#define textresource_textatom_INIT( string ) { 0, textresource_textatom_STRING, { string } }
Static initializer.
#define textresource_textatom_INIT_FCTPARAM( fctparam ) { 0, textresource_textatom_FCTPARAM, { .fctparam = { fctparam } } }
Static initializer.
#define textresource_writer_FREE { 0, file_FREE }
Static initializer.
#define thread_FREE { 0, 0, 0, 0, 0, sys_thread_FREE, 0, { .uc_link = 0 } }
Implements syncwait_t.thread_syncwait.
#define thread_syncwait( syncwait ) (&(syncwait)->thread)
Implements thread_tls_t.thread_threadtls.
#define thread_threadtls( tls ) ((thread_t*) ( (tls)->addr + sizeof(threadcontext_t) ))
Static initializer.
#define thread_tls_FREE { 0 }
Static initializer.
#define thread_vars_INIT_STATIC { threadcontext_INIT_STATIC, thread_FREE }
Static initializer for threadcontext_t.
#define threadcontext_FREE { 0, iobj_FREE, iobj_FREE, 0, iobj_FREE, iobj_FREE, 0, 0 }
Static initializer for threadcontext_t.
#define threadcontext_INIT_STATIC { &g_maincontext.pcontext, iobj_FREE, iobj_FREE, 0, iobj_FREE, { 0, &g_logmain_interface }, 0, 0 }
Inline implementation of maincontext_t.threadid_maincontext.
#define threadid_maincontext( ) (tcontext_maincontext()->thread_id)
Static initializer.
#define thrmutex_FREE { 0, 0, 0 }
Static initializer.
#define thrmutex_INIT { 0, 0, 0 }
Static initializer.
#define timevalue_INIT( seconds, nano_secconds ) { seconds, nano_secconds }
Implements binarystack_t.top_binarystack.
#define top_binarystack( stack ) ((void*)(&(stack)->blockstart[(stack)->freeblocksize]))
Logs an TEXTID from C-kern/resource/errlog.text and error number err.
#define TRACE_ERRLOG( FLAGS, TEXTID, err, ... ) TRACE2_ERRLOG(FLAGS, TEXTID, __FUNCTION__, __FILE__, __LINE__, err, __VA_ARGS__)
Logs an TEXTID from C-kern/resource/errlog.text and error number err.
#define TRACE_NOARG_ERRLOG( FLAGS, TEXTID, err ) do { log_header_t _header = log_header_INIT(__FUNCTION__, __FILE__, __LINE__, err) ; PRINTTEXT_NOARG_LOG( log_channel_ERR, FLAGS, &_header, TEXTID ## _ERRLOG) ; } while(0)
Logs an TEXTID from C-kern/resource/errlog.text and error number err.
#define TRACE2_ERRLOG( FLAGS, TEXTID, funcname, filename, linenr, err, ... ) do { log_header_t _header = log_header_INIT(funcname, filename, linenr, err) ; PRINTTEXT_LOG(log_channel_ERR, FLAGS, &_header, TEXTID ## _ERRLOG, __VA_ARGS__) ; } while(0)
Logs the abortion of a function and the its corresponding error code.
#define TRACEABORT_ERRLOG( err ) TRACE_NOARG_ERRLOG(log_flags_END|log_flags_OPTIONALHEADER, FUNCTION_ABORT, err)
Logs that an error occurred during free_XXX or delete_XXX.
#define TRACEABORTFREE_ERRLOG( err ) TRACE_NOARG_ERRLOG(log_flags_END|log_flags_OPTIONALHEADER, FUNCTION_ABORT_FREE, err)
Logs reason of failure and name of called app function.
#define TRACECALL_ERRLOG( fct_name, err ) TRACE_ERRLOG(log_flags_START, FUNCTION_CALL, err, fct_name)
Logs “out of memory” reason for function abort.
#define TRACEOUTOFMEM_ERRLOG( size, err ) TRACE_ERRLOG(log_flags_START, MEMORY_OUT_OF, err, size)
Logs reason of failure and name of called system function.
#define TRACESYSCALL_ERRLOG( sys_fctname, err ) TRACE_ERRLOG(log_flags_START, FUNCTION_SYSCALL, err, sys_fctname)
Static initializer.
#define trie_FREE { 0 }
Static initializer.
#define trie_INIT { 0 }
Implements trie_t.tryinsert_trie.
#define tryinsert_trie( trie, keylen, key, uservalue ) (insert2_trie((trie), (keylen), (key), (uservalue), false))
Implements trie_t.tryremove_trie.
#define tryremove_trie( trie, keylen, key, uservalue ) (remove2_trie((trie), (keylen), (key), (uservalue), false))
Inline implementation of maincontext_t.type_maincontext.
#define type_maincontext( ) (self_maincontext()->type)
Static initializer.
#define typeadapt_binarykey_FREE typeadapt_binarykey_INIT( 0, (const uint8_t*)0 )
Inits typeadapt_binarykey_t with size in bytes in start (lowest) memory address.
#define typeadapt_binarykey_INIT( size, addr ) { addr, size }
Declares a derived interface from generic typeadapt_comparator_it.
#define typeadapt_comparator_DECLARE( declared_it, typeadapter_t, object_t, key_t ) static inline void compiletimeassert##declared_it(void) { static_assert(sizeof(key_t)==sizeof(void*), "compatible with cmp_key_object") ; } typedef struct declared_it declared_it ; struct declared_it { typeadapt_comparator_EMBED(typeadapter_t, object_t, key_t) ; }
Declares a derived interface from generic typeadapt_comparator_it.
#define typeadapt_comparator_EMBED( typeadapter_t, object_t, key_t ) int (* cmp_key_object) (typeadapter_t * typeadp, const key_t lkey, const object_t * robject) ; int (* cmp_object) (typeadapter_t * typeadp, const object_t * lobject, const object_t * robject)
Static initializer.
#define typeadapt_comparator_FREE { 0, 0 }
Static initializer.
#define typeadapt_comparator_INIT( cmpkeyobj_f, cmpobj_f ) { cmpkeyobj_f, cmpobj_f }
Implements typeadapt_t.typeadapt_DECLARE.
#define typeadapt_DECLARE( typeadapter_t, object_t, key_t ) typedef struct typeadapter_t typeadapter_t ; struct typeadapter_t { typeadapt_EMBED(typeadapter_t, object_t, key_t) ; }
Implements typeadapt_t.typeadapt_EMBED.
#define typeadapt_EMBED( typeadapter_t, object_t, key_t ) struct { typeadapt_comparator_EMBED(typeadapter_t, object_t, key_t) ; } comparator ; struct { typeadapt_gethash_EMBED(typeadapter_t, object_t, key_t) ; } gethash ; struct { typeadapt_getkey_EMBED(typeadapter_t, object_t) ; } getkey ; struct { typeadapt_lifetime_EMBED(typeadapter_t, object_t) ; } lifetime
Static initializer.
#define typeadapt_FREE { typeadapt_comparator_FREE, typeadapt_gethash_FREE, typeadapt_getkey_FREE, typeadapt_lifetime_FREE }
Implements typeadapt_gethash_it.typeadapt_gethash_DECLARE.
#define typeadapt_gethash_DECLARE( declared_it, typeadapter_t, object_t, key_t ) static inline void compiletimeassert##declared_it(void) { static_assert(sizeof(key_t)==sizeof(void*), "compatible with hashkey") ; } typedef struct declared_it declared_it ; struct declared_it { typeadapt_gethash_EMBED(typeadapter_t, object_t, key_t) ; }
Declares a derived interface from generic typeadapt_gethash_it.
void typeadapt_gethash_DECLARE( TYPENAME declared_it, TYPENAME typeadapter_t, TYPENAME object_t, TYPENAME key_t ) ;
Implements typeadapt_gethash_it.typeadapt_gethash_EMBED.
#define typeadapt_gethash_EMBED( typeadapter_t, object_t, key_t ) size_t (*hashobject) (typeadapter_t * typeadp, const object_t * node) ; size_t (*hashkey) (typeadapter_t * typeadp, const key_t key)
Declares a derived interface from generic typeadapt_gethash_it.
void typeadapt_gethash_EMBED( TYPENAME typeadapter_t, TYPENAME object_t, TYPENAME key_t ) ;
Static initializer.
#define typeadapt_gethash_FREE typeadapt_gethash_INIT( 0, )
Static initializer.
#define typeadapt_gethash_INIT( hashobject_f, hashkey_f ) { hashobject_f, hashkey_f }
Declares a derived interface from generic typeadapt_getkey_it.
#define typeadapt_getkey_DECLARE( declared_it, typeadapter_t, object_t ) typedef struct declared_it declared_it ; struct declared_it { typeadapt_getkey_EMBED(typeadapter_t, object_t) ; }
Declares a derived interface from generic typeadapt_getkey_it.
#define typeadapt_getkey_EMBED( typeadapter_t, object_t ) void (* getbinarykey) (typeadapter_t * typeadp, object_t * node, /*out*/typeadapt_binarykey_t * binkey)
Static initializer.
#define typeadapt_getkey_FREE { 0 }
Static initializer.
#define typeadapt_getkey_INIT( getbinarykey_f ) { getbinarykey_f }
Static initializer.
#define typeadapt_impl_FREE { typeadapt_FREE, 0 }
Static initializer.
#define typeadapt_impl_INIT( objectsize ) { typeadapt_INIT_LIFETIME(&lifetime_newcopyobj_typeadaptimpl, &lifetime_deleteobj_typeadaptimpl), objectsize }
Static initializer.
#define typeadapt_INIT_CMP( cmpkeyobj_f, cmpobj_f ) { typeadapt_comparator_INIT(cmpkeyobj_f, cmpobj_f), typeadapt_gethash_FREE, typeadapt_getkey_FREE, typeadapt_lifetime_FREE }
Static initializer.
#define typeadapt_INIT_LIFECMP( newcopyobj_f, deleteobj_f, cmpkeyobj_f, cmpobj_f ) { typeadapt_comparator_INIT(cmpkeyobj_f, cmpobj_f), typeadapt_gethash_FREE, typeadapt_getkey_FREE, typeadapt_lifetime_INIT(newcopyobj_f, deleteobj_f) }
Static initializer.
#define typeadapt_INIT_LIFECMPHASH( newcopyobj_f, deleteobj_f, cmpkeyobj_f, cmpobj_f, hashobject_f, hashkey_f ) { typeadapt_comparator_INIT(cmpkeyobj_f, cmpobj_f), typeadapt_gethash_INIT(hashobject_f, hashkey_f), typeadapt_getkey_FREE, typeadapt_lifetime_INIT(newcopyobj_f, deleteobj_f) }
Static initializer.
#define typeadapt_INIT_LIFECMPHASHKEY( newcopyobj_f, deleteobj_f, cmpkeyobj_f, cmpobj_f, hashobject_f, hashkey_f, getbinarykey_f ) { typeadapt_comparator_INIT(cmpkeyobj_f, cmpobj_f), typeadapt_gethash_INIT(hashobject_f, hashkey_f), typeadapt_getkey_INIT(getbinarykey_f), typeadapt_lifetime_INIT(newcopyobj_f, deleteobj_f) }
Static initializer.
#define typeadapt_INIT_LIFECMPKEY( newcopyobj_f, deleteobj_f, cmpkeyobj_f, cmpobj_f, getbinarykey_f ) { typeadapt_comparator_INIT(cmpkeyobj_f, cmpobj_f), typeadapt_gethash_FREE, typeadapt_getkey_INIT(getbinarykey_f), typeadapt_lifetime_INIT(newcopyobj_f, deleteobj_f) }
Static initializer.
#define typeadapt_INIT_LIFEKEY( newcopyobj_f, deleteobj_f, getbinarykey_f ) { typeadapt_comparator_FREE, typeadapt_gethash_FREE, typeadapt_getkey_INIT(getbinarykey_f), typeadapt_lifetime_INIT(newcopyobj_f, deleteobj_f) }
Static initializer.
#define typeadapt_INIT_LIFETIME( newcopyobj_f, deleteobj_f ) { typeadapt_comparator_FREE, typeadapt_gethash_FREE, typeadapt_getkey_FREE, typeadapt_lifetime_INIT(newcopyobj_f, deleteobj_f) }
Declares a derived interface from generic typeadapt_lifetime_it.
#define typeadapt_lifetime_DECLARE( declared_it, typeadapter_t, object_t ) typedef struct declared_it declared_it ; struct declared_it { typeadapt_lifetime_EMBED(typeadapter_t, object_t) ; }
Declares the function table used to implement typeadapt_lifetime_DECLARE Use typeadapt_lifetime_EMBED if you want to embed the function table directly into another structure.
#define typeadapt_lifetime_EMBED( typeadapter_t, object_t ) int (* newcopy_object) (typeadapter_t * typeadp, /*out*/object_t ** destobject, const object_t * srcobject) ; int (* delete_object) (typeadapter_t * typeadp, object_t ** object)
Static initializer.
#define typeadapt_lifetime_FREE { 0, 0 }
Static initializer.
#define typeadapt_lifetime_INIT( newcopyobj_f, deleteobj_f ) { (newcopyobj_f), (deleteobj_f) }
Static initializer.
#define typeadapt_member_FREE typeadapt_member_INIT( 0, )
Static initializer.
#define typeadapt_member_INIT( typeadp, nodeoffset ) { typeadp, typeadapt_nodeoffset_INIT(nodeoffset) }
Static initializer.
#define typeadapt_nodeoffset_INIT( nodeoffset ) nodeoffset
It’s a marker in a function declaration.
#define TYPENAME void*
It’s a marker in a function declaration.
#define TYPEQUALIFIER void*