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