summaryrefslogtreecommitdiff
path: root/giscanner/odict.py
diff options
context:
space:
mode:
Diffstat (limited to 'giscanner/odict.py')
-rw-r--r--giscanner/odict.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/giscanner/odict.py b/giscanner/odict.py
new file mode 100644
index 00000000..00d5a5bd
--- /dev/null
+++ b/giscanner/odict.py
@@ -0,0 +1,24 @@
+# odict - an ordered dictionary
+
+from UserDict import DictMixin
+
+
+class odict(DictMixin):
+ def __init__(self):
+ self._items = {}
+ self._keys = []
+
+ def __setitem__(self, key, value):
+ if key not in self._items:
+ self._keys.append(key)
+ self._items[key] = value
+
+ def __getitem__(self, key):
+ return self._items[key]
+
+ def __delitem__(self, key):
+ del self._items[key]
+ self._keys.remove(key)
+
+ def keys(self):
+ return self._keys[:]