Author: asl Date: Thu Jan 31 17:02:33 2008 New Revision: 46625 URL: http://llvm.org/viewvc/llvm-project?rev=46625&view=rev Log: Add convenient std::string helpers to StringMap. Patch by Mikhail Glushenkov!
Modified: llvm/trunk/include/llvm/ADT/StringMap.h Modified: llvm/trunk/include/llvm/ADT/StringMap.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringMap.h?rev=46625&r1=46624&r2=46625&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/StringMap.h (original) +++ llvm/trunk/include/llvm/ADT/StringMap.h Thu Jan 31 17:02:33 2008 @@ -16,6 +16,7 @@ #include "llvm/Support/Allocator.h" #include <cstring> +#include <string> namespace llvm { template<typename ValueT> @@ -268,24 +269,36 @@ if (Bucket == -1) return end(); return iterator(TheTable+Bucket); } + iterator find(const char *Key) { + return find(Key, Key + strlen(Key)); + } + iterator find(const std::string &Key) { + const char* key_start = &Key[0]; + return find(key_start, key_start + Key.size()); + } const_iterator find(const char *KeyStart, const char *KeyEnd) const { int Bucket = FindKey(KeyStart, KeyEnd); if (Bucket == -1) return end(); return const_iterator(TheTable+Bucket); } - - iterator find(const char *Key) { - return find(Key, Key + strlen(Key)); - } const_iterator find(const char *Key) const { return find(Key, Key + strlen(Key)); } + const_iterator find(const std::string &Key) const { + const char* key_start = &Key[0]; + return find(key_start, key_start + Key.size()); + } ValueTy& operator[](const char *Key) { value_type& entry = GetOrCreateValue(Key, Key + strlen(Key)); return entry.getValue(); } + ValueTy& operator[](const std::string &Key) { + const char* key_start = &Key[0]; + value_type& entry = GetOrCreateValue(key_start, key_start + Key.size()); + return entry.getValue(); + } size_type count(const char *KeyStart, const char *KeyEnd) const { return find(KeyStart, KeyEnd) == end() ? 0 : 1; @@ -293,6 +306,10 @@ size_type count(const char *Key) const { return count(Key, Key + strlen(Key)); } + size_type count(const std::string &Key) const { + const char* key_start = &Key[0]; + return count(key_start, key_start + Key.size()); + } /// insert - Insert the specified key/value pair into the map. If the key /// already exists in the map, return false and ignore the request, otherwise _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits