P99
Macros | Typedefs | Functions
p99_tp.h File Reference
#include "p99_enum.h"
#include "p99_generic.h"
#include "p99_atomic.h"
+ Include dependency graph for p99_tp.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define P99_REF_ACCOUNT(REF)
 
#define P99_REF_DISCOUNT(REF, DELETE)
 
#define P99_TP(T)   P99_PASTE2(p00_tp_, T)
 
#define P99_TP_DECLARE(T)
 
#define P99_TP_GET(TP)
 
#define p99_tp_init(EL, VAL)
 
#define P99_TP_INITIALIZER(VAL)   { .p00_tp = P00_TP_INITIALIZER(VAL), }
 
#define P99_TP_REF_ACCOUNT(TP, REF)
 
#define P99_TP_REF_DECLARE(T)
 
#define P99_TP_REF_DEFINE(T)
 
#define P99_TP_REF_DESTROY(TP, DELETE)   (void)P99_REF_DISCOUNT(P99_TP_XCHG((TP), 0), (DELETE))
 
#define P99_TP_REF_FUNCTIONS(T)
 
#define P99_TP_REF_INIT(...)
 
#define P99_TP_REF_INITIALIZER(VAL, ACCOUNT)   P99_TP_INITIALIZER(P99_GENERIC_NULLPTR_CONSTANT(VAL, (void*)0, ACCOUNT(VAL)))
 
#define P99_TP_REF_MV(TP, SP, DELETE)   P99_REF_DISCOUNT(P99_TP_XCHG((TP), P99_TP_XCHG((SP), 0)), (DELETE))
 
#define P99_TP_REF_REPLACE(TP, SP, DELETE)   P99_REF_DISCOUNT(P99_TP_XCHG((TP), P99_REF_ACCOUNT(SP)), (DELETE))
 
#define P99_TP_STATE(T)   P99_PASTE2(p00_tp_glue_, T)
 
#define P99_TP_STATE_CHECK(TPS)
 
#define P99_TP_STATE_COMMIT(TPS)
 
#define P99_TP_STATE_GET(TPS)
 
#define P99_TP_STATE_INITIALIZER(TP, P)
 
#define P99_TP_STATE_SET(TPS, P)
 
#define P99_TP_STATE_TYPE(TPS)   __typeof__(*(TPS)->p00_dum)
 
#define P99_TP_TYPE(TP)   __typeof__(*(TP)->p00_dum)
 
#define P99_TP_TYPE_STATE(TP)   __typeof__(*(TP)->p00_mud)
 
#define P99_TP_XCHG(TP, VAL)
 

Typedefs

typedef struct p99_tp p99_tp
 
typedef struct p99_tp_state p99_tp_state
 

Functions

 P99_DECLARE_THREAD_LOCAL (uintptr_t volatile, p00_tp_tick)
 
void
void void
Definition: p99_bitset.h:84
P99_LIKELY
#define P99_LIKELY(...)
Mark the conditional expression as being likely.
Definition: p99_compiler.h:1010
p99_extension
#define p99_extension
Mark an expression as using a compiler extension.
Definition: p99_compiler.h:210
P99_TP_TYPE_STATE
#define P99_TP_TYPE_STATE(TP)
P99_PASTE2
#define P99_PASTE2(_1, _2)
Paste two token sequences at their junction.
Definition: p99_paste.h:82
P99_TP_STATE_TYPE
#define P99_TP_STATE_TYPE(TPS)
p99_tp_state
struct p99_tp_state p99_tp_state
Definition: p99_tp.h:93
P99_NARG
#define P99_NARG(...)
Return the length of the variable length argument list, where an empty argument list is considered to...
Definition: p99_args.h:117
P99_INIT
#define P99_INIT
A catch all 0-initializer.
Definition: p99_int.h:1065
P99_IF_LT
#define P99_IF_LT(A, B)
Test two decimal numbers A and B for whether A is strictly less than B.
Definition: p99_if.h:120
P99_INSTANTIATE
#define P99_INSTANTIATE(RT, NAME,...)
Instantiate an inline function.
Definition: p99_defarg.h:241
P99_TP_STATE
#define P99_TP_STATE(T)
P99_TP_TYPE
#define P99_TP_TYPE(TP)
P99_TP
#define P99_TP(T)