[llvm-commits] [zorg] r126492 - /zorg/trunk/llvmlab/llvmlab/util.py

Daniel Dunbar daniel at zuster.org
Fri Feb 25 08:45:24 PST 2011


Author: ddunbar
Date: Fri Feb 25 10:45:24 2011
New Revision: 126492

URL: http://llvm.org/viewvc/llvm-project?rev=126492&view=rev
Log:
llvmlab.util: Add multidict helper class.

Modified:
    zorg/trunk/llvmlab/llvmlab/util.py

Modified: zorg/trunk/llvmlab/llvmlab/util.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/llvmlab/llvmlab/util.py?rev=126492&r1=126491&r2=126492&view=diff
==============================================================================
--- zorg/trunk/llvmlab/llvmlab/util.py (original)
+++ zorg/trunk/llvmlab/llvmlab/util.py Fri Feb 25 10:45:24 2011
@@ -1,5 +1,7 @@
 import colorsys
 
+__all__ = []
+
 class simple_repr_mixin(object):
     def __repr__(self):
         return "%s(%s)" % (self.__class__.__name__,
@@ -17,4 +19,28 @@
     v = 0.8
     return colorsys.hsv_to_rgb(h,0.9+s*.1,v)
 
-__all__ = []
+class multidict(object):
+    def __init__(self, elts=()):
+        self.data = {}
+        for key,value in elts:
+            self[key] = value
+
+    def __contains__(self, item):
+        return item in self.data
+    def __getitem__(self, item):
+        return self.data[item]
+    def __setitem__(self, key, value):
+        if key in self.data:
+            self.data[key].append(value)
+        else:
+            self.data[key] = [value]
+    def items(self):
+        return self.data.items()
+    def values(self):
+        return self.data.values()
+    def keys(self):
+        return self.data.keys()
+    def __len__(self):
+        return len(self.data)
+    def get(self, key, default=None):
+        return self.data.get(key, default)





More information about the llvm-commits mailing list