memory pool buffer used for looking up memory pool transactions in get_history.
[electrum-server.git] / backends / libbitcoin / multimap.py
diff --git a/backends/libbitcoin/multimap.py b/backends/libbitcoin/multimap.py
new file mode 100644 (file)
index 0000000..02db35f
--- /dev/null
@@ -0,0 +1,37 @@
+class MultiMap:
+
+    def __init__(self):
+        self.multi = {}
+
+    def __getitem__(self, key):
+        return self.multi[key]
+
+    def __setitem__(self, key, value):
+        if not self.multi.has_key(key):
+            self.multi[key] = []
+        self.multi[key].append(value)
+
+    def delete(self, key, value):
+        for i, item in enumerate(self.multi[key]):
+            if item == value:
+                del self.multi[key][i]
+                if not self.multi[key]:
+                    del self.multi[key]
+                return
+        raise IndexError
+
+    def __repr__(self):
+        return repr(self.multi)
+    def __str__(self):
+        return str(self.multi)
+
+if __name__ == "__main__":
+    m = MultiMap()
+    m["foo"] = 1
+    m["foo"] = 1
+    m["bar"] = 2
+    print m["foo"]
+    m.delete("foo", 1)
+    m.delete("bar", 2)
+    print m.multi
+