From 4bd7483b630c9efc3ac509d241fd8a4946e1ee4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrg=20Billeter?= Date: Thu, 5 Jun 2008 11:45:46 +0000 Subject: Use element for field types Update testcase MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2008-06-05 Jürg Billeter * giscanner/ast.py: * giscanner/girwriter.py: * giscanner/transformer.py: Use element for field types * tests/parser/Foo-expected.gir: Update testcase svn path=/trunk/; revision=285 --- ChangeLog | 9 +++++++++ giscanner/ast.py | 10 ++++++++++ giscanner/girwriter.py | 6 +++--- giscanner/transformer.py | 7 ++++--- tests/parser/Foo-expected.gir | 24 ++++++++++++++++++------ 5 files changed, 44 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index e3c6bd1c..5af8e82f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-06-05 Jürg Billeter + + * giscanner/ast.py: + * giscanner/girwriter.py: + * giscanner/transformer.py: + Use element for field types + * tests/parser/Foo-expected.gir: + Update testcase + 2008-06-04 Johan Dahlin * giscanner/glibtransformer.py: diff --git a/giscanner/ast.py b/giscanner/ast.py index be3962d8..8f40d63f 100644 --- a/giscanner/ast.py +++ b/giscanner/ast.py @@ -151,6 +151,16 @@ class Struct(Node): self.symbol = symbol +class Field(Node): + def __init__(self, name, typenode, symbol): + Node.__init__(self, name) + self.type = typenode + self.symbol = symbol + + def __repr__(self): + return 'Field(%r, %r)' % (self.name, self.type) + + class Return(Node): def __init__(self, rtype): Node.__init__(self) diff --git a/giscanner/girwriter.py b/giscanner/girwriter.py index f26373b3..58eeccd0 100644 --- a/giscanner/girwriter.py +++ b/giscanner/girwriter.py @@ -218,9 +218,9 @@ class GIRWriter(XMLWriter): self._write_callback(field) return - attrs = [('name', field.name), - ('value', str(field.value))] - self.write_tag('field', attrs) + attrs = [('name', field.name)] + with self.tagcontext('field', attrs): + self._write_type(field.type) def _write_signal(self, signal): attrs = [('name', signal.name)] diff --git a/giscanner/transformer.py b/giscanner/transformer.py index 3047d528..7562e157 100644 --- a/giscanner/transformer.py +++ b/giscanner/transformer.py @@ -19,7 +19,8 @@ # from giscanner.ast import (Callback, Enum, Function, Namespace, Member, - Parameter, Return, Sequence, Struct, Type) + Parameter, Return, Sequence, Struct, Field, + Type) from giscanner.sourcescanner import ( SourceSymbol, ctype_name, symbol_type_name, CTYPE_POINTER, CTYPE_BASIC_TYPE, CTYPE_UNION, CTYPE_ARRAY, @@ -179,8 +180,8 @@ class Transformer(object): symbol.base_type.base_type.type == CTYPE_FUNCTION): node = self._create_callback(symbol) else: - node = Member(symbol.ident, self._create_source_type(symbol), - symbol.ident) + ftype = self._create_type(symbol.base_type) + node = Field(symbol.ident, ftype, symbol.ident) return node def _create_typedef(self, symbol): diff --git a/tests/parser/Foo-expected.gir b/tests/parser/Foo-expected.gir index 5dfd41f2..c00079d0 100644 --- a/tests/parser/Foo-expected.gir +++ b/tests/parser/Foo-expected.gir @@ -298,15 +298,27 @@ - - + + + + + + - - - - + + + + + + + + + + + + -- cgit v1.2.1