2 # GObject-Introspection - a framework for introspecting GObject libraries
3 # Copyright (C) 2008 Johan Dahlin
5 # This program is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU General Public License
7 # as published by the Free Software Foundation; either version 2
8 # of the License, or (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 def __init__(self, name=None):
27 def __init__(self, name, retval, parameters, symbol):
28 Node.__init__(self, name)
30 self.parameters = parameters
34 return '%s(%r, %r, %r)' % (self.__class__.__name__,
35 self.name, self.retval,
39 class VFunction(Function):
44 def __init__(self, name):
45 Node.__init__(self, name)
48 return 'Type(%r)' % (self.name,)
51 class Parameter(Node):
52 def __init__(self, name, type_name):
53 Node.__init__(self, name)
54 self.type = Type(type_name)
56 self.transfer = 'none'
59 return 'Parameter(%r, %r)' % (self.name, self.type)
63 def __init__(self, name, members):
64 Node.__init__(self, name)
65 self.members = members
68 return 'Enum(%r, %r)' % (self.name, self.members)
72 def __init__(self, name, value):
73 Node.__init__(self, name)
77 return 'Member(%r, %r)' % (self.name, self.value)
81 def __init__(self, name):
82 Node.__init__(self, name)
86 return 'Struct(%r)' % (self.name,)
90 def __init__(self, type_name):
92 self.type = Type(type_name)
93 self.transfer = 'none'
94 self.ctype = self.type
97 return 'Return(%r)' % (self.type,)
101 def __init__(self, name, parent):
102 Node.__init__(self, name)
105 self.constructors = []
110 return '%s(%r, %r, %r)' % (
111 self.__class__.__name__,
112 self.name, self.parent, self.methods)
115 class Interface(Node):
116 def __init__(self, name):
117 Node.__init__(self, name)
123 return '%s(%r, %r)' % (
124 self.__class__.__name__,
125 self.name, self.methods)
128 class Constant(Node):
129 def __init__(self, name, type_name, value):
130 Node.__init__(self, name)
131 self.type = Type(type_name)
135 return 'Constant(%r, %r, %r)' % (
136 self.name, self.type, self.value)
139 class Property(Node):
140 def __init__(self, name, type_name):
141 Node.__init__(self, name)
142 self.type = Type(type_name)
145 return '%s(%r, %r, %r)' % (
146 self.__class__.__name__,
147 self.name, self.type, self.value)
150 class Callback(Node):
151 def __init__(self, name, retval, parameters):
152 Node.__init__(self, name)
154 self.parameters = parameters
157 return 'Callback(%r, %r, %r)' % (
158 self.name, self.retval, self.parameters)
161 class Sequence(Type):
162 # Subclass, because a Sequence is a kind of Type
163 def __init__(self, name, element_type):
164 Type.__init__(self, name)
165 self.element_type = element_type