Commit 7549c805 authored by Dan Winship's avatar Dan Winship Committed by Colin Walters

Bug 556628 – (skip) annotation

Adds a (skip) option that can be added to the header of any doc comment
to cause that symbol to be skipped in the .gir output
parent 4ba8fa2f
......@@ -63,6 +63,7 @@ OPT_TRANSFER = 'transfer'
OPT_TYPE = 'type'
OPT_CLOSURE = 'closure'
OPT_DESTROY = 'destroy'
OPT_SKIP = 'skip'
# Specific option values
OPT_VAL_BITFIELD = 'bitfield'
......@@ -697,6 +698,7 @@ class AnnotationApplier(object):
self._parse_version(node, block)
self._parse_deprecated(node, block)
self._parse_attributes(node, block)
self._parse_skip(node, block)
def _parse_version(self, node, block):
since_tag = self._get_tag(block, TAG_SINCE)
......@@ -725,6 +727,11 @@ class AnnotationApplier(object):
for key, value in annos_tag.options.iteritems():
node.attributes.append((key, value.one()))
def _parse_skip(self, node, block):
if block is not None:
if OPT_SKIP in block.options:
node.skip = True
def _parse_rename_to_func(self, node, block):
rename_to_tag = self._get_tag(block, TAG_RENAME_TO)
if rename_to_tag is None:
......
......@@ -152,6 +152,7 @@ class Node(object):
def __init__(self, name=None):
self.name = name
self.attributes = [] # (key, value)*
self.skip = False
self.deprecated = None
self.deprecated_version = None
self.version = None
......
......@@ -96,7 +96,8 @@ and/or use gtk-doc annotations. ''')
else:
return cmp(a, b)
for node in sorted(namespace.nodes, cmp=nscmp):
self._write_node(node)
if not node.skip:
self._write_node(node)
def _write_node(self, node):
if isinstance(node, Function):
......
......@@ -579,3 +579,24 @@ foo_buffer_some_method (FooBuffer *buffer)
}
#define FOO_DEFINE_SHOULD_NOT_BE_EXPOSED "should not be exposed"
/**
* FooSkippable: (skip)
* @FOO_SKIPPABLE_ONE: a skippable enum value
* @FOO_SKIPPABLE_TWO: another skippable enum value
*
* Some type that is only interesting from C and should not be
* exposed to language bindings.
*/
/**
* foo_skip_me: (skip)
* @fs: a #FooSkippable
*
* Does something that's only interesting from C and should not be
* exposed to language bindings.
*/
void
foo_skip_me (FooSkippable fs)
{
}
......@@ -363,4 +363,11 @@ typedef enum
void foo_some_variant (guint x, va_list args);
void foo_some_variant_ptr (guint x, va_list *args);
/* Should be skipped due to annotations */
typedef enum {
FOO_SKIPPABLE_ONE,
FOO_SKIPPABLE_TWO
} FooSkippable;
void foo_skip_me (FooSkippable fs);
#endif /* __FOO_OBJECT_H__ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment