diff options
author | Rafael H. Schloming <rhs@apache.org> | 2008-05-08 20:52:28 +0000 |
---|---|---|
committer | Rafael H. Schloming <rhs@apache.org> | 2008-05-08 20:52:28 +0000 |
commit | fd5ba0c75091336020287825a973c88a07dbe5b4 (patch) | |
tree | 5a90ff41987b15e85f254a9266d9c933cd505b9e /python/qpid/spec010.py | |
parent | 32613b43c550fec2785299a271b3818db75490c4 (diff) | |
download | qpid-python-fd5ba0c75091336020287825a973c88a07dbe5b4.tar.gz |
QPID-979: added access to enums through the session so that symbolic constants can be used rather than hard coded ones; also added default loading of the spec
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@654618 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid/spec010.py')
-rw-r--r-- | python/qpid/spec010.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/python/qpid/spec010.py b/python/qpid/spec010.py index 1668729876..fb625eab65 100644 --- a/python/qpid/spec010.py +++ b/python/qpid/spec010.py @@ -166,6 +166,15 @@ class Domain(Type, Lookup): def decode(self, codec): return self.type.decode(codec) +class Enum: + + def __init__(self, name): + self.name = name + + def __repr__(self): + return "%s(%s)" % (self.name, ", ".join([k for k in self.__dict__.keys() + if k != "name"])) + class Choice(Named, Node): def __init__(self, name, value, children): @@ -177,6 +186,12 @@ class Choice(Named, Node): Named.register(self, node) node.choices[self.value] = self Node.register(self) + try: + enum = node.spec.enums[node.name] + except KeyError: + enum = Enum(node.name) + node.spec.enums[node.name] = enum + setattr(enum, self.name, self.value) class Composite(Type, Coded): @@ -450,6 +465,7 @@ class Spec(Node): self.commands = {} self.structs = {} self.structs_by_name = {} + self.enums = {} def encoding(self, klass): if Spec.ENCODINGS.has_key(klass): |