P99
|
Go to the source code of this file.
Macros | |
#define | P99_AVALUE(X, ...) |
For a pointer or array expression X return the underlying array. More... | |
#define | P99_DECLARE_INLINE_EXPRESSION(EXT, BASE, EXP, ...) |
Declare an inline function of basename BASE for expression EXP, applied to the builtin type EXT. More... | |
#define | P99_DECLARE_INLINE_EXPRESSIONS(NEPL, ...) |
Declare a whole bunch of inline functions of basename BASE for expression EXP , applied to the builtin types as given in the argument list. More... | |
#define | P99_FORMAT(...) |
#define | P99_FORMATS(...) P99_SEQ(P99_FORMAT, __VA_ARGS__) |
#define | P99_FPRINTF(F, FORMAT, ...) fprintf(F, FORMAT, P99_FORMATS(__VA_ARGS__)) |
#define | P99_GEN_ABS(A) P99_GEN_EXPR(abs, ((A) >= 0) ? (A) : -(A), P99_STD_REAL_EXTS)(A) |
#define | P99_GEN_EXPR(BASE, EXPR, ...) |
Produce a type generic expression that can be used as if it were an inline function. More... | |
#define | P99_GEN_MAX(A, B) |
#define | P99_GEN_MIN(A, B) |
#define | P99_GEN_SIN(A) P99_GEN_EXPR(sin, (A), P99_STD_FLOATING_EXTS)(A) |
Type generic macro to compute the sine of A. More... | |
#define | P99_GENERIC(...) |
Type generic expression in anticipation of C11 _Generic . More... | |
#define | P99_GENERIC_INTEGRAL_CONSTANT(EXP, TRUE, FALSE) |
#define | P99_GENERIC_LIT(...) |
For each generic choice return a compound literal of the chosen type. More... | |
#define | P99_GENERIC_NULLPTR(PEXP, TRUE, FALSE) |
#define | P99_GENERIC_NULLPTR_CONSTANT(PEXP, TRUE, FALSE) |
#define | P99_GENERIC_NULLPTR_CONSTANT_(PEXP, TRUE, FALSE) |
#define | P99_GENERIC_PCONST(PEXP, NCONST, CONST) |
Generic choice based on the qualification of the target of a pointer expression. More... | |
#define | P99_GENERIC_PCONSTVOLATILE(PEXP, NON, FULL) |
Generic choice based on the qualification of the target of a pointer expression. More... | |
#define | P99_GENERIC_PQUALIFIED(PEXP, ...) |
Generic choice based on the qualification of the target of a pointer expression. More... | |
#define | P99_GENERIC_PVOLATILE(PEXP, NVOLATILE, VOLATILE) |
Generic choice based on the qualification of the target of a pointer expression. More... | |
#define | P99_GENERIC_SIZE(UI, ...) |
Similar to P99_GENERIC but the choice is not according to the type of the expression UI but to its unsigned value. More... | |
#define | P99_GENERIC_SIZE_LIT(UI, ...) |
Similar to P99_GENERIC_SIZE but returns a compound literal of the chosen type. More... | |
#define | P99_GENERIC_TCONST(T, NCONST, CONST) P99_GENERIC_PCONST((&(T)P99_INIT), NCONST, CONST) |
Generic choice based on the qualification of a type expression. More... | |
#define | P99_GENERIC_TCONSTVOLATILE(T, NON, FULL) P99_GENERIC_PCONSTVOLATILE((&(T)P99_INIT), NON, FULL) |
Generic choice based on the qualification of a type expression. More... | |
#define | P99_GENERIC_TQUALIFIED(T, ...) P99_GENERIC_PQUALIFIED((&(T)P99_INIT), ...) |
Generic choice based on the qualification of a type expression. More... | |
#define | P99_GENERIC_TVOLATILE(T, NVOLATILE, VOLATILE) P99_GENERIC_PVOLATILE((&(T)P99_INIT), NVOLATILE, VOLATILE) |
Generic choice based on the qualification of a type expression. More... | |
#define | P99_IN_RANGE(R, S, L) P00_IN_RANGE((R), (S), (L), P00_IN_RANGE_LIST()) |
check if R is in the range [S, S + L) More... | |
#define | P99_IS_INTEGRAL_CONSTANT(EXP) P99_GENERIC_INTEGRAL_CONSTANT((EXP), true, false) |
Test if the expression EXP is an integral constant in the sense of the C standard. More... | |
#define | P99_IS_NULLPTR(PEXP) P99_GENERIC_NULLPTR((PEXP), true, false) |
Test if the expression EXP is a null pointer in the sense of the C standard. More... | |
#define | P99_IS_NULLPTR_CONSTANT(PEXP) P99_GENERIC_NULLPTR_CONSTANT((PEXP), true, false) |
Test if the expression PEXP is a null pointer constant in the sense of the C standard. More... | |
#define | P99_OBJLEN(X, ...) |
For a pointer or array expression X return the length of the underlying array object. More... | |
#define | P99_OBJSIZE(X, ...) |
For a pointer or array expression X return the size of the underlying object. More... | |
#define | P99_OVALUE(X, ...) |
For a pointer or array expression X return the underlying object. More... | |
#define | P99_PRINTF(FORMAT, ...) printf(FORMAT, P99_FORMATS(__VA_ARGS__)) |
#define | P99_SIZE_CHOICE(UI, YES, NO, ...) |
Classify expression UI according to its value and return YES if the value is in the list and NO, otherwise. More... | |
#define | P99_SIZE_INDICATOR(UI, ...) |
Classify expression UI according to its value and return 1 if the value is in the list and 0 , otherwise. More... | |
#define | P99_SNPRINTF(S, N, FORMAT, ...) snprintf(S, N, FORMAT, P99_FORMATS(__VA_ARGS__)) |
#define | P99_SPRINTF(S, FORMAT, ...) sprintf(S, FORMAT, P99_FORMATS(__VA_ARGS__)) |
#define | P99_TYPE_ARITHMETIC(EXP) P99_TYPE_CHOICE((EXP), 1, 0, P99_STD_ARITHMETIC_TYPES) |
#define | P99_TYPE_BASIC(EXP) P99_TYPE_CHOICE((EXP), 1, 0, P99_STD_BASIC_TYPES) |
#define | P99_TYPE_CHARACTER(EXP) P99_TYPE_CHOICE((EXP), 1, 0, P99_STD_CHARACTER_TYPES) |
#define | P99_TYPE_CHOICE(EXP, YES, NO, ...) |
Classify expression EXP according to its type and return YES if the type is in the list and NO, otherwise. More... | |
#define | P99_TYPE_COMPLEX(EXP) P99_TYPE_CHOICE((EXP), 1, 0, P99_STD_COMPLEX_TYPES) |
#define | P99_TYPE_FLOATING(EXP) P99_TYPE_CHOICE((EXP), 1, 0, P99_STD_FLOATING_TYPES) |
#define | P99_TYPE_INTEGER(EXP) P99_TYPE_CHOICE((EXP), 1, 0, P99_STD_INTEGER_TYPES) |
#define | P99_TYPE_REAL(EXP) P99_TYPE_CHOICE((EXP), 1, 0, P99_STD_REAL_TYPES) |
#define | P99_TYPE_REAL_FLOATING(EXP) P99_TYPE_CHOICE((EXP), 1, 0, P99_STD_REAL_FLOATING_TYPES) |
#define | P99_TYPE_SIGNED(EXP) P99_TYPE_CHOICE((EXP), 1, 0, P99_STD_SIGNED_TYPES) |
#define | P99_TYPE_UNSIGNED(EXP) P99_TYPE_CHOICE((EXP), 1, 0, P99_STD_UNSIGNED_TYPES) |
#define | P99_TYPED_TERN(COND, YES, NO) |
A compile time ternary operator that is analogous to COND ? YES : NO that keeps the type of the chosen expression. More... | |
Functions | |
void | P99_PASTEP00_ARG (p00_harmless_declaration_, P00_SPRINT_DEFINE, uchar, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,)(p00_harmless_declaration_ |
void | P99_PASTEP00_ARG (p00_harmless_declaration_, P00_SPRINT_DEFINE, ullong, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,)(p00_harmless_declaration_ |
void | P99_PASTEP00_ARG (p00_harmless_declaration_, P00_SPRINT_DEFINE, ulong, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,)(p00_harmless_declaration_ |
void | P99_PASTEP00_ARG (p00_harmless_declaration_, P00_SPRINT_DEFINE, unsigned, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,)(p00_harmless_declaration_ |
void | P99_PASTEP00_ARG (p00_harmless_declaration_, P00_SPRINT_DEFINE, ushort, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,)(p00_harmless_declaration_ |
void | uchar (void) |
void | ullong (void) |
void | ulong (void) |
void | unsigned (void) |
void | ushort (void) |