[llvm-commits] [llvm] r46625 - /llvm/trunk/include/llvm/ADT/StringMap.h

Anton Korobeynikov asl at math.spbu.ru
Thu Jan 31 15:02:33 PST 2008


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





More information about the llvm-commits mailing list