Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef OVR_StringHash_h
00019 #define OVR_StringHash_h
00020
00021 #include "OVR_String.h"
00022 #include "OVR_Hash.h"
00023
00024 namespace OVR {
00025
00026
00027
00028
00029
00030
00031
00032
00033 template<class U, class Allocator = ContainerAllocator<U> >
00034 class StringHash : public Hash<String, U, String::NoCaseHashFunctor, Allocator>
00035 {
00036 public:
00037 typedef U ValueType;
00038 typedef StringHash<U, Allocator> SelfType;
00039 typedef Hash<String, U, String::NoCaseHashFunctor, Allocator> BaseType;
00040
00041 public:
00042
00043 void operator = (const SelfType& src) { BaseType::operator = (src); }
00044
00045 bool GetCaseInsensitive(const String& key, U* pvalue) const
00046 {
00047 String::NoCaseKey ikey(key);
00048 return BaseType::GetAlt(ikey, pvalue);
00049 }
00050
00051 const U* GetCaseInsensitive(const String& key) const
00052 {
00053 String::NoCaseKey ikey(key);
00054 return BaseType::GetAlt(ikey);
00055 }
00056 U* GetCaseInsensitive(const String& key)
00057 {
00058 String::NoCaseKey ikey(key);
00059 return BaseType::GetAlt(ikey);
00060 }
00061
00062
00063 typedef typename BaseType::Iterator base_iterator;
00064
00065 base_iterator FindCaseInsensitive(const String& key)
00066 {
00067 String::NoCaseKey ikey(key);
00068 return BaseType::FindAlt(ikey);
00069 }
00070
00071
00072
00073 void SetCaseInsensitive(const String& key, const U& value)
00074 {
00075 base_iterator it = FindCaseInsensitive(key);
00076 if (it != BaseType::End())
00077 {
00078 it->Second = value;
00079 }
00080 else
00081 {
00082 BaseType::Add(key, value);
00083 }
00084 }
00085 };
00086
00087 }
00088
00089 #endif