diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2012-07-18 16:31:22 -0400 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2012-07-18 16:31:22 -0400 |
commit | 5e1e44ca7ea6fdbfb34a3a3968d5f07fc0ff3d7a (patch) | |
tree | 3b8d3431d65bb32dfc7454526a1e66f2e5a5d451 /indra/llcommon/llregistry.h | |
parent | 7f609b6a6958f519bb1becb604132b583ada3fad (diff) | |
parent | 55a7bdf8d3f59b0d1973d1ec22d3c8770a077723 (diff) |
MAINT-1175: merge backout LLRegistrySingleton<std::type_info::name()>
Diffstat (limited to 'indra/llcommon/llregistry.h')
-rw-r--r-- | indra/llcommon/llregistry.h | 18 |
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) { |