diff options
Diffstat (limited to 'src/fluent-bit/lib/jansson-e23f558/doc/ext')
-rw-r--r-- | src/fluent-bit/lib/jansson-e23f558/doc/ext/refcounting.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/fluent-bit/lib/jansson-e23f558/doc/ext/refcounting.py b/src/fluent-bit/lib/jansson-e23f558/doc/ext/refcounting.py new file mode 100644 index 000000000..e72c481c5 --- /dev/null +++ b/src/fluent-bit/lib/jansson-e23f558/doc/ext/refcounting.py @@ -0,0 +1,69 @@ +""" + refcounting + ~~~~~~~~~~~ + + Reference count annotations for C API functions. Has the same + result as the sphinx.ext.refcounting extension but works for all + functions regardless of the signature, and the reference counting + information is written inline with the documentation instead of a + separate file. + + Adds a new directive "refcounting". The directive has no content + and one required positional parameter:: "new" or "borrow". + + Example: + + .. cfunction:: json_t *json_object(void) + + .. refcounting:: new + + <description of the json_object function> + + :copyright: Copyright (c) 2009-2016 Petri Lehtinen <petri@digip.org> + :license: MIT, see LICENSE for details. +""" + +from docutils import nodes +from docutils.parsers.rst import Directive + + +def visit(self, node): + self.visit_emphasis(node) + +def depart(self, node): + self.depart_emphasis(node) + +def html_visit(self, node): + self.body.append(self.starttag(node, 'em', '', CLASS='refcount')) + +def html_depart(self, node): + self.body.append('</em>') + + +class refcounting(nodes.emphasis): + pass + +class refcounting_directive(Directive): + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = False + + def run(self): + if self.arguments[0] == 'borrow': + text = 'Return value: Borrowed reference.' + elif self.arguments[0] == 'new': + text = 'Return value: New reference.' + else: + raise Error('Valid arguments: new, borrow') + + return [refcounting(text, text)] + + +def setup(app): + app.add_node(refcounting, + html=(html_visit, html_depart), + latex=(visit, depart), + text=(visit, depart), + man=(visit, depart)) + app.add_directive('refcounting', refcounting_directive) |