00001
00002
00012
00013
00014 #ifndef __ENUMDICTIONNARY_H__
00015 #define __ENUMDICTIONNARY_H__
00016
00017 #include <SIBCUtil.h>
00018
00019 #include "StrMap.h"
00020
00049 template
00050 <
00051 class Enum,
00052 size_t size
00053 >
00054 class CEnumDictionary
00055 {
00056 public:
00058
00073 inline CEnumDictionary( SI_Char const* * in_ppStringArray )
00074 {
00075 m_ppArray = in_ppStringArray;
00076 }
00077
00078 ~CEnumDictionary()
00079 {
00080 }
00081
00083
00094 inline const SI_Char* ToString( Enum in_Value ) const
00095 {
00096 return (m_ppArray)[(size_t)in_Value];
00097 }
00098
00100
00116 inline SI_Bool ToEnum( Enum &out_rEnum, const SI_Char* in_pValue ) const
00117 {
00118 if ( !in_pValue )
00119 return SI_FALSE;
00120
00121 for (int v=0;v<=size;v++)
00122 {
00123 if ( !_SI_STRCMP( m_ppArray[v], in_pValue ) )
00124 {
00125 out_rEnum = (Enum)v;
00126 return SI_TRUE;
00127 }
00128 }
00129 return SI_FALSE;
00130 }
00131 private:
00132 SI_Char const** m_ppArray;
00133 };
00134
00135 #endif //__ENUMDICTIONNARY_H__