Rex Dieter 41a11e7
Index: trunk/Source/WTF/wtf/HashMap.h
Rex Dieter 41a11e7
===================================================================
Rex Dieter 41a11e7
--- trunk/Source/WTF/wtf/HashMap.h	(revision 147344)
Rex Dieter 41a11e7
+++ trunk/Source/WTF/wtf/HashMap.h	(revision 147345)
Rex Dieter 41a11e7
@@ -137,27 +137,33 @@
Rex Dieter 41a11e7
         AddResult inlineAdd(const KeyType&, MappedPassInReferenceType);
Rex Dieter 41a11e7
 
Rex Dieter 41a11e7
-        class HashMapKeysProxy : private HashMap {
Rex Dieter 41a11e7
+        HashTableType m_impl;
Rex Dieter 41a11e7
+    };
Rex Dieter 41a11e7
+
Rex Dieter 41a11e7
+    template<typename KeyArg, typename MappedArg, typename HashArg, typename KeyTraitsArg, typename MappedTraitsArg>
Rex Dieter 41a11e7
+    class HashMap<KeyArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg>::HashMapKeysProxy : 
Rex Dieter 41a11e7
+        private HashMap<KeyArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg> {
Rex Dieter 41a11e7
         public:
Rex Dieter 41a11e7
-            typedef typename HashMap::iterator::Keys iterator;
Rex Dieter 41a11e7
-            typedef typename HashMap::const_iterator::Keys const_iterator;
Rex Dieter 41a11e7
-            
Rex Dieter 41a11e7
+            typedef HashMap<KeyArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg> HashMapType;
Rex Dieter 41a11e7
+            typedef typename HashMapType::iterator::Keys iterator;
Rex Dieter 41a11e7
+            typedef typename HashMapType::const_iterator::Keys const_iterator;
Rex Dieter 41a11e7
+
Rex Dieter 41a11e7
             iterator begin()
Rex Dieter 41a11e7
             {
Rex Dieter 41a11e7
-                return HashMap::begin().keys();
Rex Dieter 41a11e7
-            }
Rex Dieter 41a11e7
-            
Rex Dieter 41a11e7
+                return HashMapType::begin().keys();
Rex Dieter 41a11e7
+            }
Rex Dieter 41a11e7
+
Rex Dieter 41a11e7
             iterator end()
Rex Dieter 41a11e7
             {
Rex Dieter 41a11e7
-                return HashMap::end().keys();
Rex Dieter 41a11e7
+                return HashMapType::end().keys();
Rex Dieter 41a11e7
             }
Rex Dieter 41a11e7
 
Rex Dieter 41a11e7
             const_iterator begin() const
Rex Dieter 41a11e7
             {
Rex Dieter 41a11e7
-                return HashMap::begin().keys();
Rex Dieter 41a11e7
-            }
Rex Dieter 41a11e7
-            
Rex Dieter 41a11e7
+                return HashMapType::begin().keys();
Rex Dieter 41a11e7
+            }
Rex Dieter 41a11e7
+
Rex Dieter 41a11e7
             const_iterator end() const
Rex Dieter 41a11e7
             {
Rex Dieter 41a11e7
-                return HashMap::end().keys();
Rex Dieter 41a11e7
+                return HashMapType::end().keys();
Rex Dieter 41a11e7
             }
Rex Dieter 41a11e7
 
Rex Dieter 41a11e7
@@ -170,29 +176,32 @@
Rex Dieter 41a11e7
             HashMapKeysProxy& operator=(const HashMapKeysProxy&);
Rex Dieter 41a11e7
             ~HashMapKeysProxy();
Rex Dieter 41a11e7
-        };
Rex Dieter 41a11e7
-
Rex Dieter 41a11e7
-        class HashMapValuesProxy : private HashMap {
Rex Dieter 41a11e7
+    };
Rex Dieter 41a11e7
+
Rex Dieter 41a11e7
+    template<typename KeyArg, typename MappedArg, typename HashArg,  typename KeyTraitsArg, typename MappedTraitsArg>
Rex Dieter 41a11e7
+    class HashMap<KeyArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg>::HashMapValuesProxy : 
Rex Dieter 41a11e7
+        private HashMap<KeyArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg> {
Rex Dieter 41a11e7
         public:
Rex Dieter 41a11e7
-            typedef typename HashMap::iterator::Values iterator;
Rex Dieter 41a11e7
-            typedef typename HashMap::const_iterator::Values const_iterator;
Rex Dieter 41a11e7
-            
Rex Dieter 41a11e7
+            typedef HashMap<KeyArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg> HashMapType;
Rex Dieter 41a11e7
+            typedef typename HashMapType::iterator::Values iterator;
Rex Dieter 41a11e7
+            typedef typename HashMapType::const_iterator::Values const_iterator;
Rex Dieter 41a11e7
+
Rex Dieter 41a11e7
             iterator begin()
Rex Dieter 41a11e7
             {
Rex Dieter 41a11e7
-                return HashMap::begin().values();
Rex Dieter 41a11e7
-            }
Rex Dieter 41a11e7
-            
Rex Dieter 41a11e7
+                return HashMapType::begin().values();
Rex Dieter 41a11e7
+            }
Rex Dieter 41a11e7
+
Rex Dieter 41a11e7
             iterator end()
Rex Dieter 41a11e7
             {
Rex Dieter 41a11e7
-                return HashMap::end().values();
Rex Dieter 41a11e7
+                return HashMapType::end().values();
Rex Dieter 41a11e7
             }
Rex Dieter 41a11e7
 
Rex Dieter 41a11e7
             const_iterator begin() const
Rex Dieter 41a11e7
             {
Rex Dieter 41a11e7
-                return HashMap::begin().values();
Rex Dieter 41a11e7
-            }
Rex Dieter 41a11e7
-            
Rex Dieter 41a11e7
+                return HashMapType::begin().values();
Rex Dieter 41a11e7
+            }
Rex Dieter 41a11e7
+
Rex Dieter 41a11e7
             const_iterator end() const
Rex Dieter 41a11e7
             {
Rex Dieter 41a11e7
-                return HashMap::end().values();
Rex Dieter 41a11e7
+                return HashMapType::end().values();
Rex Dieter 41a11e7
             }
Rex Dieter 41a11e7
 
Rex Dieter 41a11e7
@@ -205,7 +214,4 @@
Rex Dieter 41a11e7
             HashMapValuesProxy& operator=(const HashMapValuesProxy&);
Rex Dieter 41a11e7
             ~HashMapValuesProxy();
Rex Dieter 41a11e7
-        };
Rex Dieter 41a11e7
-
Rex Dieter 41a11e7
-        HashTableType m_impl;
Rex Dieter 41a11e7
     };
Rex Dieter 41a11e7