summaryrefslogtreecommitdiff
path: root/giscanner/transformer.py
diff options
context:
space:
mode:
Diffstat (limited to 'giscanner/transformer.py')
-rw-r--r--giscanner/transformer.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index 70a08498..f9807eab 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -211,6 +211,7 @@ class Transformer(object):
def _create_enum(self, symbol):
members = []
+ directives = symbol.directives()
for child in symbol.base_type.child_list:
name = strip_common_prefix(symbol.ident, child.ident).lower()
members.append(Member(name,
@@ -219,6 +220,7 @@ class Transformer(object):
enum_name = self.remove_prefix(symbol.ident)
enum = Enum(enum_name, symbol.ident, members)
+ self._parse_version(enum, directives)
self._names.type_names[symbol.ident] = (None, enum)
return enum
@@ -238,6 +240,12 @@ class Transformer(object):
# No version, just include str
node.deprecated = deprecated_value.strip()
+ def _parse_version(self, node, directives):
+ version = directives.get('since', False)
+ if version:
+ version_value = version[0]
+ node.version = version_value.strip()
+
def _pair_array(self, params, array):
if not array.type.length_param_name:
return
@@ -283,6 +291,7 @@ class Transformer(object):
self._pair_annotations(parameters, return_)
name = self._strip_namespace_func(symbol.ident)
func = Function(name, return_, parameters, symbol.ident)
+ self._parse_version(func, directives)
self._parse_deprecated(func, directives)
return func
@@ -314,6 +323,8 @@ class Transformer(object):
dirs_for = set(dirs)
dirs_for = dirs_for.difference(param_names)
dirs_for.discard('return')
+ dirs_for.discard('deprecated')
+ dirs_for.discard('since')
if dirs_for:
print 'Unexpected annotations for %s, parameters are %s' % (
list(dirs_for), list(param_names), )
@@ -633,6 +644,7 @@ class Transformer(object):
return union
def _create_struct(self, symbol):
+ directives = symbol.directives()
struct = self._typedefs_ns.get(symbol.ident, None)
if struct is None:
# This is a bit of a hack; really we should try
@@ -650,9 +662,12 @@ class Transformer(object):
if field:
struct.fields.append(field)
+ self._parse_version(struct, directives)
+
return struct
def _create_union(self, symbol):
+ directives = symbol.directives()
union = self._typedefs_ns.get(symbol.ident, None)
if union is None:
# This is a bit of a hack; really we should try
@@ -670,6 +685,8 @@ class Transformer(object):
if field:
union.fields.append(field)
+ self._parse_version(union, directives)
+
return union
def _create_callback(self, symbol):
@@ -682,7 +699,11 @@ class Transformer(object):
name = self.remove_prefix(symbol.ident, True)
else:
name = self.remove_prefix(symbol.ident)
- return Callback(name, retval, list(parameters), symbol.ident)
+ callback = Callback(name, retval, list(parameters), symbol.ident)
+
+ self._parse_version(callback, directives)
+
+ return callback
def _typepair_to_str(self, item):
nsname, item = item