aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/doc/typesystem_manipulating_objects.rst
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken2/doc/typesystem_manipulating_objects.rst')
-rw-r--r--sources/shiboken2/doc/typesystem_manipulating_objects.rst190
1 files changed, 0 insertions, 190 deletions
diff --git a/sources/shiboken2/doc/typesystem_manipulating_objects.rst b/sources/shiboken2/doc/typesystem_manipulating_objects.rst
deleted file mode 100644
index f76289bc4..000000000
--- a/sources/shiboken2/doc/typesystem_manipulating_objects.rst
+++ /dev/null
@@ -1,190 +0,0 @@
-.. _manipulating-object-and-value-types:
-
-Manipulating Object and Value Types
------------------------------------
-
-.. _inject-code:
-
-inject-code
-^^^^^^^^^^^
- The inject-code node inserts the given code into the generated code for the
- given type or function, and it is a child of the :ref:`object-type`, :ref:`value-type`,
- :ref:`modify-function` and :ref:`add-function` nodes.
-
- The code can be embedded into XML (be careful to use the correct XML entities
- for characters like '<', '>', '&'):
-
- .. code-block:: xml
-
- <value-type>
- <inject-code class="native | target | target-declaration"
- position="beginning | end" since="...">
- // the code
- </inject-code>
- </value-type>
-
- or obtained from an external file:
-
- .. code-block:: xml
-
- <value-type>
- <inject-code class="native | target | target-declaration"
- position="beginning | end" since="..."
- file="external_source.cpp"
- snippet="label"/>
- </value-type>
-
-
- The ``class`` attribute specifies which module of the generated code that
- will be affected by the code injection. The ``class`` attribute accepts the
- following values:
-
- * native: The c++ code
- * target: The binding code
- * target-declaration: The code will be injected into the generated header
- file containing the c++ wrapper class definition.
- * file: The file name
- * snippet: The snippet label (optional)
-
- If the ``position`` attribute is set to *beginning* (the default), the code
- is inserted at the beginning of the function. If it is set to *end*, the code
- is inserted at the end of the function.
-
- The ``since`` attribute specify the API version where this code was injected.
-
- If a ``snippet`` label is given, the code between annotations of the form
-
- .. code-block:: c++
-
- // @snippet label
- ...
- // @snippet label
-
- will be extracted.
-
-modify-field
-^^^^^^^^^^^^
-
- The modify-field node allows you to alter the access privileges for a given
- C++ field when mapping it onto the target language, and it is a child of an
- :ref:`object-type` or a :ref:`value-type` node.
-
- .. code-block:: xml
-
- <object-type>
- <modify-field name="..."
- write="true | false"
- read="true | false" />
- </object-type>
-
- The ``name`` attribute is the name of the field, the *optional* ``write``
- and ``read`` attributes specify the field's access privileges in the target
- language API (both are set to true by default).
- The ``remove`` attribute is an *optional* attribute, which can mark the field
- to be discarded on generation; it has the same purpose of the deprecated tag
- :ref:`remove`.
-
-.. _modify-function:
-
-modify-function
-^^^^^^^^^^^^^^^
-
- The modify-function node allows you to modify a given C++ function when mapping
- it onto the target language, and it is a child of an :ref:`object-type` or a :ref:`value-type`
- node. Use the :ref:`modify-argument` node to specify which argument the modification
- affects.
-
- .. code-block:: xml
-
- <object-type>
- <modify-function signature="..."
- since="..."
- remove="all | c++"
- access="public | private | protected"
- allow-thread="true | auto | false"
- exception-handling="off | auto-off | auto-on | on"
- rename="..." />
- </object-type>
-
- The ``signature`` attribute is a normalized C++ signature, excluding return
- values but including potential const declarations.
-
- The ``since`` attribute specify the API version when this function was modified.
-
- The ``allow-thread`` attribute specifies whether a function should be wrapped
- into ``Py_BEGIN_ALLOW_THREADS`` and ``Py_END_ALLOW_THREADS``, that is,
- temporarily release the GIL (global interpreter lock). Doing so is required
- for any thread-related function (wait operations), functions that might call
- a virtual function (potentially reimplemented in Python), and recommended for
- lengthy I/O operations or similar. It has performance costs, though.
- The value ``auto`` means that it will be turned off for functions for which
- it is deemed to be safe, for example, simple getters.
- The attribute defaults to ``false``.
-
- The ``exception-handling`` attribute specifies whether to generate exception
- handling code (nest the function call into try / catch statements). It accepts
- the following values:
-
- * no, false: Do not generate exception handling code
- * auto-off: Generate exception handling code for functions
- declaring a non-empty ``throw`` list
- * auto-on: Generate exception handling code unless function
- declares ``noexcept``
- * yes, true: Always generate exception handling code
-
- The ``remove``, ``access`` and ``rename`` attributes are *optional* attributes
- for added convenience; they serve the same purpose as the deprecated tags :ref:`remove`, :ref:`access` and :ref:`rename`.
-
-.. _add-function:
-
-add-function
-^^^^^^^^^^^^
-
- The add-function node allows you to add a given function onto the target language,
- and it is a child of an :ref:`object-type` or :ref:`value-type` nodes if the
- function is supposed to be a method, or :ref:`namespace` and :ref:`typesystem` if
- the function is supposed to be a function inside a namespace or a global function.
-
- Typically when adding a function some code must be injected to provide the function
- logic. This can be done using the :ref:`inject-code` node.
-
- .. code-block:: xml
-
- <object-type>
- <add-function signature="..." return-type="..." access="public | protected" static="yes | no" since="..."/>
- </object-type>
-
- The ``return-type`` attribute defaults to *void*, the ``access`` to *public* and the ``static`` one to *no*.
-
- The ``since`` attribute specify the API version when this function was added.
-
- Within the signature, names for the function parameters can be specified by
- enclosing them within the delimiter *@*:
-
- .. code-block:: c++
-
- void foo(int @parameter1@,float)
-
-.. _conversion-rule-on-types:
-
-conversion-rule
-^^^^^^^^^^^^^^^
-
- The conversion-rule node allows you to write customized code to convert the given argument between the target
- language and C++, and is a child of the :ref:`value-type`, :ref:`object-type`, :ref:`primitive-type` and
- :ref:`container-type` nodes.
-
- The code pointed by the file attribute is very tied to the generator using APIExtractor, so it don't follow any
- rules, but the generator rules..
-
- .. code-block:: xml
-
- <value-type name="Foo">
- <convertion-rule file="my_converter_implementation.h" since="..."/>
- </value-type>
-
- The ``since`` attribute specify the API version when this conversion rule became valid.
-
- .. note:: You can also use the conversion-rule node to specify :ref:`how the conversion of a single function argument should be done in a function <conversion-rule>`.
-
- The ``file`` and ``snippet`` attributes are also supported (see :ref:`inject-code` nodes).