diff options
author | Johan Dahlin <johan@gnome.org> | 2008-04-26 02:37:07 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2008-04-26 02:37:07 +0000 |
commit | da74fcbd2f11d244828c6322df4b8c0059eaacb2 (patch) | |
tree | dd538030a781ea95d7aeb053081bbd1be377703f | |
parent | 77f310439eb698423aaf0328649edc13a6380a4c (diff) | |
download | gobject-introspection-da74fcbd2f11d244828c6322df4b8c0059eaacb2.tar.gz |
Split out nodes to ast.py and glibast.py
2008-04-25 Johan Dahlin <johan@gnome.org>
* giscanner/Makefile.am:
* giscanner/ast.py:
* giscanner/gidlparser.py:
* giscanner/gidlwriter.py:
* giscanner/girwriter.py:
* giscanner/glibast.py:
* giscanner/glibtransformer.py:
* giscanner/transformer.py:
Split out nodes to ast.py and glibast.py
svn path=/trunk/; revision=229
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | giscanner/Makefile.am | 2 | ||||
-rw-r--r-- | giscanner/ast.py | 149 | ||||
-rw-r--r-- | giscanner/gidlparser.py | 2 | ||||
-rw-r--r-- | giscanner/gidlwriter.py | 6 | ||||
-rw-r--r-- | giscanner/girwriter.py | 6 | ||||
-rw-r--r-- | giscanner/glibast.py | 79 | ||||
-rw-r--r-- | giscanner/glibtransformer.py | 64 | ||||
-rw-r--r-- | giscanner/transformer.py | 133 |
9 files changed, 256 insertions, 197 deletions
@@ -1,3 +1,15 @@ +2008-04-25 Johan Dahlin <johan@gnome.org> + + * giscanner/Makefile.am: + * giscanner/ast.py: + * giscanner/gidlparser.py: + * giscanner/gidlwriter.py: + * giscanner/girwriter.py: + * giscanner/glibast.py: + * giscanner/glibtransformer.py: + * giscanner/transformer.py: + Split out nodes to ast.py and glibast.py + 2008-04-25 Johan Dahlin <jdahlin@async.com.br> * giscanner/Makefile.am: diff --git a/giscanner/Makefile.am b/giscanner/Makefile.am index b8c18bab..8dfa3a8b 100644 --- a/giscanner/Makefile.am +++ b/giscanner/Makefile.am @@ -27,7 +27,9 @@ pkgpyexecdir = $(pyexecdir)/giscanner pkgpyexec_LTLIBRARIES = _giscanner.la pkgpyexec_PYTHON = \ __init__.py \ + ast.py \ cgobject.py \ + gidlast.py \ gidlparser.py \ gidlwriter.py \ girwriter.py \ diff --git a/giscanner/ast.py b/giscanner/ast.py new file mode 100644 index 00000000..7fe4d5ff --- /dev/null +++ b/giscanner/ast.py @@ -0,0 +1,149 @@ +# -*- Mode: Python -*- +# GObject-Introspection - a framework for introspecting GObject libraries +# Copyright (C) 2008 Johan Dahlin +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# + + +class Node(object): + def __init__(self, name=None): + self.name = name + + +class Function(Node): + def __init__(self, name, retval, parameters, symbol): + Node.__init__(self, name) + self.retval = retval + self.parameters = parameters + self.symbol = symbol + + def __repr__(self): + return '%s(%r, %r, %r)' % (self.__class__.__name__, + self.name, self.retval, + self.parameters) + + +class VFunction(Function): + pass + + +class Parameter(Node): + def __init__(self, name, type): + Node.__init__(self, name) + self.type = type + self.direction = 'in' + self.transfer = 'none' + + def __repr__(self): + return 'Parameter(%r, %r)' % (self.name, self.type) + + +class Enum(Node): + def __init__(self, name, members): + Node.__init__(self, name) + self.members = members + + def __repr__(self): + return 'Enum(%r, %r)' % (self.name, self.members) + + +class Member(Node): + def __init__(self, name, value): + Node.__init__(self, name) + self.value = value + + def __repr__(self): + return 'Member(%r, %r)' % (self.name, self.value) + + +class Struct(Node): + def __init__(self, name): + Node.__init__(self, name) + self.fields = [] + + def __repr__(self): + return 'Struct(%r)' % (self.name,) + + +class Return(Node): + def __init__(self, type): + Node.__init__(self) + self.type = type + self.transfer = 'none' + + def __repr__(self): + return 'Return(%r)' % (self.type,) + + +class Class(Node): + def __init__(self, name, parent): + Node.__init__(self, name) + self.parent = parent + self.methods = [] + self.constructors = [] + self.properties = [] + self.fields = [] + + def __repr__(self): + return '%s(%r, %r, %r)' % ( + self.__class__.__name__, + self.name, self.parent, self.methods) + + +class Interface(Node): + def __init__(self, name): + Node.__init__(self, name) + self.methods = [] + self.properties = [] + self.fields = [] + + def __repr__(self): + return '%s(%r, %r)' % ( + self.__class__.__name__, + self.name, self.methods) + + +class Constant(Node): + def __init__(self, name, type, value): + Node.__init__(self, name) + self.type = type + self.value = value + + def __repr__(self): + return 'Constant(%r, %r, %r)' % ( + self.name, self.type, self.value) + + +class Property(Node): + def __init__(self, name, type): + Node.__init__(self, name) + self.type = type + + def __repr__(self): + return '%s(%r, %r, %r)' % ( + self.__class__.__name__, + self.name, self.type, self.value) + + +class Callback(Node): + def __init__(self, name, retval, parameters): + Node.__init__(self, name) + self.retval = retval + self.parameters = parameters + + def __repr__(self): + return 'Callback(%r, %r, %r)' % ( + self.name, self.retval, self.parameters) diff --git a/giscanner/gidlparser.py b/giscanner/gidlparser.py index d680d9d0..a225975e 100644 --- a/giscanner/gidlparser.py +++ b/giscanner/gidlparser.py @@ -19,7 +19,7 @@ from xml.etree.ElementTree import parse -from .glibtransformer import GLibObject +from .glibast import GLibObject class GIDLParser(object): diff --git a/giscanner/gidlwriter.py b/giscanner/gidlwriter.py index 757169af..db1aa79f 100644 --- a/giscanner/gidlwriter.py +++ b/giscanner/gidlwriter.py @@ -19,9 +19,9 @@ from __future__ import with_statement -from .glibtransformer import (GLibBoxed, GLibEnum, GLibEnumMember, - GLibFlags, GLibObject, GLibInterface) -from .transformer import Callback, Class, Enum, Function, Interface +from .ast import Callback, Class, Enum, Function, Interface +from .glibast import (GLibBoxed, GLibEnum, GLibEnumMember, + GLibFlags, GLibObject, GLibInterface) from .xmlwriter import XMLWriter diff --git a/giscanner/girwriter.py b/giscanner/girwriter.py index 3ea39908..bb3b033c 100644 --- a/giscanner/girwriter.py +++ b/giscanner/girwriter.py @@ -19,9 +19,9 @@ from __future__ import with_statement -from .glibtransformer import (GLibBoxed, GLibEnum, GLibEnumMember, - GLibFlags, GLibObject, GLibInterface) -from .transformer import Callback, Class, Enum, Function, Interface +from .ast import Callback, Class, Enum, Function, Interface +from .glibast import (GLibBoxed, GLibEnum, GLibEnumMember, + GLibFlags, GLibObject, GLibInterface) from .xmlwriter import XMLWriter diff --git a/giscanner/glibast.py b/giscanner/glibast.py new file mode 100644 index 00000000..bc5b2f7d --- /dev/null +++ b/giscanner/glibast.py @@ -0,0 +1,79 @@ +# -*- Mode: Python -*- +# GObject-Introspection - a framework for introspecting GObject libraries +# Copyright (C) 2008 Johan Dahlin +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# + +from .ast import Class, Enum, Interface, Member, Node, Property, Struct + + +class GLibEnum(Enum): + def __init__(self, name, members, type_name, get_type): + Enum.__init__(self, name, members) + self.type_name = type_name + self.get_type = get_type + + def __repr__(self): + return '%s(%r, %r, %r)' % ( + self.__class__.__name__, + self.name, + self.members, + self.get_type) + + +class GLibFlags(GLibEnum): + pass + + +class GLibEnumMember(Member): + def __init__(self, name, value, nick): + Member.__init__(self, name, value) + self.nick = nick + + +class GLibObject(Class): + def __init__(self, name, parent, type_name, get_type): + Class.__init__(self, name, parent) + self.type_name = type_name + self.get_type = get_type + self.signals = [] + +class GLibBoxed(Struct): + def __init__(self, name, type_name, get_type): + Struct.__init__(self, name) + self.constructors = [] + self.methods = [] + self.type_name = type_name + self.get_type = get_type + + +class GLibInterface(Interface): + def __init__(self, name, type_name, get_type): + Interface.__init__(self, name) + self.type_name = type_name + self.get_type = get_type + self.signals = [] + + +class GLibProperty(Property): + pass + + +class GLibSignal(Node): + def __init__(self, name, retval): + Node.__init__(self, name) + self.retval = retval + self.parameters = [] diff --git a/giscanner/glibtransformer.py b/giscanner/glibtransformer.py index f288e219..54ff49d7 100644 --- a/giscanner/glibtransformer.py +++ b/giscanner/glibtransformer.py @@ -23,8 +23,11 @@ import os from . import cgobject from .odict import odict -from .transformer import (Callback, Class, Enum, Function, Interface, - Member, Node, Parameter, Property, Return, Struct) +from .ast import (Callback, Enum, Function, + Parameter, Property, Return, Struct) +from .glibast import (GLibBoxed, GLibEnum, GLibEnumMember, GLibFlags, GLibInterface, + GLibObject, GLibSignal) + # Copied from h2defs.py _upperstr_pat1 = re.compile(r'([^A-Z])([A-Z])') @@ -50,63 +53,6 @@ def resolve_libtool(libname): return libname -class GLibEnum(Enum): - def __init__(self, name, members, type_name, get_type): - Enum.__init__(self, name, members) - self.type_name = type_name - self.get_type = get_type - - def __repr__(self): - return '%s(%r, %r, %r)' % ( - self.__class__.__name__, - self.name, - self.members, - self.get_type) - - -class GLibFlags(GLibEnum): - pass - - -class GLibEnumMember(Member): - def __init__(self, name, value, nick): - Member.__init__(self, name, value) - self.nick = nick - - -class GLibObject(Class): - def __init__(self, name, parent, type_name, get_type): - Class.__init__(self, name, parent) - self.type_name = type_name - self.get_type = get_type - self.signals = [] - -class GLibBoxed(Struct): - def __init__(self, name, type_name, get_type): - Struct.__init__(self, name) - self.constructors = [] - self.methods = [] - self.type_name = type_name - self.get_type = get_type - - -class GLibInterface(Interface): - def __init__(self, name, type_name, get_type): - Interface.__init__(self, name) - self.type_name = type_name - self.get_type = get_type - self.signals = [] - - -class GLibProperty(Property): - pass - - -class GLibSignal(Node): - def __init__(self, name, retval): - Node.__init__(self, name) - self.retval = retval - self.parameters = [] class GLibTransformer(object): diff --git a/giscanner/transformer.py b/giscanner/transformer.py index f4aee932..6a7a6bb6 100644 --- a/giscanner/transformer.py +++ b/giscanner/transformer.py @@ -18,137 +18,8 @@ # import giscanner - - -class Node(object): - def __init__(self, name=None): - self.name = name - - -class Function(Node): - def __init__(self, name, retval, parameters, symbol): - Node.__init__(self, name) - self.retval = retval - self.parameters = parameters - self.symbol = symbol - - def __repr__(self): - return '%s(%r, %r, %r)' % (self.__class__.__name__, - self.name, self.retval, - self.parameters) - - -class VFunction(Function): - pass - - -class Parameter(Node): - def __init__(self, name, type): - Node.__init__(self, name) - self.type = type - self.direction = 'in' - self.transfer = 'none' - - def __repr__(self): - return 'Parameter(%r, %r)' % (self.name, self.type) - - -class Enum(Node): - def __init__(self, name, members): - Node.__init__(self, name) - self.members = members - - def __repr__(self): - return 'Enum(%r, %r)' % (self.name, self.members) - - -class Member(Node): - def __init__(self, name, value): - Node.__init__(self, name) - self.value = value - - def __repr__(self): - return 'Member(%r, %r)' % (self.name, self.value) - - -class Struct(Node): - def __init__(self, name): - Node.__init__(self, name) - self.fields = [] - - def __repr__(self): - return 'Struct(%r)' % (self.name,) - - -class Return(Node): - def __init__(self, type): - Node.__init__(self) - self.type = type - self.transfer = 'none' - - def __repr__(self): - return 'Return(%r)' % (self.type,) - - -class Class(Node): - def __init__(self, name, parent): - Node.__init__(self, name) - self.parent = parent - self.methods = [] - self.constructors = [] - self.properties = [] - self.fields = [] - - def __repr__(self): - return '%s(%r, %r, %r)' % ( - self.__class__.__name__, - self.name, self.parent, self.methods) - - -class Interface(Node): - def __init__(self, name): - Node.__init__(self, name) - self.methods = [] - self.properties = [] - self.fields = [] - - def __repr__(self): - return '%s(%r, %r)' % ( - self.__class__.__name__, - self.name, self.methods) - - -class Constant(Node): - def __init__(self, name, type, value): - Node.__init__(self, name) - self.type = type - self.value = value - - def __repr__(self): - return 'Constant(%r, %r, %r)' % ( - self.name, self.type, self.value) - - -class Property(Node): - def __init__(self, name, type): - Node.__init__(self, name) - self.type = type - - def __repr__(self): - return '%s(%r, %r, %r)' % ( - self.__class__.__name__, - self.name, self.type, self.value) - - -class Callback(Node): - def __init__(self, name, retval, parameters): - Node.__init__(self, name) - self.retval = retval - self.parameters = parameters - - def __repr__(self): - return 'Callback(%r, %r, %r)' % ( - self.name, self.retval, self.parameters) +from giscanner.ast import (Callback, Enum, Function, Member, Parameter, + Return, Struct) class Transformer(object): |