diff options
author | Marc-Andre Lureau <marcandre.lureau@gmail.com> | 2008-05-06 08:03:40 +0000 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2008-05-06 08:03:40 +0000 |
commit | 9b28214399156457fd6b43d0604a47e4bdf19c28 (patch) | |
tree | 89b4a081da9384812dd85556babf52d8c5ff82c8 | |
parent | f6fc3fa7643c03eb912f4e259d48c99b0e8d0aca (diff) | |
download | gstreamer-common-9b28214399156457fd6b43d0604a47e4bdf19c28.tar.gz |
scangobj-merge.py: Don't depend on Twisted just for the OrderedDict but implement our own ordered dictionary class. F...
Original commit message from CVS:
Patch by: Marc-Andre Lureau <marcandre dot lureau at gmail dot com>
* scangobj-merge.py:
Don't depend on Twisted just for the OrderedDict but implement our
own ordered dictionary class. Fixes bug #531577.
-rw-r--r-- | ChangeLog | 8 | ||||
-rwxr-xr-x | scangobj-merge.py | 64 |
2 files changed, 66 insertions, 6 deletions
@@ -1,3 +1,11 @@ +2008-05-06 Sebastian Dröge <slomo@circular-chaos.org> + + Patch by: Marc-Andre Lureau <marcandre dot lureau at gmail dot com> + + * scangobj-merge.py: + Don't depend on Twisted just for the OrderedDict but implement our + own ordered dictionary class. Fixes bug #531577. + 2008-04-23 Edward Hervey <edward.hervey@collabora.co.uk> * gst.supp: diff --git a/scangobj-merge.py b/scangobj-merge.py index 4917255..a79b404 100755 --- a/scangobj-merge.py +++ b/scangobj-merge.py @@ -6,18 +6,70 @@ parse, update and write .signals and .args files """ -from twisted.python import util - import sys import os def debug(*args): pass +# OrderedDict class based on +# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/107747 +# Licensed under the Python License +class OrderedDict(dict): + def __init__(self, dict = None): + self._keys = [] + dict.__init__(self, dict) + + def __delitem__(self, key): + dict.__delitem__(self, key) + self._keys.remove(key) + + def __setitem__(self, key, item): + dict.__setitem__(self, key, item) + if key not in self._keys: self._keys.append(key) + + def clear(self): + dict.clear(self) + self._keys = [] + + def copy(self): + dict = dict.copy(self) + dict._keys = self._keys[:] + return dict + + def items(self): + return zip(self._keys, self.values()) + + def keys(self): + return self._keys + + def popitem(self): + try: + key = self._keys[-1] + except IndexError: + raise KeyError('dictionary is empty') + + val = self[key] + del self[key] + + return (key, val) + + def setdefault(self, key, failobj = None): + dict.setdefault(self, key, failobj) + if key not in self._keys: self._keys.append(key) + + def update(self, dict): + dict.update(self, dict) + for key in dict.keys(): + if key not in self._keys: self._keys.append(key) + + def values(self): + return map(self.get, self._keys) + class Object: def __init__(self, name): - self._signals = util.OrderedDict() - self._args = util.OrderedDict() + self._signals = OrderedDict() + self._args = OrderedDict() self.name = name def __repr__(self): @@ -81,7 +133,7 @@ class GDoc: class Signals(GDoc): def __init__(self): - self._objects = util.OrderedDict() + self._objects = OrderedDict() def load_data(self, data): """ @@ -138,7 +190,7 @@ class Signals(GDoc): class Args(GDoc): def __init__(self): - self._objects = util.OrderedDict() + self._objects = OrderedDict() def load_data(self, data): """ |