/** \brief enum to string conversion * * This is the heart of the 'automatic' enum to string conversion and taken * from: * http://www.codeproject.com/KB/cpp/C___enums_to_strings.aspx * * 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 * const char* GetStringMyEnum(MyEnum tagMyEnum);. * */ #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