Macro Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 default sys_sqroot_int64
 diffms_timevalue
 DIGITSBASE
 digitsperint_decimal
 display_FREE, display_t
 display_window
 display_x11screen
 display_x11window
 div_bigint
 divui32_bigint
 dlist_IMPLEMENT
 dlist_IMPLEMENT _wlist
 dlist_INIT, dlist_t
 dlist_INIT_LAST, dlist_t
 dlist_iterator_FREE, dlist_iterator_t
 dlist_node_INIT, dlist_node_t
E
 eglconfig_FREE, eglconfig_t
 eglcontext_FREE, eglcontext_t
 egldisplay_FREE, egldisplay_t
 eglpbuffer_FREE, eglpbuffer_t
 eglwindow_FREE, eglwindow_t
 emptycache_pagecache
 EMPTYCACHE_PAGECACHE
 errcode_testerrortimer
 error_maincontext
 errorcontext_FREE, errorcontext_t
 errorcontext_INIT_STATIC, errorcontext_t
 EVENADDRESS
 event_syncwait
 exitthread_syncrun
 expmax_decimal
 exponent_bigint
 exponent_decimal
 exthash_FREE, exthash_t
 exthash_IMPLEMENT
 exthash_iterator_FREE, exthash_iterator_t
 exthash_node_INIT, exthash_node_t
