summaryrefslogtreecommitdiff
path: root/indra/llcommon/llregistry.h
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2012-07-18 16:31:22 -0400
committerNat Goodspeed <nat@lindenlab.com>2012-07-18 16:31:22 -0400
commit5e1e44ca7ea6fdbfb34a3a3968d5f07fc0ff3d7a (patch)
tree3b8d3431d65bb32dfc7454526a1e66f2e5a5d451 /indra/llcommon/llregistry.h
parent7f609b6a6958f519bb1becb604132b583ada3fad (diff)
parent55a7bdf8d3f59b0d1973d1ec22d3c8770a077723 (diff)
MAINT-1175: merge backout LLRegistrySingleton<std::type_info::name()>
Diffstat (limited to 'indra/llcommon/llregistry.h')
-rw-r--r--indra/llcommon/llregistry.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/indra/llcommon/llregistry.h b/indra/llcommon/llregistry.h
index 36d7f7a44c..2df9bc6541 100644
--- a/indra/llcommon/llregistry.h
+++ b/indra/llcommon/llregistry.h
@@ -34,9 +34,21 @@
#include "lltypeinfolookup.h"
template <typename T>
-class LLRegistryDefaultComparator
+struct LLRegistryDefaultComparator
{
- bool operator()(const T& lhs, const T& rhs) { return lhs < rhs; }
+ // It would be Bad if this comparison were used for const char*
+ BOOST_STATIC_ASSERT(! (boost::is_same<typename boost::remove_const<typename boost::remove_pointer<T>::type>::type, char>::value));
+ bool operator()(const T& lhs, const T& rhs) const { return lhs < rhs; }
+};
+
+// comparator for const char* registry keys
+template <>
+struct LLRegistryDefaultComparator<const char*>
+{
+ bool operator()(const char* lhs, const char* rhs) const
+ {
+ return strcmp(lhs, rhs) < 0;
+ }
};
template <typename KEY, typename VALUE>
@@ -72,7 +84,7 @@ public:
{
friend class LLRegistry<KEY, VALUE, COMPARATOR>;
public:
- typedef typename LLRegistryMapSelector<KEY, VALUE>::type registry_map_t;
+ typedef std::map<KEY, VALUE, COMPARATOR> registry_map_t;
bool add(ref_const_key_t key, ref_const_value_t value)
{