summaryrefslogtreecommitdiff
path: root/giscanner/transformer.py
diff options
context:
space:
mode:
authorColin Walters <walters@src.gnome.org>2008-10-02 14:07:38 +0000
committerColin Walters <walters@src.gnome.org>2008-10-02 14:07:38 +0000
commitb8b1ab1162b492fcf5176678201ce191b740c3f8 (patch)
tree8ddaf13e9d4f1f41b1511f642b0b1c4e9cca3fce /giscanner/transformer.py
parent9d03f102950cfb1235db5efe81e399e7c14a30af (diff)
downloadgobject-introspection-b8b1ab1162b492fcf5176678201ce191b740c3f8.tar.gz
Merge branch 'bug552393-varargs'
svn path=/trunk/; revision=643
Diffstat (limited to 'giscanner/transformer.py')
-rw-r--r--giscanner/transformer.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index d560474d..f8e09d13 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -23,8 +23,8 @@ import os
from giscanner.ast import (Callback, Enum, Function, Namespace, Member,
Parameter, Return, Array, Struct, Field,
Type, Alias, Interface, Class, Node, Union,
- List, Map, type_name_from_ctype, type_names,
- default_array_types)
+ List, Map, Varargs, type_name_from_ctype,
+ type_names, default_array_types)
from giscanner.config import DATADIR
from .glibast import GLibBoxed
from giscanner.sourcescanner import (
@@ -33,7 +33,7 @@ from giscanner.sourcescanner import (
CTYPE_VOID, CTYPE_ENUM, CTYPE_FUNCTION, CTYPE_STRUCT,
CSYMBOL_TYPE_FUNCTION, CSYMBOL_TYPE_TYPEDEF, CSYMBOL_TYPE_STRUCT,
CSYMBOL_TYPE_ENUM, CSYMBOL_TYPE_UNION, CSYMBOL_TYPE_OBJECT,
- CSYMBOL_TYPE_MEMBER)
+ CSYMBOL_TYPE_MEMBER, CSYMBOL_TYPE_ELLIPSIS)
from .odict import odict
from .utils import strip_common_prefix, to_underscores
@@ -318,7 +318,7 @@ class Transformer(object):
def _create_type(self, source_type, options=[]):
ctype = self._create_source_type(source_type)
if ctype == 'va_list':
- raise SkipError
+ raise SkipError()
# FIXME: FILE* should not be skipped, it should be handled
# properly instead
elif ctype == 'FILE*':
@@ -353,7 +353,10 @@ class Transformer(object):
return Type(resolved_type_name, ctype)
def _create_parameter(self, symbol, options):
- ptype = self._create_type(symbol.base_type, options)
+ if symbol.type == CSYMBOL_TYPE_ELLIPSIS:
+ ptype = Varargs()
+ else:
+ ptype = self._create_type(symbol.base_type, options)
param = Parameter(symbol.ident, ptype)
for option in options:
if option in ['in-out', 'inout']: