Table of Contents
- ENUMERATIONS: quick and clean enum macro set
- Defines
- Macros Documentation
- define __N_ENUM_MACRO_ENTRY_UNKNOWN_VALUE
- define __N_ENUM_MACRO_ENTRY_TO_TOSTRING_CASE
- define __N_ENUM_MACRO_ENTRY_TO_ISVALID_CASE
- define __N_ENUM_MACRO_ENTRY_TO_ISSTRINGVALID_COMPARE
- define __N_ENUM_MACRO_ENTRY_TO_FROMSTRING_COMPARE_EX
- define __N_ENUM_MACRO_ENTRY_TO_FROMSTRING_COMPARE
- define __N_ENUM_MACRO_ENTRY_TO_ENUM_ELEMENT
- define __N_ENUM_MACRO_ENTRY_COMPARE_EX
- define __N_ENUM_MACRO_ENTRY_COMPARE
- define __N_ENUM_MACRO_ENTRY_CASE
- define __N_ENUM_FUNCTION_TOSTRING
- define __N_ENUM_FUNCTION_ISVALID
- define __N_ENUM_FUNCTION_ISSTRINGVALID
- define __N_ENUM_FUNCTION_FROMSTRING_EX
- define __N_ENUM_FUNCTION_FROMSTRING
- define __N_ENUM_DEFINE_FUNCTION_TOSTRING
- define __N_ENUM_DEFINE_FUNCTION_ISVALID
- define __N_ENUM_DEFINE_FUNCTION_ISSTRINGVALID
- define __N_ENUM_DEFINE_FUNCTION_FROMSTRING_EX
- define __N_ENUM_DEFINE_FUNCTION_FROMSTRING
- define __N_ENUM_DECLARE_FUNCTION
- define __N_ENUM_DECLARE_ENUM
- define N_ENUM_ENTRY
- define N_ENUM_DEFINE
- define N_ENUM_DECLARE
ENUMERATIONS: quick and clean enum macro set
Defines
| Name | |
|---|---|
| __N_ENUM_MACRO_ENTRY_UNKNOWN_VALUE(enum_name) utils macros unknown value |
|
| __N_ENUM_MACRO_ENTRY_TO_TOSTRING_CASE(element_name, element_value) macro to convert N_ENUMS entry to a string element |
|
| __N_ENUM_MACRO_ENTRY_TO_ISVALID_CASE(element_name, element_value) macro to test N_ENUMS entry |
|
| __N_ENUM_MACRO_ENTRY_TO_ISSTRINGVALID_COMPARE(element_name, element_value) macro to test if the string is a valid enum entry |
|
| __N_ENUM_MACRO_ENTRY_TO_FROMSTRING_COMPARE_EX(element_name, element_value) macro to convert string to N_ENUMS value |
|
| __N_ENUM_MACRO_ENTRY_TO_FROMSTRING_COMPARE(element_name, element_value) macro to convert string to N_ENUMS value |
|
| __N_ENUM_MACRO_ENTRY_TO_ENUM_ELEMENT(element_name, element_value) macro to convert N_ENUMS entry to a real ENUM element |
|
| __N_ENUM_MACRO_ENTRY_COMPARE_EX(element_name) utils macros string ex compare. |
|
| __N_ENUM_MACRO_ENTRY_COMPARE(element_name) utils macros string compare |
|
| __N_ENUM_MACRO_ENTRY_CASE(element_name) utils macro case value |
|
| __N_ENUM_FUNCTION_TOSTRING(enum_name) create a to string function |
|
| __N_ENUM_FUNCTION_ISVALID(enum_name) create a test function |
|
| __N_ENUM_FUNCTION_ISSTRINGVALID(enum_name) create a is string valid function |
|
| __N_ENUM_FUNCTION_FROMSTRING_EX(enum_name) create a value from string function |
|
| __N_ENUM_FUNCTION_FROMSTRING(enum_name) create a value from string function |
|
| __N_ENUM_DEFINE_FUNCTION_TOSTRING(MACRO_DEFINITION, enum_name) create getter functions toString |
|
| __N_ENUM_DEFINE_FUNCTION_ISVALID(MACRO_DEFINITION, enum_name) create getter functions is_valid |
|
| __N_ENUM_DEFINE_FUNCTION_ISSTRINGVALID(MACRO_DEFINITION, enum_name) create getter for function isStringValue |
|
| __N_ENUM_DEFINE_FUNCTION_FROMSTRING_EX(MACRO_DEFINITION, enum_name) create getter functions fromStringEx |
|
| __N_ENUM_DEFINE_FUNCTION_FROMSTRING(MACRO_DEFINITION, enum_name) create getter functions fromString |
|
| __N_ENUM_DECLARE_FUNCTION(__N_ENUM_FUNCTION, enum_name) create a getter function |
|
| __N_ENUM_DECLARE_ENUM(MACRO_DEFINITION, enum_name) macro for ENUM declaration |
|
| N_ENUM_ENTRY(class, method) helper to build an N_ENUM |
|
| N_ENUM_DEFINE(MACRO_DEFINITION, enum_name) Macro to define an N_ENUM. |
|
| N_ENUM_DECLARE(MACRO_DEFINITION, enum_name) Macro to declare a N_ENUM. |
Macros Documentation
define __N_ENUM_MACRO_ENTRY_UNKNOWN_VALUE
#define __N_ENUM_MACRO_ENTRY_UNKNOWN_VALUE(
enum_name
)
__##enum_name##_UNKNOWN_VALUE__
utils macros unknown value
define __N_ENUM_MACRO_ENTRY_TO_TOSTRING_CASE
#define __N_ENUM_MACRO_ENTRY_TO_TOSTRING_CASE(
element_name,
element_value
)
__N_ENUM_MACRO_ENTRY_CASE(element_name) \
return #element_name;
macro to convert N_ENUMS entry to a string element
define __N_ENUM_MACRO_ENTRY_TO_ISVALID_CASE
#define __N_ENUM_MACRO_ENTRY_TO_ISVALID_CASE(
element_name,
element_value
)
__N_ENUM_MACRO_ENTRY_CASE(element_name) \
return true;
macro to test N_ENUMS entry
define __N_ENUM_MACRO_ENTRY_TO_ISSTRINGVALID_COMPARE
#define __N_ENUM_MACRO_ENTRY_TO_ISSTRINGVALID_COMPARE(
element_name,
element_value
)
__N_ENUM_MACRO_ENTRY_COMPARE(element_name) \
return true;
macro to test if the string is a valid enum entry
define __N_ENUM_MACRO_ENTRY_TO_FROMSTRING_COMPARE_EX
#define __N_ENUM_MACRO_ENTRY_TO_FROMSTRING_COMPARE_EX(
element_name,
element_value
)
__N_ENUM_MACRO_ENTRY_COMPARE_EX(element_name) \
return element_name;
macro to convert string to N_ENUMS value
define __N_ENUM_MACRO_ENTRY_TO_FROMSTRING_COMPARE
#define __N_ENUM_MACRO_ENTRY_TO_FROMSTRING_COMPARE(
element_name,
element_value
)
__N_ENUM_MACRO_ENTRY_COMPARE(element_name) \
return element_name;
macro to convert string to N_ENUMS value
define __N_ENUM_MACRO_ENTRY_TO_ENUM_ELEMENT
#define __N_ENUM_MACRO_ENTRY_TO_ENUM_ELEMENT(
element_name,
element_value
)
element_name = element_value,
macro to convert N_ENUMS entry to a real ENUM element
define __N_ENUM_MACRO_ENTRY_COMPARE_EX
#define __N_ENUM_MACRO_ENTRY_COMPARE_EX(
element_name
)
if (!strcmp(&(#element_name)[index], str_value))
utils macros string ex compare.
The subscript spelling is deliberate: #element_name + index is the same pointer, but clang reads adding an int to a string literal as a probable "append" mistake and warns (-Wstring-plus-int) at every expansion, which is once per enum entry.
define __N_ENUM_MACRO_ENTRY_COMPARE
#define __N_ENUM_MACRO_ENTRY_COMPARE(
element_name
)
if (!strcmp(#element_name, str_value))
utils macros string compare
define __N_ENUM_MACRO_ENTRY_CASE
#define __N_ENUM_MACRO_ENTRY_CASE(
element_name
)
case element_name:
utils macro case value
define __N_ENUM_FUNCTION_TOSTRING
#define __N_ENUM_FUNCTION_TOSTRING(
enum_name
)
const char* N_ENUM_ENTRY(enum_name, toString)(enum_name value)
create a to string function
define __N_ENUM_FUNCTION_ISVALID
#define __N_ENUM_FUNCTION_ISVALID(
enum_name
)
bool N_ENUM_ENTRY(enum_name, isValid)(enum_name value)
create a test function
define __N_ENUM_FUNCTION_ISSTRINGVALID
#define __N_ENUM_FUNCTION_ISSTRINGVALID(
enum_name
)
bool N_ENUM_ENTRY(enum_name, isStringValid)(const char* str_value)
create a is string valid function
define __N_ENUM_FUNCTION_FROMSTRING_EX
#define __N_ENUM_FUNCTION_FROMSTRING_EX(
enum_name
)
enum_name N_ENUM_ENTRY(enum_name, fromStringEx)(const char* str_value, int index)
create a value from string function
define __N_ENUM_FUNCTION_FROMSTRING
#define __N_ENUM_FUNCTION_FROMSTRING(
enum_name
)
enum_name N_ENUM_ENTRY(enum_name, fromString)(const char* str_value)
create a value from string function
define __N_ENUM_DEFINE_FUNCTION_TOSTRING
#define __N_ENUM_DEFINE_FUNCTION_TOSTRING(
MACRO_DEFINITION,
enum_name
)
__N_ENUM_FUNCTION_TOSTRING(enum_name) { \
switch (value) { \
MACRO_DEFINITION(__N_ENUM_MACRO_ENTRY_TO_TOSTRING_CASE) \
default: \
return 0; \
} \
}
create getter functions toString
define __N_ENUM_DEFINE_FUNCTION_ISVALID
#define __N_ENUM_DEFINE_FUNCTION_ISVALID(
MACRO_DEFINITION,
enum_name
)
__N_ENUM_FUNCTION_ISVALID(enum_name) { \
switch (value) { \
MACRO_DEFINITION(__N_ENUM_MACRO_ENTRY_TO_ISVALID_CASE) \
default: \
return false; \
} \
}
create getter functions is_valid
define __N_ENUM_DEFINE_FUNCTION_ISSTRINGVALID
#define __N_ENUM_DEFINE_FUNCTION_ISSTRINGVALID(
MACRO_DEFINITION,
enum_name
)
__N_ENUM_FUNCTION_ISSTRINGVALID(enum_name) { \
if (!str_value) return false; \
MACRO_DEFINITION(__N_ENUM_MACRO_ENTRY_TO_ISSTRINGVALID_COMPARE) \
return false; \
}
create getter for function isStringValue
define __N_ENUM_DEFINE_FUNCTION_FROMSTRING_EX
#define __N_ENUM_DEFINE_FUNCTION_FROMSTRING_EX(
MACRO_DEFINITION,
enum_name
)
__N_ENUM_FUNCTION_FROMSTRING_EX(enum_name) { \
if (!str_value) return __N_ENUM_MACRO_ENTRY_UNKNOWN_VALUE(enum_name); \
MACRO_DEFINITION(__N_ENUM_MACRO_ENTRY_TO_FROMSTRING_COMPARE_EX) \
return __N_ENUM_MACRO_ENTRY_UNKNOWN_VALUE(enum_name); \
}
create getter functions fromStringEx
define __N_ENUM_DEFINE_FUNCTION_FROMSTRING
#define __N_ENUM_DEFINE_FUNCTION_FROMSTRING(
MACRO_DEFINITION,
enum_name
)
__N_ENUM_FUNCTION_FROMSTRING(enum_name) { \
if (!str_value) return __N_ENUM_MACRO_ENTRY_UNKNOWN_VALUE(enum_name); \
MACRO_DEFINITION(__N_ENUM_MACRO_ENTRY_TO_FROMSTRING_COMPARE) \
return __N_ENUM_MACRO_ENTRY_UNKNOWN_VALUE(enum_name); \
}
create getter functions fromString
define __N_ENUM_DECLARE_FUNCTION
#define __N_ENUM_DECLARE_FUNCTION(
__N_ENUM_FUNCTION,
enum_name
)
__N_ENUM_FUNCTION(enum_name);
create a getter function
define __N_ENUM_DECLARE_ENUM
#define __N_ENUM_DECLARE_ENUM(
MACRO_DEFINITION,
enum_name
)
typedef enum enum_name { \
MACRO_DEFINITION(__N_ENUM_MACRO_ENTRY_TO_ENUM_ELEMENT) \
__N_ENUM_MACRO_ENTRY_UNKNOWN_VALUE(enum_name) \
} enum_name;
macro for ENUM declaration
define N_ENUM_ENTRY
#define N_ENUM_ENTRY(
class,
method
)
class##__##method
helper to build an N_ENUM
define N_ENUM_DEFINE
#define N_ENUM_DEFINE(
MACRO_DEFINITION,
enum_name
)
__N_ENUM_DEFINE_FUNCTION_ISVALID(MACRO_DEFINITION, enum_name) \
__N_ENUM_DEFINE_FUNCTION_ISSTRINGVALID(MACRO_DEFINITION, enum_name) \
__N_ENUM_DEFINE_FUNCTION_TOSTRING(MACRO_DEFINITION, enum_name) \
__N_ENUM_DEFINE_FUNCTION_FROMSTRING(MACRO_DEFINITION, enum_name) \
__N_ENUM_DEFINE_FUNCTION_FROMSTRING_EX(MACRO_DEFINITION, enum_name)
Macro to define an N_ENUM.
define N_ENUM_DECLARE
#define N_ENUM_DECLARE(
MACRO_DEFINITION,
enum_name
)
__N_ENUM_DECLARE_ENUM(MACRO_DEFINITION, enum_name) \
__N_ENUM_DECLARE_FUNCTION(__N_ENUM_FUNCTION_ISVALID, enum_name) \
__N_ENUM_DECLARE_FUNCTION(__N_ENUM_FUNCTION_ISSTRINGVALID, enum_name) \
__N_ENUM_DECLARE_FUNCTION(__N_ENUM_FUNCTION_TOSTRING, enum_name) \
__N_ENUM_DECLARE_FUNCTION(__N_ENUM_FUNCTION_FROMSTRING, enum_name) \
__N_ENUM_DECLARE_FUNCTION(__N_ENUM_FUNCTION_FROMSTRING_EX, enum_name)
Macro to declare a N_ENUM.
Modules
- AABB3D
- ACCEPT_POOL
- ALLEGRO4
- ALLEGRO5
- ANIM_LIB
- ASTAR
- ATLAS_LIB
- AVRO
- CLOCK_SYNC
- COMMONS
- CONFIGFILE
- CYPHER_BASE64
- CYPHER_VIGENERE
- DEAD_RECKONING
- ENUMS
- EXCEPTIONS
- GAME_ENV
- GIT
- GUI
- HASH_TABLE
- ISOMETRIC_ENGINE
- LIST
- LOG
- LOGNODUP
- LZ4
- NETWORKING
- NETWORK_MSG
- N_COOKIES
- N_DIFF
- N_DIGEST
- N_DISK_CACHE
- N_DNS
- N_ECC
- N_ENTROPY
- N_FILES
- N_FLUIDS
- N_GUI_COLOR
- N_GUI_COLORWHEEL
- N_GUI_CURVE
- N_GUI_GRID
- N_GUI_POPUP
- N_HEX
- N_HTTP3
- N_HTTP_COOKIE
- N_HTTP_FORM
- N_HTTP_MIME
- N_HTTP_REQ
- N_HTTP_RESP
- N_HTTP_ROUTER
- N_HTTP_SERVER
- N_ICC
- N_JSON
- N_KAFKA
- N_LINALG
- N_MODULE
- N_OPENSSL_COMPAT
- N_PRETTY
- N_PTH
- N_QUERY
- N_RANDOM
- N_SHA256
- N_STR
- N_TIFF
- N_TIME
- N_USER
- N_X509
- N_ZIP
- PARTICLES
- PCRE
- PHYSICS
- SIGNALS
- STACK
- THREADS
- TRAJECTORY
- TREE
- ZLIB