![]() |
Libmacro
0.2
Libmacro is an extensible macro and hotkey library.
|
Library-wide and utility definitions. More...
Go to the source code of this file.
Macros | |
| #define | reterr int |
| #define | retind size_t |
| #define | retid size_t |
| #define | retcmp int |
| #define | opt |
| #define | ctor |
| #define | dtor |
| #define | mcr_cpp_only |
| #define | mcr_platform |
| #define | mcr_future |
| #define | MCR_PLATFORM_DEFINES_H |
| #define | MCR_EXPORT __attribute__((visibility("default"))) |
| #define | MCR_IMPORT __attribute__((visibility("default"))) |
| #define | MCR_API MCR_IMPORT |
| #define | MCR_INLINE inline |
| #define | MCR_STR_HELPER(x) #x |
| #define | MCR_STR(x) MCR_STR_HELPER(x) |
| #define | MCR_EXP_HELPER(x) x |
| #define | MCR_EXP(x) MCR_EXP_HELPER(x) |
| #define | MCR_TOKEN_HELPER(x, y) x ##y |
| #define | MCR_SNAKE_HELPER(x, y) x ##_ ##y |
| #define | MCR_TOKEN(x, y) MCR_TOKEN_HELPER(x, y) |
| #define | MCR_SNAKE(x, y) MCR_SNAKE_HELPER(x, y) |
| #define | MCR_LINE __FILE__ "(" MCR_STR(__LINE__) ")" |
| #define | MCR_PLATFORM none |
| #define | UNUSED(x) ((void)(x)) |
| #define | MCR_CMP(lhs, rhs) (((lhs) > (rhs)) - ((lhs) < (rhs))) |
| #define | MCR_CMP_CAST(casting, lhs, rhs) MCR_CMP(casting(lhs), casting(rhs)) |
| #define | MCR_CMP_PTR(T, lhsPtr, rhsPtr) |
| #define | MCR_OFFSET(structDecl, memberName, outSizeVariable) |
| #define | mcr_cast(T, obj) ((T)(obj)) |
| #define | mcr_castpt(T, obj) ((T *)(obj)) |
| #define | mcr_null NULL |
| #define | mcr_ddo(stuff) {} |
| #define | mcr_ifdo(fnPtr, ...) |
| #define | mcr_ifreturndo(fnPtr, ...) |
| #define | mcr_dprint(...) mcr_ddo(printf(__VA_ARGS__)) |
| #define | mcr_dexit mcr_ddo({ mcr_dmsg; exit(mcr_err); }) |
| #define | mcr_dmsg |
| #define | mcr_dassert(expression) mcr_ddo(assert(expression)) |
| #define | mcr_arrlen(arr) (sizeof(arr) / sizeof(*(arr))) |
| #define | mcr_errno(fallbackError) |
| #define | mcr_error_return |
| #define | mcr_error_set(errorNumber) |
| #define | mcr_error_set_return(errorNumber) |
| #define | ZERO(inst) memset(&(inst), 0, sizeof(inst)) |
| #define | ZERO_PTR(ptr) memset(ptr, 0, sizeof(*(ptr))) |
| #define | dmsg mcr_dmsg |
| #define | dassert(expr) mcr_dassert(expr) |
| #define | arrlen(arr) mcr_arrlen(arr) |
| #define | mset_error(errorNumber) mcr_error_set(errorNumber) |
| #define | error_set_return(errorNumber) mcr_error_set_return(errorNumber) |
| #define | MCR_MOD_ANY ((unsigned int) ~0) |
| #define | MCR_THREAD_MAX 0x10 |
| #define | MCR_MACRO_JOIN_TIMEOUT 2 |
| #define | MCR_MAX_PAUSE_COUNT 5 |
| #define | MCR_HIDECHO_ANY mcr_cast(size_t, ~0) |
| #define | MCR_KEY_ANY mcr_cast(int, 0) |
| #define | mcr_throwif(condition, errorNumber) |
| #define | mcr_assert_receive_function(receiver, receiveFnc) |
| #define | MCR_DECL_INTERFACE(className) |
| #define | MCR_PLATFORM_H MCR_STR(mcr/MCR_PLATFORM/p_libmacro.h) |
Library-wide and utility definitions.
Definition in file defines.h.
| #define arrlen | ( | arr | ) | mcr_arrlen(arr) |
| #define ctor |
| #define dassert | ( | expr | ) | mcr_dassert(expr) |
| #define dtor |
| #define error_set_return | ( | errorNumber | ) | mcr_error_set_return(errorNumber) |
| #define mcr_arrlen | ( | arr | ) | (sizeof(arr) / sizeof(*(arr))) |
| #define mcr_assert_receive_function | ( | receiver, | |
| receiveFnc | |||
| ) |
mcr_DispatchReceiver must have a valid receiver function, and known receiver functions also require an object to receive. mcr_cpp_only
| #define mcr_cast | ( | T, | |
| obj | |||
| ) | ((T)(obj)) |
| #define MCR_CMP | ( | lhs, | |
| rhs | |||
| ) | (((lhs) > (rhs)) - ((lhs) < (rhs))) |
| #define MCR_CMP_CAST | ( | casting, | |
| lhs, | |||
| rhs | |||
| ) | MCR_CMP(casting(lhs), casting(rhs)) |
| #define MCR_CMP_PTR | ( | T, | |
| lhsPtr, | |||
| rhsPtr | |||
| ) |
Integral comparison of pointers with built-in casting
If either pointer is null the pointer addresses are compared.
| T | Native type each pointer is pointing to. e.g. if comparing pointers to integers T should be int. If either pointer is const then T must also be const. e.g. const int |
| lhsPtr | Pointer to left side comparison |
| rhsPtr | Pointer to right side comparison |
| #define mcr_dassert | ( | expression | ) | mcr_ddo(assert(expression)) |
| #define MCR_DECL_INTERFACE | ( | className | ) |
| #define mcr_dexit mcr_ddo({ mcr_dmsg; exit(mcr_err); }) |
| #define mcr_dmsg |
Automated error message of mcr_errno.
Print to stderr for only debug builds.
| #define mcr_dprint | ( | ... | ) | mcr_ddo(printf(__VA_ARGS__)) |
| #define mcr_errno | ( | fallbackError | ) |
| #define mcr_error_return |
| #define mcr_error_set | ( | errorNumber | ) |
| #define mcr_error_set_return | ( | errorNumber | ) |
| #define MCR_EXP | ( | x | ) | MCR_EXP_HELPER(x) |
Expand macros: e.g. MCR_EXP(myMacro) => myMacroExpanded
| #define mcr_future |
| #define MCR_HIDECHO_ANY mcr_cast(size_t, ~0) |
| #define mcr_ifdo | ( | fnPtr, | |
| ... | |||
| ) |
| #define mcr_ifreturndo | ( | fnPtr, | |
| ... | |||
| ) |
| #define MCR_KEY_ANY mcr_cast(int, 0) |
| #define MCR_LINE __FILE__ "(" MCR_STR(__LINE__) ")" |
| #define MCR_MACRO_JOIN_TIMEOUT 2 |
| #define MCR_MAX_PAUSE_COUNT 5 |
| #define MCR_MOD_ANY ((unsigned int) ~0) |
| #define MCR_OFFSET | ( | structDecl, | |
| memberName, | |||
| outSizeVariable | |||
| ) |
Get the bytes offset of a member of a struct.
| structDecl | Type |
| memberName | Name of member |
| outSizeVariable | size_t Byte size offset output |
| #define mcr_platform |
| #define MCR_PLATFORM_DEFINES_H |
| #define MCR_SNAKE | ( | x, | |
| y | |||
| ) | MCR_SNAKE_HELPER(x, y) |
MCR_SNAKE(myString, myString2) => myString_myString2
| #define MCR_STR | ( | x | ) | MCR_STR_HELPER(x) |
Stringify, or create a string. e.g. MCR_STR(myString) => "myString"
| #define MCR_THREAD_MAX 0x10 |
| #define mcr_throwif | ( | condition, | |
| errorNumber | |||
| ) |
If true, print a file+line message and throw the error.
mcr_cpp_only Will not set mcr_err, as thrown errors should be handled with catch. Only use in C+, because of throw.
| #define MCR_TOKEN | ( | x, | |
| y | |||
| ) | MCR_TOKEN_HELPER(x, y) |
MCR_TOKEN(MyString, MyString2) => MyStringMyString2
| #define mset_error | ( | errorNumber | ) | mcr_error_set(errorNumber) |
| #define retcmp int |
| #define reterr int |