aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/llcommon/llenum.h
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:44:46 -0500
committerJacek Antonelli2008-08-15 23:44:46 -0500
commit38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4 (patch)
treeadca584755d22ca041a2dbfc35d4eca01f70b32c /linden/indra/llcommon/llenum.h
parentREADME.txt (diff)
downloadmeta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.zip
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.gz
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.bz2
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.xz
Second Life viewer sources 1.13.2.12
Diffstat (limited to 'linden/indra/llcommon/llenum.h')
-rw-r--r--linden/indra/llcommon/llenum.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/linden/indra/llcommon/llenum.h b/linden/indra/llcommon/llenum.h
new file mode 100644
index 0000000..1dde5f8
--- /dev/null
+++ b/linden/indra/llcommon/llenum.h
@@ -0,0 +1,79 @@
1/**
2 * @file llenum.h
3 * @author Tom Yedwab
4 * @brief Utility class for storing enum value <-> string lookup.
5 *
6 * Copyright (c) 2006-2007, Linden Research, Inc.
7 *
8 * The source code in this file ("Source Code") is provided by Linden Lab
9 * to you under the terms of the GNU General Public License, version 2.0
10 * ("GPL"), unless you have obtained a separate licensing agreement
11 * ("Other License"), formally executed by you and Linden Lab. Terms of
12 * the GPL can be found in doc/GPL-license.txt in this distribution, or
13 * online at http://secondlife.com/developers/opensource/gplv2
14 *
15 * There are special exceptions to the terms and conditions of the GPL as
16 * it is applied to this Source Code. View the full text of the exception
17 * in the file doc/FLOSS-exception.txt in this software distribution, or
18 * online at http://secondlife.com/developers/opensource/flossexception
19 *
20 * By copying, modifying or distributing this software, you acknowledge
21 * that you have read and understood your obligations described above,
22 * and agree to abide by those obligations.
23 *
24 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
25 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
26 * COMPLETENESS OR PERFORMANCE.
27 */
28
29#ifndef LL_LLENUM_H
30#define LL_LLENUM_H
31
32class LLEnum
33{
34public:
35 typedef std::pair<const std::string, const U32> enum_t;
36 enum
37 {
38 UNDEFINED = 0xffffffff,
39 };
40
41 LLEnum(const enum_t values_array[], const U32 length)
42 {
43 for (U32 i=0; i<length; ++i)
44 {
45 mEnumMap.insert(values_array[i]);
46 if (values_array[i].second >= mEnumArray.size())
47 {
48 mEnumArray.resize(values_array[i].second+1);
49 }
50 mEnumArray[values_array[i].second] = values_array[i].first;
51 }
52 }
53
54 const U32 operator[](std::string str)
55 {
56 std::map<const std::string, const U32>::iterator itor;
57 itor = mEnumMap.find(str);
58 if (itor != mEnumMap.end())
59 {
60 return itor->second;
61 }
62 return UNDEFINED;
63 }
64
65 const std::string operator[](U32 index)
66 {
67 if (index < mEnumArray.size())
68 {
69 return mEnumArray[index];
70 }
71 return "";
72 }
73
74private:
75 std::map<const std::string, const U32> mEnumMap;
76 std::vector<std::string> mEnumArray;
77};
78
79#endif // LL_LLENUM_H