diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llcommon/llenum.h |
Print done when done.
Diffstat (limited to 'indra/llcommon/llenum.h')
-rw-r--r-- | indra/llcommon/llenum.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/indra/llcommon/llenum.h b/indra/llcommon/llenum.h new file mode 100644 index 0000000000..7443fe9d0f --- /dev/null +++ b/indra/llcommon/llenum.h @@ -0,0 +1,60 @@ +/** + * @file llenum.h + * @author Tom Yedwab + * @brief Utility class for storing enum value <-> string lookup. + * + * Copyright (c) 2006-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#ifndef LL_LLENUM_H +#define LL_LLENUM_H + +class LLEnum +{ +public: + typedef std::pair<const std::string, const U32> enum_t; + enum + { + UNDEFINED = 0xffffffff, + }; + + LLEnum(const enum_t values_array[], const U32 length) + { + for (U32 i=0; i<length; ++i) + { + mEnumMap.insert(values_array[i]); + if (values_array[i].second >= mEnumArray.size()) + { + mEnumArray.resize(values_array[i].second+1); + } + mEnumArray[values_array[i].second] = values_array[i].first; + } + } + + const U32 operator[](std::string str) + { + std::map<const std::string, const U32>::iterator itor; + itor = mEnumMap.find(str); + if (itor != mEnumMap.end()) + { + return itor->second; + } + return UNDEFINED; + } + + const std::string operator[](U32 index) + { + if (index < mEnumArray.size()) + { + return mEnumArray[index]; + } + return ""; + } + +private: + std::map<const std::string, const U32> mEnumMap; + std::vector<std::string> mEnumArray; +}; + +#endif // LL_LLENUM_H |