llenum.h

Go to the documentation of this file.
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

Generated on Thu Jul 1 06:08:28 2010 for Second Life Viewer by  doxygen 1.4.7