mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Split out the C domain
This commit is contained in:
parent
d491d3e04c
commit
db6cc67f1a
359
doc/usage/domains/c.rst
Normal file
359
doc/usage/domains/c.rst
Normal file
@ -0,0 +1,359 @@
|
||||
.. highlight:: rst
|
||||
|
||||
.. _c-domain:
|
||||
|
||||
The C Domain
|
||||
------------
|
||||
|
||||
The C domain (name **c**) is suited for documentation of C API.
|
||||
|
||||
.. rst:directive:: .. c:member:: declaration
|
||||
.. c:var:: declaration
|
||||
|
||||
Describes a C struct member or variable. Example signature::
|
||||
|
||||
.. c:member:: PyObject *PyTypeObject.tp_bases
|
||||
|
||||
The difference between the two directives is only cosmetic.
|
||||
|
||||
.. rst:directive:: .. c:function:: function prototype
|
||||
|
||||
Describes a C function. The signature should be given as in C, e.g.::
|
||||
|
||||
.. c:function:: PyObject *PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
|
||||
|
||||
Note that you don't have to backslash-escape asterisks in the signature, as
|
||||
it is not parsed by the reST inliner.
|
||||
|
||||
In the description of a function you can use the following info fields
|
||||
(see also :ref:`info-field-lists`).
|
||||
|
||||
* ``param``, ``parameter``, ``arg``, ``argument``,
|
||||
Description of a parameter.
|
||||
* ``type``: Type of a parameter,
|
||||
written as if passed to the :rst:role:`c:expr` role.
|
||||
* ``returns``, ``return``: Description of the return value.
|
||||
* ``rtype``: Return type,
|
||||
written as if passed to the :rst:role:`c:expr` role.
|
||||
* ``retval``, ``retvals``: An alternative to ``returns`` for describing
|
||||
the result of the function.
|
||||
|
||||
.. versionadded:: 4.3
|
||||
The ``retval`` field type.
|
||||
|
||||
For example::
|
||||
|
||||
.. c:function:: PyObject *PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
|
||||
|
||||
:param type: description of the first parameter.
|
||||
:param nitems: description of the second parameter.
|
||||
:returns: a result.
|
||||
:retval NULL: under some conditions.
|
||||
:retval NULL: under some other conditions as well.
|
||||
|
||||
which renders as
|
||||
|
||||
.. c:function:: PyObject *PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
|
||||
|
||||
..
|
||||
** for some editors (e.g., vim) to stop bold-highlighting the source
|
||||
|
||||
:param type: description of the first parameter.
|
||||
:param nitems: description of the second parameter.
|
||||
:returns: a result.
|
||||
:retval NULL: under some conditions.
|
||||
:retval NULL: under some other conditions as well.
|
||||
|
||||
.. rst:directive:option:: single-line-parameter-list
|
||||
:type: no value
|
||||
|
||||
Ensures that the function's parameters will be emitted on a single logical
|
||||
line, overriding :confval:`c_maximum_signature_line_length` and
|
||||
:confval:`maximum_signature_line_length`.
|
||||
|
||||
.. versionadded:: 7.1
|
||||
|
||||
|
||||
.. rst:directive:: .. c:macro:: name
|
||||
.. c:macro:: name(arg list)
|
||||
|
||||
Describes a C macro, i.e., a C-language ``#define``, without the replacement
|
||||
text.
|
||||
|
||||
In the description of a macro you can use the same info fields as for the
|
||||
:rst:dir:`c:function` directive.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
The function style variant.
|
||||
|
||||
.. rst:directive:option:: single-line-parameter-list
|
||||
:type: no value
|
||||
|
||||
Ensures that the macro's parameters will be emitted on a single logical
|
||||
line, overriding :confval:`c_maximum_signature_line_length` and
|
||||
:confval:`maximum_signature_line_length`.
|
||||
|
||||
.. versionadded:: 7.1
|
||||
|
||||
.. rst:directive:: .. c:struct:: name
|
||||
|
||||
Describes a C struct.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
.. rst:directive:: .. c:union:: name
|
||||
|
||||
Describes a C union.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
.. rst:directive:: .. c:enum:: name
|
||||
|
||||
Describes a C enum.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
.. rst:directive:: .. c:enumerator:: name
|
||||
|
||||
Describes a C enumerator.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
.. rst:directive:: .. c:type:: typedef-like declaration
|
||||
.. c:type:: name
|
||||
|
||||
Describes a C type, either as a typedef, or the alias for an unspecified
|
||||
type.
|
||||
|
||||
.. _c-roles:
|
||||
|
||||
Cross-referencing C constructs
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The following roles create cross-references to C-language constructs if they
|
||||
are defined in the documentation:
|
||||
|
||||
.. rst:role:: c:member
|
||||
c:data
|
||||
c:var
|
||||
c:func
|
||||
c:macro
|
||||
c:struct
|
||||
c:union
|
||||
c:enum
|
||||
c:enumerator
|
||||
c:type
|
||||
|
||||
Reference a C declaration, as defined above.
|
||||
Note that :rst:role:`c:member`, :rst:role:`c:data`, and
|
||||
:rst:role:`c:var` are equivalent.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
The var, struct, union, enum, and enumerator roles.
|
||||
|
||||
|
||||
Anonymous Entities
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
C supports anonymous structs, enums, and unions.
|
||||
For the sake of documentation they must be given some name that starts with
|
||||
``@``, e.g., ``@42`` or ``@data``.
|
||||
These names can also be used in cross-references,
|
||||
though nested symbols will be found even when omitted.
|
||||
The ``@...`` name will always be rendered as **[anonymous]** (possibly as a
|
||||
link).
|
||||
|
||||
Example::
|
||||
|
||||
.. c:struct:: Data
|
||||
|
||||
.. c:union:: @data
|
||||
|
||||
.. c:var:: int a
|
||||
|
||||
.. c:var:: double b
|
||||
|
||||
Explicit ref: :c:var:`Data.@data.a`. Short-hand ref: :c:var:`Data.a`.
|
||||
|
||||
This will be rendered as:
|
||||
|
||||
.. c:struct:: Data
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
.. c:union:: @data
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
.. c:var:: int a
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
.. c:var:: double b
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
Explicit ref: :c:var:`Data.@data.a`. Short-hand ref: :c:var:`Data.a`.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
|
||||
Aliasing Declarations
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. c:namespace-push:: @alias
|
||||
|
||||
Sometimes it may be helpful list declarations elsewhere than their main
|
||||
documentation, e.g., when creating a synopsis of an interface.
|
||||
The following directive can be used for this purpose.
|
||||
|
||||
.. rst:directive:: .. c:alias:: name
|
||||
|
||||
Insert one or more alias declarations. Each entity can be specified
|
||||
as they can in the :rst:role:`c:any` role.
|
||||
|
||||
For example::
|
||||
|
||||
.. c:var:: int data
|
||||
.. c:function:: int f(double k)
|
||||
|
||||
.. c:alias:: data
|
||||
f
|
||||
|
||||
becomes
|
||||
|
||||
.. c:var:: int data
|
||||
.. c:function:: int f(double k)
|
||||
|
||||
.. c:alias:: data
|
||||
f
|
||||
|
||||
.. versionadded:: 3.2
|
||||
|
||||
|
||||
.. rubric:: Options
|
||||
|
||||
.. rst:directive:option:: maxdepth: int
|
||||
|
||||
Insert nested declarations as well, up to the total depth given.
|
||||
Use 0 for infinite depth and 1 for just the mentioned declaration.
|
||||
Defaults to 1.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
.. rst:directive:option:: noroot
|
||||
|
||||
Skip the mentioned declarations and only render nested declarations.
|
||||
Requires ``maxdepth`` either 0 or at least 2.
|
||||
|
||||
.. versionadded:: 3.5
|
||||
|
||||
|
||||
.. c:namespace-pop::
|
||||
|
||||
|
||||
Inline Expressions and Types
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. rst:role:: c:expr
|
||||
c:texpr
|
||||
|
||||
Insert a C expression or type either as inline code (``cpp:expr``)
|
||||
or inline text (``cpp:texpr``). For example::
|
||||
|
||||
.. c:var:: int a = 42
|
||||
|
||||
.. c:function:: int f(int i)
|
||||
|
||||
An expression: :c:expr:`a * f(a)` (or as text: :c:texpr:`a * f(a)`).
|
||||
|
||||
A type: :c:expr:`const Data*`
|
||||
(or as text :c:texpr:`const Data*`).
|
||||
|
||||
will be rendered as follows:
|
||||
|
||||
.. c:var:: int a = 42
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
.. c:function:: int f(int i)
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
An expression: :c:expr:`a * f(a)` (or as text: :c:texpr:`a * f(a)`).
|
||||
|
||||
A type: :c:expr:`const Data*`
|
||||
(or as text :c:texpr:`const Data*`).
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
|
||||
Namespacing
|
||||
~~~~~~~~~~~
|
||||
|
||||
.. versionadded:: 3.1
|
||||
|
||||
The C language it self does not support namespacing, but it can sometimes be
|
||||
useful to emulate it in documentation, e.g., to show alternate declarations.
|
||||
The feature may also be used to document members of structs/unions/enums
|
||||
separate from their parent declaration.
|
||||
|
||||
The current scope can be changed using three namespace directives. They manage
|
||||
a stack declarations where ``c:namespace`` resets the stack and changes a given
|
||||
scope.
|
||||
|
||||
The ``c:namespace-push`` directive changes the scope to a given inner scope
|
||||
of the current one.
|
||||
|
||||
The ``c:namespace-pop`` directive undoes the most recent
|
||||
``c:namespace-push`` directive.
|
||||
|
||||
.. rst:directive:: .. c:namespace:: scope specification
|
||||
|
||||
Changes the current scope for the subsequent objects to the given scope, and
|
||||
resets the namespace directive stack. Note that nested scopes can be
|
||||
specified by separating with a dot, e.g.::
|
||||
|
||||
.. c:namespace:: Namespace1.Namespace2.SomeStruct.AnInnerStruct
|
||||
|
||||
All subsequent objects will be defined as if their name were declared with
|
||||
the scope prepended. The subsequent cross-references will be searched for
|
||||
starting in the current scope.
|
||||
|
||||
Using ``NULL`` or ``0`` as the scope will change to global scope.
|
||||
|
||||
.. rst:directive:: .. c:namespace-push:: scope specification
|
||||
|
||||
Change the scope relatively to the current scope. For example, after::
|
||||
|
||||
.. c:namespace:: A.B
|
||||
|
||||
.. c:namespace-push:: C.D
|
||||
|
||||
the current scope will be ``A.B.C.D``.
|
||||
|
||||
.. rst:directive:: .. c:namespace-pop::
|
||||
|
||||
Undo the previous ``c:namespace-push`` directive (*not* just pop a scope).
|
||||
For example, after::
|
||||
|
||||
.. c:namespace:: A.B
|
||||
|
||||
.. c:namespace-push:: C.D
|
||||
|
||||
.. c:namespace-pop::
|
||||
|
||||
the current scope will be ``A.B`` (*not* ``A.B.C``).
|
||||
|
||||
If no previous ``c:namespace-push`` directive has been used, but only a
|
||||
``c:namespace`` directive, then the current scope will be reset to global
|
||||
scope. That is, ``.. c:namespace:: A.B`` is equivalent to::
|
||||
|
||||
.. c:namespace:: NULL
|
||||
|
||||
.. c:namespace-push:: A.B
|
||||
|
||||
Configuration Variables
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
See :ref:`c-config`.
|
@ -171,365 +171,6 @@ In short:
|
||||
refer to ``Queue.Queue.get`` but only display ``get`` as the link text.
|
||||
|
||||
|
||||
.. _c-domain:
|
||||
|
||||
The C Domain
|
||||
------------
|
||||
|
||||
The C domain (name **c**) is suited for documentation of C API.
|
||||
|
||||
.. rst:directive:: .. c:member:: declaration
|
||||
.. c:var:: declaration
|
||||
|
||||
Describes a C struct member or variable. Example signature::
|
||||
|
||||
.. c:member:: PyObject *PyTypeObject.tp_bases
|
||||
|
||||
The difference between the two directives is only cosmetic.
|
||||
|
||||
.. rst:directive:: .. c:function:: function prototype
|
||||
|
||||
Describes a C function. The signature should be given as in C, e.g.::
|
||||
|
||||
.. c:function:: PyObject *PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
|
||||
|
||||
Note that you don't have to backslash-escape asterisks in the signature, as
|
||||
it is not parsed by the reST inliner.
|
||||
|
||||
In the description of a function you can use the following info fields
|
||||
(see also :ref:`info-field-lists`).
|
||||
|
||||
* ``param``, ``parameter``, ``arg``, ``argument``,
|
||||
Description of a parameter.
|
||||
* ``type``: Type of a parameter,
|
||||
written as if passed to the :rst:role:`c:expr` role.
|
||||
* ``returns``, ``return``: Description of the return value.
|
||||
* ``rtype``: Return type,
|
||||
written as if passed to the :rst:role:`c:expr` role.
|
||||
* ``retval``, ``retvals``: An alternative to ``returns`` for describing
|
||||
the result of the function.
|
||||
|
||||
.. versionadded:: 4.3
|
||||
The ``retval`` field type.
|
||||
|
||||
For example::
|
||||
|
||||
.. c:function:: PyObject *PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
|
||||
|
||||
:param type: description of the first parameter.
|
||||
:param nitems: description of the second parameter.
|
||||
:returns: a result.
|
||||
:retval NULL: under some conditions.
|
||||
:retval NULL: under some other conditions as well.
|
||||
|
||||
which renders as
|
||||
|
||||
.. c:function:: PyObject *PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
|
||||
|
||||
..
|
||||
** for some editors (e.g., vim) to stop bold-highlighting the source
|
||||
|
||||
:param type: description of the first parameter.
|
||||
:param nitems: description of the second parameter.
|
||||
:returns: a result.
|
||||
:retval NULL: under some conditions.
|
||||
:retval NULL: under some other conditions as well.
|
||||
|
||||
.. rst:directive:option:: single-line-parameter-list
|
||||
:type: no value
|
||||
|
||||
Ensures that the function's parameters will be emitted on a single logical
|
||||
line, overriding :confval:`c_maximum_signature_line_length` and
|
||||
:confval:`maximum_signature_line_length`.
|
||||
|
||||
.. versionadded:: 7.1
|
||||
|
||||
|
||||
.. rst:directive:: .. c:macro:: name
|
||||
.. c:macro:: name(arg list)
|
||||
|
||||
Describes a C macro, i.e., a C-language ``#define``, without the replacement
|
||||
text.
|
||||
|
||||
In the description of a macro you can use the same info fields as for the
|
||||
:rst:dir:`c:function` directive.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
The function style variant.
|
||||
|
||||
.. rst:directive:option:: single-line-parameter-list
|
||||
:type: no value
|
||||
|
||||
Ensures that the macro's parameters will be emitted on a single logical
|
||||
line, overriding :confval:`c_maximum_signature_line_length` and
|
||||
:confval:`maximum_signature_line_length`.
|
||||
|
||||
.. versionadded:: 7.1
|
||||
|
||||
.. rst:directive:: .. c:struct:: name
|
||||
|
||||
Describes a C struct.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
.. rst:directive:: .. c:union:: name
|
||||
|
||||
Describes a C union.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
.. rst:directive:: .. c:enum:: name
|
||||
|
||||
Describes a C enum.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
.. rst:directive:: .. c:enumerator:: name
|
||||
|
||||
Describes a C enumerator.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
.. rst:directive:: .. c:type:: typedef-like declaration
|
||||
.. c:type:: name
|
||||
|
||||
Describes a C type, either as a typedef, or the alias for an unspecified
|
||||
type.
|
||||
|
||||
.. _c-roles:
|
||||
|
||||
Cross-referencing C constructs
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The following roles create cross-references to C-language constructs if they
|
||||
are defined in the documentation:
|
||||
|
||||
.. rst:role:: c:member
|
||||
c:data
|
||||
c:var
|
||||
c:func
|
||||
c:macro
|
||||
c:struct
|
||||
c:union
|
||||
c:enum
|
||||
c:enumerator
|
||||
c:type
|
||||
|
||||
Reference a C declaration, as defined above.
|
||||
Note that :rst:role:`c:member`, :rst:role:`c:data`, and
|
||||
:rst:role:`c:var` are equivalent.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
The var, struct, union, enum, and enumerator roles.
|
||||
|
||||
|
||||
Anonymous Entities
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
C supports anonymous structs, enums, and unions.
|
||||
For the sake of documentation they must be given some name that starts with
|
||||
``@``, e.g., ``@42`` or ``@data``.
|
||||
These names can also be used in cross-references,
|
||||
though nested symbols will be found even when omitted.
|
||||
The ``@...`` name will always be rendered as **[anonymous]** (possibly as a
|
||||
link).
|
||||
|
||||
Example::
|
||||
|
||||
.. c:struct:: Data
|
||||
|
||||
.. c:union:: @data
|
||||
|
||||
.. c:var:: int a
|
||||
|
||||
.. c:var:: double b
|
||||
|
||||
Explicit ref: :c:var:`Data.@data.a`. Short-hand ref: :c:var:`Data.a`.
|
||||
|
||||
This will be rendered as:
|
||||
|
||||
.. c:struct:: Data
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
.. c:union:: @data
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
.. c:var:: int a
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
.. c:var:: double b
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
Explicit ref: :c:var:`Data.@data.a`. Short-hand ref: :c:var:`Data.a`.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
|
||||
Aliasing Declarations
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. c:namespace-push:: @alias
|
||||
|
||||
Sometimes it may be helpful list declarations elsewhere than their main
|
||||
documentation, e.g., when creating a synopsis of an interface.
|
||||
The following directive can be used for this purpose.
|
||||
|
||||
.. rst:directive:: .. c:alias:: name
|
||||
|
||||
Insert one or more alias declarations. Each entity can be specified
|
||||
as they can in the :rst:role:`c:any` role.
|
||||
|
||||
For example::
|
||||
|
||||
.. c:var:: int data
|
||||
.. c:function:: int f(double k)
|
||||
|
||||
.. c:alias:: data
|
||||
f
|
||||
|
||||
becomes
|
||||
|
||||
.. c:var:: int data
|
||||
.. c:function:: int f(double k)
|
||||
|
||||
.. c:alias:: data
|
||||
f
|
||||
|
||||
.. versionadded:: 3.2
|
||||
|
||||
|
||||
.. rubric:: Options
|
||||
|
||||
.. rst:directive:option:: maxdepth: int
|
||||
|
||||
Insert nested declarations as well, up to the total depth given.
|
||||
Use 0 for infinite depth and 1 for just the mentioned declaration.
|
||||
Defaults to 1.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
.. rst:directive:option:: noroot
|
||||
|
||||
Skip the mentioned declarations and only render nested declarations.
|
||||
Requires ``maxdepth`` either 0 or at least 2.
|
||||
|
||||
.. versionadded:: 3.5
|
||||
|
||||
|
||||
.. c:namespace-pop::
|
||||
|
||||
|
||||
Inline Expressions and Types
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. rst:role:: c:expr
|
||||
c:texpr
|
||||
|
||||
Insert a C expression or type either as inline code (``cpp:expr``)
|
||||
or inline text (``cpp:texpr``). For example::
|
||||
|
||||
.. c:var:: int a = 42
|
||||
|
||||
.. c:function:: int f(int i)
|
||||
|
||||
An expression: :c:expr:`a * f(a)` (or as text: :c:texpr:`a * f(a)`).
|
||||
|
||||
A type: :c:expr:`const Data*`
|
||||
(or as text :c:texpr:`const Data*`).
|
||||
|
||||
will be rendered as follows:
|
||||
|
||||
.. c:var:: int a = 42
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
.. c:function:: int f(int i)
|
||||
:no-contents-entry:
|
||||
:no-index-entry:
|
||||
|
||||
An expression: :c:expr:`a * f(a)` (or as text: :c:texpr:`a * f(a)`).
|
||||
|
||||
A type: :c:expr:`const Data*`
|
||||
(or as text :c:texpr:`const Data*`).
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
|
||||
Namespacing
|
||||
~~~~~~~~~~~
|
||||
|
||||
.. versionadded:: 3.1
|
||||
|
||||
The C language it self does not support namespacing, but it can sometimes be
|
||||
useful to emulate it in documentation, e.g., to show alternate declarations.
|
||||
The feature may also be used to document members of structs/unions/enums
|
||||
separate from their parent declaration.
|
||||
|
||||
The current scope can be changed using three namespace directives. They manage
|
||||
a stack declarations where ``c:namespace`` resets the stack and changes a given
|
||||
scope.
|
||||
|
||||
The ``c:namespace-push`` directive changes the scope to a given inner scope
|
||||
of the current one.
|
||||
|
||||
The ``c:namespace-pop`` directive undoes the most recent
|
||||
``c:namespace-push`` directive.
|
||||
|
||||
.. rst:directive:: .. c:namespace:: scope specification
|
||||
|
||||
Changes the current scope for the subsequent objects to the given scope, and
|
||||
resets the namespace directive stack. Note that nested scopes can be
|
||||
specified by separating with a dot, e.g.::
|
||||
|
||||
.. c:namespace:: Namespace1.Namespace2.SomeStruct.AnInnerStruct
|
||||
|
||||
All subsequent objects will be defined as if their name were declared with
|
||||
the scope prepended. The subsequent cross-references will be searched for
|
||||
starting in the current scope.
|
||||
|
||||
Using ``NULL`` or ``0`` as the scope will change to global scope.
|
||||
|
||||
.. rst:directive:: .. c:namespace-push:: scope specification
|
||||
|
||||
Change the scope relatively to the current scope. For example, after::
|
||||
|
||||
.. c:namespace:: A.B
|
||||
|
||||
.. c:namespace-push:: C.D
|
||||
|
||||
the current scope will be ``A.B.C.D``.
|
||||
|
||||
.. rst:directive:: .. c:namespace-pop::
|
||||
|
||||
Undo the previous ``c:namespace-push`` directive (*not* just pop a scope).
|
||||
For example, after::
|
||||
|
||||
.. c:namespace:: A.B
|
||||
|
||||
.. c:namespace-push:: C.D
|
||||
|
||||
.. c:namespace-pop::
|
||||
|
||||
the current scope will be ``A.B`` (*not* ``A.B.C``).
|
||||
|
||||
If no previous ``c:namespace-push`` directive has been used, but only a
|
||||
``c:namespace`` directive, then the current scope will be reset to global
|
||||
scope. That is, ``.. c:namespace:: A.B`` is equivalent to::
|
||||
|
||||
.. c:namespace:: NULL
|
||||
|
||||
.. c:namespace-push:: A.B
|
||||
|
||||
Configuration Variables
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
See :ref:`c-config`.
|
||||
|
||||
|
||||
.. _cpp-domain:
|
||||
|
||||
The C++ Domain
|
||||
|
Loading…
Reference in New Issue
Block a user