diff options
author | Johan Dahlin <jdahlin@async.com.br> | 2008-06-20 01:33:09 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2008-06-20 01:33:09 +0000 |
commit | b9767e2fe9955e38612d890f9435cff14e215936 (patch) | |
tree | b6866b39bc97a832801d042a7ba3a1c9811291d2 /giscanner/ast.py | |
parent | e3559b1134b9bd590b184e40468ee17c13eeaa62 (diff) | |
download | gobject-introspection-b9767e2fe9955e38612d890f9435cff14e215936.tar.gz |
Start using abstract type instead of the raw C types. Register a bunch of
2008-06-19 Johan Dahlin <jdahlin@async.com.br>
* giscanner/ast.py:
* giscanner/girwriter.py:
* giscanner/glibast.py:
* giscanner/glibtransformer.py:
* giscanner/transformer.py:
* tests/parser/Foo-expected.gir:
Start using abstract type instead of the raw C types.
Register a bunch of glib types we care about.
svn path=/trunk/; revision=290
Diffstat (limited to 'giscanner/ast.py')
-rw-r--r-- | giscanner/ast.py | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/giscanner/ast.py b/giscanner/ast.py index 8f40d63f..80d5f968 100644 --- a/giscanner/ast.py +++ b/giscanner/ast.py @@ -72,7 +72,30 @@ PARAM_DIRECTION_IN = 'in' PARAM_DIRECTION_OUT = 'out' PARAM_DIRECTION_INOUT = 'inout' - +type_names = {} + +# C +type_names['char'] = TYPE_CHAR +type_names['unsigned char'] = TYPE_UCHAR +type_names['short'] = TYPE_INT16 +type_names['unsigned short'] = TYPE_UINT16 +type_names['int'] = TYPE_INT32 +type_names['unsigned int'] = TYPE_UINT32 +type_names['long'] = TYPE_LONG +type_names['unsigned long'] = TYPE_ULONG +type_names['float'] = TYPE_FLOAT +type_names['double'] = TYPE_DOUBLE +type_names['char*'] = TYPE_STRING +type_names['void*'] = TYPE_ANY +type_names['void'] = TYPE_NONE +type_names['size_t'] = TYPE_SIZE +type_names['ssize_t'] = TYPE_SSIZE + + +def type_name_from_ctype(ctype): + return type_names.get(ctype, ctype) + + class Node(object): def __init__(self, name=None): self.name = name @@ -108,9 +131,9 @@ class VFunction(Function): class Type(Node): - def __init__(self, name): + def __init__(self, name, ctype=None): Node.__init__(self, name) - self.ctype = name + self.ctype = ctype class Parameter(Node): @@ -212,9 +235,9 @@ class Constant(Node): class Property(Node): - def __init__(self, name, type_name): + def __init__(self, name, type_name, ctype=None): Node.__init__(self, name) - self.type = Type(type_name) + self.type = Type(type_name, ctype) def __repr__(self): return '%s(%r, %r, %r)' % ( @@ -236,7 +259,8 @@ class Callback(Node): class Sequence(Type): # Subclass, because a Sequence is a kind of Type - def __init__(self, name, element_type): - Type.__init__(self, name) + def __init__(self, name, ctype, element_type): + Type.__init__(self, name, ctype) self.element_type = element_type self.transfer = False + |