ss = create_source_scanner(options, args)
+ ap = AnnotationParser()
+ blocks = ap.parse(ss.get_comments())
+
# Transform the C symbols into AST nodes
+ transformer.set_annotations(blocks)
transformer.parse(ss.get_symbols())
shlibs = create_binary(transformer, options, args)
- ap = AnnotationParser()
- blocks = ap.parse(ss.get_comments())
-
main = MainTransformer(transformer, blocks)
main.transform()
self._include_names = set() # string namespace
self._includepaths = []
self._passthrough_mode = False
+ self._annotations = {}
def get_includes(self):
return self._include_names
def set_passthrough_mode(self):
self._passthrough_mode = True
+ def set_annotations(self, annotations):
+ self._annotations = annotations
+
def _append_new_node(self, node):
original = self._namespace.get(node.name)
# Special case constants here; we allow duplication to sort-of
elif stype == CSYMBOL_TYPE_UNION:
return self._create_union(symbol)
elif stype == CSYMBOL_TYPE_CONST:
- return self._create_const(symbol)
+ # Don't parse constants which are marked (skip)
+ docblock = self._annotations.get(symbol.ident)
+ if not docblock or not 'skip' in docblock.options:
+ return self._create_const(symbol)
# Ignore variable declarations in the header
elif stype == CSYMBOL_TYPE_OBJECT:
pass