fysxasteroids/engine/EnumToString.h

33 lines
1.2 KiB
C
Raw Normal View History

/** \brief enum to string conversion
*
* This is the heart of the 'automatic' enum to string conversion and taken
* from:
* <a href="http://www.codeproject.com/KB/cpp/C___enums_to_strings.aspx">http://www.codeproject.com/KB/cpp/C___enums_to_strings.aspx</a>
*
* Thanks to Marcos F. Cardoso.
*
* With the preprocessor #defines from this file and a special inclusion and
* enum definition strategy the code for enum to string conversion is
* automatically created.
*
* For an enum of name "MyEnum" the conversion function will be called
* <code>const char* GetStringMyEnum(MyEnum tagMyEnum);</code>.
*
*/
2010-04-05 23:38:59 +02:00
#undef DECL_ENUM_ELEMENT
#undef BEGIN_ENUM
#undef END_ENUM
#ifndef GENERATE_ENUM_STRINGS
#define DECL_ENUM_ELEMENT( element ) element
#define BEGIN_ENUM( ENUM_NAME ) typedef enum tag##ENUM_NAME
#define END_ENUM( ENUM_NAME ) ENUM_NAME; \
const char* GetString##ENUM_NAME(enum tag##ENUM_NAME index);
#else
#define DECL_ENUM_ELEMENT( element ) #element
#define BEGIN_ENUM( ENUM_NAME ) const char* gs_##ENUM_NAME [] =
#define END_ENUM( ENUM_NAME ) ; const char* GetString##ENUM_NAME(enum \
tag##ENUM_NAME index){ return gs_##ENUM_NAME [index]; }
#endif