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
23 def __init__(self, name=None):
28 def __init__(self, name, retval, parameters, symbol):
29 Node.__init__(self, name)
31 self.parameters = parameters
35 return '%s(%r, %r, %r)' % (self.__class__.__name__,
36 self.name, self.retval,
40 class VFunction(Function):
45 def __init__(self, name):
46 Node.__init__(self, name)
47 self.cidentifier = name
50 return 'Type(%r)' % (self.name,)
53 class Parameter(Node):
54 def __init__(self, name, type_name):
55 Node.__init__(self, name)
56 self.type = Type(type_name)
58 self.transfer = 'none'
61 return 'Parameter(%r, %r)' % (self.name, self.type)
65 def __init__(self, name, members):
66 Node.__init__(self, name)
67 self.members = members
70 return 'Enum(%r, %r)' % (self.name, self.members)
74 def __init__(self, name, value):
75 Node.__init__(self, name)
79 return 'Member(%r, %r)' % (self.name, self.value)
83 def __init__(self, name):
84 Node.__init__(self, name)
88 return 'Struct(%r)' % (self.name,)
92 def __init__(self, type_name):
94 self.type = Type(type_name)
95 self.transfer = 'none'
98 return 'Return(%r)' % (self.type,)
102 def __init__(self, name, parent):
103 Node.__init__(self, name)
106 self.constructors = []
111 return '%s(%r, %r, %r)' % (
112 self.__class__.__name__,
113 self.name, self.parent, self.methods)
116 class Interface(Node):
117 def __init__(self, name):
118 Node.__init__(self, name)
124 return '%s(%r, %r)' % (
125 self.__class__.__name__,
126 self.name, self.methods)
129 class Constant(Node):
130 def __init__(self, name, type_name, value):
131 Node.__init__(self, name)
132 self.type = Type(type_name)
136 return 'Constant(%r, %r, %r)' % (
137 self.name, self.type, self.value)
140 class Property(Node):
141 def __init__(self, name, type_name):
142 Node.__init__(self, name)
143 self.type = Type(type_name)
146 return '%s(%r, %r, %r)' % (
147 self.__class__.__name__,
148 self.name, self.type, self.value)
151 class Callback(Node):
152 def __init__(self, name, retval, parameters):
153 Node.__init__(self, name)
155 self.parameters = parameters
158 return 'Callback(%r, %r, %r)' % (
159 self.name, self.retval, self.parameters)
162 class Sequence(Type):
163 # Subclass, because a Sequence is a kind of Type
164 def __init__(self, name, element_type):
165 Type.__init__(self, name)
166 self.element_type = element_type