mirror of https://github.com/GOSTSec/sgminer
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.7 KiB
59 lines
1.7 KiB
""" |
|
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-2013 Petri Lehtinen <petri@digip.org> |
|
:license: MIT, see LICENSE for details. |
|
""" |
|
|
|
from docutils import nodes |
|
|
|
class refcounting(nodes.emphasis): pass |
|
|
|
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>') |
|
|
|
|
|
def refcounting_directive(name, arguments, options, content, lineno, |
|
content_offset, block_text, state, state_machine): |
|
if arguments[0] == 'borrow': |
|
text = 'Return value: Borrowed reference.' |
|
elif 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)) |
|
app.add_directive('refcounting', refcounting_directive, 0, (1, 0, 0))
|
|
|