summaryrefslogtreecommitdiff
path: root/giscanner
diff options
context:
space:
mode:
authorEvan Nemerson <evan@coeus-group.com>2012-07-10 13:59:23 -0700
committerEvan Nemerson <evan@coeus-group.com>2012-07-10 14:52:25 -0700
commit368d72e61740cb318647296ff39495ad32fbe4d3 (patch)
tree0f3feae12f141aebad406ec077f8a068276124e2 /giscanner
parentf77cfc4275b1fba4f9fedea6e40b00e0ebbe142c (diff)
downloadgobject-introspection-368d72e61740cb318647296ff39495ad32fbe4d3.tar.gz
scanner: support stability tag
https://bugzilla.gnome.org/show_bug.cgi?id=679160
Diffstat (limited to 'giscanner')
-rw-r--r--giscanner/ast.py1
-rw-r--r--giscanner/girwriter.py2
-rw-r--r--giscanner/maintransformer.py12
3 files changed, 14 insertions, 1 deletions
diff --git a/giscanner/ast.py b/giscanner/ast.py
index 6945d60d..7fa75ed7 100644
--- a/giscanner/ast.py
+++ b/giscanner/ast.py
@@ -480,6 +480,7 @@ properties."""
self.skip = False
self.introspectable = True
self.attributes = [] # (key, value)*
+ self.stability = None
self.deprecated = None
self.deprecated_version = None
self.doc = None
diff --git a/giscanner/girwriter.py b/giscanner/girwriter.py
index cb13d21f..0f5c7002 100644
--- a/giscanner/girwriter.py
+++ b/giscanner/girwriter.py
@@ -145,6 +145,8 @@ and/or use gtk-doc annotations. ''')
if node.deprecated_version:
attrs.append(('deprecated-version',
node.deprecated_version))
+ if node.stability:
+ attrs.append(('stability', node.stability))
def _append_throws(self, func, attrs):
if func.throws:
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py
index 87238755..77a66d21 100644
--- a/giscanner/maintransformer.py
+++ b/giscanner/maintransformer.py
@@ -24,7 +24,8 @@ from . import message
from .annotationparser import (TAG_VFUNC, TAG_SINCE, TAG_DEPRECATED, TAG_RETURNS,
TAG_ATTRIBUTES, TAG_RENAME_TO, TAG_TYPE,
TAG_UNREF_FUNC, TAG_REF_FUNC, TAG_SET_VALUE_FUNC,
- TAG_GET_VALUE_FUNC, TAG_VALUE, TAG_TRANSFER)
+ TAG_GET_VALUE_FUNC, TAG_VALUE, TAG_TRANSFER,
+ TAG_STABILITY)
from .annotationparser import (OPT_ALLOW_NONE, OPT_ARRAY, OPT_ATTRIBUTE,
OPT_ELEMENT_TYPE, OPT_IN, OPT_INOUT,
OPT_INOUT_ALT, OPT_OUT, OPT_SCOPE,
@@ -617,6 +618,15 @@ usage is void (*_gtk_reserved1)(void);"""
if version is not None:
node.deprecated_version = version
+ stability_tag = block.get_tag(TAG_STABILITY)
+ if stability_tag is not None:
+ stability = stability_tag.value.capitalize()
+ if stability in ["Stable", "Unstable", "Private", "Internal"]:
+ node.stability = stability
+ else:
+ message.warn('unknown value "%s" for Stability tag' % (
+ stability_tag.value), stability_tag.position)
+
annos_tag = block.get_tag(TAG_ATTRIBUTES)
if annos_tag is not None:
for key, value in annos_tag.options.iteritems():