EnumDictionary.h

Go to the documentation of this file.
00001 //***************************************************************************************
00002 // File supervisor: Crosswalk team
00012 //***************************************************************************************
00013 
00014 #ifndef __ENUMDICTIONNARY_H__
00015 #define __ENUMDICTIONNARY_H__
00016 
00017 #include <SIBCUtil.h>   // SI_Char, _SI_STRCMP
00018 
00019 #include "StrMap.h"     // StrMap
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__