summaryrefslogtreecommitdiff
path: root/indra/llcommon/llenum.h
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llcommon/llenum.h
Print done when done.
Diffstat (limited to 'indra/llcommon/llenum.h')
-rw-r--r--indra/llcommon/llenum.h60
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