00001 00033 #ifndef LL_LLENUM_H 00034 #define LL_LLENUM_H 00035 00036 class LLEnum 00037 { 00038 public: 00039 typedef std::pair<const std::string, const U32> enum_t; 00040 enum 00041 { 00042 UNDEFINED = 0xffffffff, 00043 }; 00044 00045 LLEnum(const enum_t values_array[], const U32 length) 00046 { 00047 for (U32 i=0; i<length; ++i) 00048 { 00049 mEnumMap.insert(values_array[i]); 00050 if (values_array[i].second >= mEnumArray.size()) 00051 { 00052 mEnumArray.resize(values_array[i].second+1); 00053 } 00054 mEnumArray[values_array[i].second] = values_array[i].first; 00055 } 00056 } 00057 00058 U32 operator[](std::string str) 00059 { 00060 std::map<const std::string, const U32>::iterator itor; 00061 itor = mEnumMap.find(str); 00062 if (itor != mEnumMap.end()) 00063 { 00064 return itor->second; 00065 } 00066 return UNDEFINED; 00067 } 00068 00069 const std::string operator[](U32 index) 00070 { 00071 if (index < mEnumArray.size()) 00072 { 00073 return mEnumArray[index]; 00074 } 00075 return ""; 00076 } 00077 00078 private: 00079 std::map<const std::string, const U32> mEnumMap; 00080 std::vector<std::string> mEnumArray; 00081 }; 00082 00083 #endif // LL_LLENUM_H