Nilorea Library
C utilities for networking, threading, graphics
n_enum.h File Reference

Macro to build enums and their tostring counterparts, a reduced version of https://github.com/FredBienvenu/SmartEnum. More...

#include <string.h>
#include <stdbool.h>
+ Include dependency graph for n_enum.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define __N_ENUM_DECLARE_ENUM(MACRO_DEFINITION, enum_name)
 macro for ENUM declaration More...
 
#define __N_ENUM_DECLARE_FUNCTION(__N_ENUM_FUNCTION, enum_name)   __N_ENUM_FUNCTION(enum_name);
 create a getter function More...
 
#define __N_ENUM_DEFINE_FUNCTION_FROMSTRING(MACRO_DEFINITION, enum_name)
 create getter functions fromString More...
 
#define __N_ENUM_DEFINE_FUNCTION_FROMSTRING_EX(MACRO_DEFINITION, enum_name)
 create getter functions fromStringEx More...
 
#define __N_ENUM_DEFINE_FUNCTION_ISSTRINGVALID(MACRO_DEFINITION, enum_name)
 create getter for function isStringValue More...
 
#define __N_ENUM_DEFINE_FUNCTION_ISVALID(MACRO_DEFINITION, enum_name)
 create getter functions is_valid More...
 
#define __N_ENUM_DEFINE_FUNCTION_TOSTRING(MACRO_DEFINITION, enum_name)
 create getter functions toString More...
 
#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 More...
 
#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 More...
 
#define __N_ENUM_FUNCTION_ISSTRINGVALID(enum_name)    bool N_ENUM_ENTRY(enum_name, isStringValid)(const char* str_value)
 create a is string valid function More...
 
#define __N_ENUM_FUNCTION_ISVALID(enum_name)    bool N_ENUM_ENTRY(enum_name, isValid)(enum_name value)
 create a test function More...
 
#define __N_ENUM_FUNCTION_TOSTRING(enum_name)    const char* N_ENUM_ENTRY(enum_name, toString)(enum_name value)
 create a to string function More...
 
#define __N_ENUM_MACRO_ENTRY_CASE(element_name)   case element_name:
 utils macro case value More...
 
#define __N_ENUM_MACRO_ENTRY_COMPARE(element_name)   if(!strcmp(#element_name, str_value))
 utils macros string compare More...
 
#define __N_ENUM_MACRO_ENTRY_COMPARE_EX(element_name)   if(!strcmp(#element_name + index, str_value))
 utils macros string ex compare More...
 
#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 More...
 
#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 More...
 
#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 More...
 
#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 More...
 
#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 More...
 
#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 More...
 
#define __N_ENUM_MACRO_ENTRY_UNKNOWN_VALUE(enum_name)   __##enum_name##_UNKNOWN_VALUE__
 utils macros unknown value More...
 
#define N_ENUM_DECLARE(MACRO_DEFINITION, enum_name)
 Macro to declare a N_ENUM. More...
 
#define N_ENUM_DEFINE(MACRO_DEFINITION, enum_name)
 Macro to define an N_ENUM. More...
 
#define N_ENUM_ENTRY(class, method)   class##_##method
 helper to build an N_ENUM More...
 

Detailed Description

Macro to build enums and their tostring counterparts, a reduced version of https://github.com/FredBienvenu/SmartEnum.

Author
Castagnier Mickael, based on original FredBienvenu SmartEnum entry
Version
1.0
Date
28/09/2021

Definition in file n_enum.h.