If no compiler specific version is defined use sqroot_int64 as default.
#define diffms_timevalue(
   endtv,
   starttv
) ( __extension__ ({ timevalue_t * _etv = (endtv) ; timevalue_t * _stv = (starttv) ; (_etv->seconds - _stv->seconds) * 1000 + (_etv->nanosec - _stv->nanosec) / 1000000 ; }))
Implements timevalue_t.diffms_timevalue.
#define DIGITSBASE ((uint32_t)1000000000)
The base of a digit in array decimal_t.digits.
#define digitsperint_decimal() ((uint8_t)(9 * bitsperint_decimal()/32))
Implements decimal_t.digitsperint_decimal.
#define display_FREE { x11display_FREE, egldisplay_FREE }
Static initializer.
#define display_window(
   win
) (castfromos_display(display_x11window(os_window(win))))
Implements window_t.display_window.
#define display_x11screen(x11screen) ((x11screen)->display)
Implements x11screen_t.display_x11screen.
#define display_x11window(x11win) ((x11win)->display)
Implements x11window_t.display_x11window.
#define div_bigint(result,
lbig,
rbig) (divmod_bigint(result, 0, lbig, rbig))
Implements bigint_t.div_bigint.
#define divui32_bigint(result,
lbig,
divisor) (divmodui32_bigint(result, 0, lbig, divisor))
Implements bigint_t.divui32_bigint.
#define dlist_IMPLEMENT(
   _fsuffix,
   object_t,
   nodeprefix
) typedef dlist_iterator_t iteratortype##_fsuffix ; typedef object_t * iteratedtype##_fsuffix ; static inline int initfirst##_fsuffix##iterator(dlist_iterator_t * iter, dlist_t * list) __attribute__ ((always_inline)) ; static inline int initlast##_fsuffix##iterator(dlist_iterator_t * iter, dlist_t * list) __attribute__ ((always_inline)) ; static inline int free##_fsuffix##iterator(dlist_iterator_t * iter) __attribute__ ((always_inline)) ; static inline bool next##_fsuffix##iterator(dlist_iterator_t * iter, object_t ** node) __attribute__ ((always_inline)) ; static inline bool prev##_fsuffix##iterator(dlist_iterator_t * iter, object_t ** node) __attribute__ ((always_inline)) ; static inline void init##_fsuffix(dlist_t * list) __attribute__ ((always_inline)) ; static inline int free##_fsuffix(dlist_t * list, struct typeadapt_t * typeadp) __attribute__ ((always_inline)) ; static inline int isempty##_fsuffix(const dlist_t * list) __attribute__ ((always_inline)) ; static inline object_t * first##_fsuffix(const dlist_t * list) __attribute__ ((always_inline)) ; static inline object_t * last##_fsuffix(const dlist_t * list) __attribute__ ((always_inline)) ; static inline object_t * next##_fsuffix(object_t * node) __attribute__ ((always_inline)) ; static inline object_t * prev##_fsuffix(object_t * node) __attribute__ ((always_inline)) ; static inline bool isinlist##_fsuffix(object_t * node) __attribute__ ((always_inline)) ; static inline void insertfirst##_fsuffix(dlist_t * list, object_t * new_node) __attribute__ ((always_inline)) ; static inline void insertlast##_fsuffix(dlist_t * list, object_t * new_node) __attribute__ ((always_inline)) ; static inline void insertafter##_fsuffix(dlist_t * list, object_t * prev_node, object_t * new_node) __attribute__ ((always_inline)) ; static inline void insertbefore##_fsuffix(object_t* next_node, object_t * new_node) __attribute__ ((always_inline)) ; static inline int removefirst##_fsuffix(dlist_t * list, object_t ** removed_node) __attribute__ ((always_inline)) ; static inline int removelast##_fsuffix(dlist_t * list, object_t ** removed_node) __attribute__ ((always_inline)) ; static inline int remove##_fsuffix(dlist_t * list, object_t * node) __attribute__ ((always_inline)) ; static inline void replacenode##_fsuffix(dlist_t * list, object_t * newnode, object_t * oldnode) __attribute__ ((always_inline)) ; static inline int removeall##_fsuffix(dlist_t * list, struct typeadapt_t * typeadp) __attribute__ ((always_inline)) ; static inline void transfer##_fsuffix(dlist_t * tolist, dlist_t * fromlist) __attribute__ ((always_inline)) ; static inline uint16_t nodeoffset##_fsuffix(void) __attribute__ ((always_inline)) ; static inline uint16_t nodeoffset##_fsuffix(void) { static_assert(UINT16_MAX > (uintptr_t) & (((object_t*)0)->nodeprefix next), "offset fits in uint16_t") ; return (uint16_t) (uintptr_t) & (((object_t*)0)->nodeprefix next) ; } static inline dlist_node_t * asnode##_fsuffix(object_t * object) { static_assert(&(((object_t*)0)->nodeprefix next) == (dlist_node_t**)((uintptr_t)nodeoffset##_fsuffix()), "correct type") ; static_assert(&(((object_t*)0)->nodeprefix prev) == (dlist_node_t**)(nodeoffset##_fsuffix() + sizeof(dlist_node_t*)), "correct type and offset") ; return (dlist_node_t *) ((uintptr_t)object + nodeoffset##_fsuffix()) ; } static inline object_t * asobject##_fsuffix(dlist_node_t * node) { return (object_t *) ((uintptr_t)node - nodeoffset##_fsuffix()) ; } static inline object_t * asobjectnull##_fsuffix(dlist_node_t * node) { return node ? (object_t *) ((uintptr_t)node - nodeoffset##_fsuffix()) : 0 ; } static inline void init##_fsuffix(dlist_t * list) { init_dlist(list) ; } static inline int free##_fsuffix(dlist_t * list, struct typeadapt_t * typeadp) { return free_dlist(list, nodeoffset##_fsuffix(), typeadp) ; } static inline int isempty##_fsuffix(const dlist_t * list) { return isempty_dlist(list) ; } static inline object_t * first##_fsuffix(const dlist_t * list) { return asobjectnull##_fsuffix(first_dlist(list)) ; } static inline object_t * last##_fsuffix(const dlist_t * list) { return asobjectnull##_fsuffix(last_dlist(list)) ; } static inline object_t * next##_fsuffix(object_t * node) { return asobject##_fsuffix(next_dlist(asnode##_fsuffix(node))) ; } static inline object_t * prev##_fsuffix(object_t * node) { return asobject##_fsuffix(prev_dlist(asnode##_fsuffix(node))) ; } static inline bool isinlist##_fsuffix(object_t * node) { return isinlist_dlist(asnode##_fsuffix(node)) ; } static inline void insertfirst##_fsuffix(dlist_t * list, object_t * new_node) { insertfirst_dlist(list, asnode##_fsuffix(new_node)) ; } static inline void insertlast##_fsuffix(dlist_t * list, object_t * new_node) { insertlast_dlist(list, asnode##_fsuffix(new_node)) ; } static inline void insertafter##_fsuffix(dlist_t * list, object_t * prev_node, object_t * new_node) { insertafter_dlist(list, asnode##_fsuffix(prev_node), asnode##_fsuffix(new_node)) ; } static inline void insertbefore##_fsuffix(object_t * next_node, object_t * new_node) { insertbefore_dlist(asnode##_fsuffix(next_node), asnode##_fsuffix(new_node)) ; } static inline int removefirst##_fsuffix(dlist_t * list, object_t ** removed_node) { int err = removefirst_dlist(list, (dlist_node_t**)removed_node) ; if (!err) *removed_node = asobject##_fsuffix(*(dlist_node_t**)removed_node) ; return err ; } static inline int removelast##_fsuffix(dlist_t * list, object_t ** removed_node) { int err = removelast_dlist(list, (dlist_node_t**)removed_node) ; if (!err) *removed_node = asobject##_fsuffix(*(dlist_node_t**)removed_node) ; return err ; } static inline int remove##_fsuffix(dlist_t * list, object_t * node) { return remove_dlist(list, asnode##_fsuffix(node)) ; } static inline void replacenode##_fsuffix(dlist_t * list, object_t * newnode, object_t * oldnode) { replacenode_dlist(list, asnode##_fsuffix(newnode), asnode##_fsuffix(oldnode)) ; } static inline int removeall##_fsuffix(dlist_t * list, struct typeadapt_t * typeadp) { return removeall_dlist(list, nodeoffset##_fsuffix(), typeadp) ; } static inline void transfer##_fsuffix(dlist_t * tolist, dlist_t * fromlist) { transfer_dlist(tolist, fromlist) ; } static inline int initfirst##_fsuffix##iterator(dlist_iterator_t * iter, dlist_t * list) { return initfirst_dlistiterator(iter, list) ; } static inline int initlast##_fsuffix##iterator(dlist_iterator_t * iter, dlist_t * list) { return initlast_dlistiterator(iter, list) ; } static inline int free##_fsuffix##iterator(dlist_iterator_t * iter) { return free_dlistiterator(iter) ; } static inline bool next##_fsuffix##iterator(dlist_iterator_t * iter, object_t ** node) { bool isNext = next_dlistiterator(iter, (dlist_node_t**)node) ; if (isNext) *node = asobject##_fsuffix(*(dlist_node_t**)node) ; return isNext ; } static inline bool prev##_fsuffix##iterator(dlist_iterator_t * iter, object_t ** node) { bool isNext = prev_dlistiterator(iter, (dlist_node_t**)node) ; if (isNext) *node = asobject##_fsuffix(*(dlist_node_t**)node) ; return isNext ; }
Implements dlist_t.dlist_IMPLEMENT.
void dlist_IMPLEMENT(IDNAME _fsuffix,
TYPENAME object_t,
IDNAME nodeprefix) ;
Generates interface of double linked list storing elements of type object_t.
Implements interface to manage wlistentry_t in a double linked list of type dlist_t.
#define dlist_INIT { (void*)0 }
Static initializer.
#define dlist_INIT_LAST(lastnode) { (lastnode) }
Static initializer.
#define dlist_iterator_FREE { 0, 0 }
Static initializer.
#define dlist_node_INIT { 0, 0 }
Static initializer.
#define eglconfig_FREE 0
Static initializer.
#define eglcontext_FREE 0
Static initializer.
#define egldisplay_FREE 0
Static initializer.
#define eglpbuffer_FREE 0
Static initializer.
#define eglwindow_FREE 0
Static initializer.
#define emptycache_pagecache(
   pgcache
) ((pgcache).iimpl->emptycache((pgcache).object))
Implements pagecache_t.emptycache_pagecache.
#define EMPTYCACHE_PAGECACHE() (emptycache_pagecache(pagecache_maincontext()))
Returns unused memory blocks back to OS.
#define errcode_testerrortimer(errtimer) ((errtimer)->errcode)
Implements test_errortimer_t.errcode_testerrortimer.
#define error_maincontext() (pcontext_maincontext()->error)
Implementation of maincontext_t.error_maincontext.
#define errorcontext_FREE { 0, 0 }
Static initializer.
#define errorcontext_INIT_STATIC { g_errorcontext_stroffset, g_errorcontext_strdata }
Static initializer used in processcontext_INIT_STATIC.
#define EVENADDRESS(node) ((1u & (uintptr_t)(node)) == 0)
Test for node having an even address (bit 0 is clear).
#define event_syncwait(syncwait) ((syncwait)->event)
Implements syncwait_t.event_syncwait.
#define exitthread_syncrun(
   srun,
   err
) do { setstateexit_syncrun(srun) ; return err ; } while (0)
Implements syncrun_t.exitthread_syncrun.
#define expmax_decimal(dec) ((int32_t)INT16_MAX * digitsperint_decimal())
Implements decimal_t.expmax_decimal.
#define exponent_bigint(big) ((big)->exponent)
Implements bigint_t.exponent_bigint.
#define exponent_decimal(
   dec
) ((int32_t)(dec)->exponent * digitsperint_decimal())
Implements decimal_t.exponent_decimal.
#define exthash_FREE { 0, 0, typeadapt_member_FREE, 0, 0}
Static initializer.
#define exthash_IMPLEMENT(
   _fsuffix,
   object_t,
   key_t,
   nodename
) typedef exthash_iterator_t iteratortype##_fsuffix ; typedef object_t * iteratedtype##_fsuffix ; static inline int initfirst##_fsuffix##iterator(exthash_iterator_t * iter, exthash_t * htable) __attribute__ ((always_inline)) ; static inline int free##_fsuffix##iterator(exthash_iterator_t * iter) __attribute__ ((always_inline)) ; static inline bool next##_fsuffix##iterator(exthash_iterator_t * iter, object_t ** node) __attribute__ ((always_inline)) ; static inline int init##_fsuffix(/*out*/exthash_t * htable, size_t initial_size, size_t max_size, const typeadapt_member_t * nodeadp) __attribute__ ((always_inline)) ; static inline int free##_fsuffix(exthash_t * htable) __attribute__ ((always_inline)) ; static inline bool isempty##_fsuffix(const exthash_t * htable) __attribute__ ((always_inline)) ; static inline size_t nrelements##_fsuffix(const exthash_t * htable) __attribute__ ((always_inline)) ; static inline int find##_fsuffix(exthash_t * htable, const key_t key, /*out*/object_t ** found_node) __attribute__ ((always_inline)) ; static inline int insert##_fsuffix(exthash_t * htable, object_t * new_node) __attribute__ ((always_inline)) ; static inline int remove##_fsuffix(exthash_t * htable, object_t * node) __attribute__ ((always_inline)) ; static inline int removenodes##_fsuffix(exthash_t * htable) __attribute__ ((always_inline)) ; static inline int invariant##_fsuffix(exthash_t * htable) __attribute__ ((always_inline)) ; static inline exthash_node_t * asnode##_fsuffix(object_t * object) { static_assert(&((object_t*)0)->nodename == (exthash_node_t*)offsetof(object_t, nodename), "correct type") ; return (exthash_node_t *) ((uintptr_t)object + offsetof(object_t, nodename)) ; } static inline object_t * asobject##_fsuffix(exthash_node_t * node) { return (object_t *) ((uintptr_t)node - offsetof(object_t, nodename)) ; } static inline int init##_fsuffix(/*out*/exthash_t * htable, size_t initial_size, size_t max_size, const typeadapt_member_t * nodeadp) { return init_exthash(htable, initial_size, max_size, nodeadp) ; } static inline int free##_fsuffix(exthash_t * htable) { return free_exthash(htable) ; } static inline bool isempty##_fsuffix(const exthash_t * htable) { return isempty_exthash(htable) ; } static inline size_t nrelements##_fsuffix(const exthash_t * htable) { return nrelements_exthash(htable) ; } static inline int find##_fsuffix(exthash_t * htable, const key_t key, /*out*/object_t ** found_node) { int err = find_exthash(htable, (void*)key, (exthash_node_t**)found_node) ; if (err == 0) *found_node = asobject##_fsuffix(*(exthash_node_t**)found_node) ; return err ; } static inline int insert##_fsuffix(exthash_t * htable, object_t * new_node) { return insert_exthash(htable, asnode##_fsuffix(new_node)) ; } static inline int remove##_fsuffix(exthash_t * htable, object_t * node) { int err = remove_exthash(htable, asnode##_fsuffix(node)) ; return err ; } static inline int removenodes##_fsuffix(exthash_t * htable) { return removenodes_exthash(htable) ; } static inline int invariant##_fsuffix(exthash_t * htable) { return invariant_exthash(htable) ; } static inline int initfirst##_fsuffix##iterator(exthash_iterator_t * iter, exthash_t * htable) { return initfirst_exthashiterator(iter, htable) ; } static inline int free##_fsuffix##iterator(exthash_iterator_t * iter) { return free_exthashiterator(iter) ; } static inline bool next##_fsuffix##iterator(exthash_iterator_t * iter, object_t ** node) { bool isNext = next_exthashiterator(iter, (exthash_node_t**)node) ; if (isNext) *node = asobject##_fsuffix(*(exthash_node_t**)node) ; return isNext ; }
Implements exthash_t.exthash_IMPLEMENT.
void exthash_IMPLEMENT(IDNAME _fsuffix,
TYPENAME object_t,
TYPENAME key_t,
IDNAME nodename) ;
Adapts interface of exthash_t to nodes of type object_t.
#define exthash_iterator_FREE { 0, 0, 0 }
Static initializer.
#define exthash_node_INIT lrptree_node_INIT
Static initializer.
Close