Permalink
Browse files

scanner: support stability tag

  • Loading branch information...
1 parent f77cfc4 commit 368d72e61740cb318647296ff39495ad32fbe4d3 @nemequ nemequ committed Jul 10, 2012
View
1 giscanner/ast.py
@@ -480,6 +480,7 @@ def __init__(self):
self.skip = False
self.introspectable = True
self.attributes = [] # (key, value)*
+ self.stability = None
self.deprecated = None
self.deprecated_version = None
self.doc = None
View
2 giscanner/girwriter.py
@@ -145,6 +145,8 @@ def _append_node_generic(self, node, attrs):
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:
View
12 giscanner/maintransformer.py
@@ -24,7 +24,8 @@
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 @@ def _apply_annotations_annotated(self, node, block):
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():
View
10 tests/scanner/Regress-1.0-expected.gir
@@ -3482,5 +3482,15 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
</parameter>
</parameters>
</function>
+ <function name="test_versioning"
+ c:identifier="regress_test_versioning"
+ version="1.32.1"
+ deprecated="Use foobar instead"
+ deprecated-version="1.33.3"
+ stability="Unstable">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </function>
</namespace>
</repository>
View
12 tests/scanner/regress.c
@@ -3812,3 +3812,15 @@ regress_has_parameter_named_attrs (int foo,
gpointer attributes)
{
}
+
+/**
+ * regress_test_versioning:
+ *
+ * Since: 1.32.1
+ * Deprecated: 1.33.3: Use foobar instead
+ * Stability: Unstable
+ */
+void
+regress_test_versioning ()
+{
+}
View
3 tests/scanner/regress.h
@@ -137,6 +137,9 @@ cairo_surface_t *regress_test_cairo_surface_full_return (void);
void regress_test_cairo_surface_none_in (cairo_surface_t *surface);
void regress_test_cairo_surface_full_out (cairo_surface_t **surface);
+/* versioning (deprecated, since, stability) */
+void regress_test_versioning ();
+
GVariant *regress_test_gvariant_i (void);
GVariant *regress_test_gvariant_s (void);
GVariant *regress_test_gvariant_asv (void);

0 comments on commit 368d72e

Please sign in to comment.