Skip to content
Snippets Groups Projects
c_cpp_api.rst 1.75 KiB
Newer Older
.. vim: set fileencoding=utf-8 :
.. Andre Anjos <andre.dos.anjos@gmail.com>
.. Tue 15 Oct 14:59:05 2013

=========
 C++ API
=========

The C++ API of ``xbob.io`` allows users to leverage from automatic converters
for classes in :py:class:`xbob.io`.  To use the C API, clients should first,
include the header file ``<xbob.io/api.h>`` on their compilation units and
then, make sure to call once ``import_xbob_io()`` at their module
instantiation, as explained at the `Python manual
<http://docs.python.org/2/extending/extending.html#using-capsules>`_.

Here is a dummy C example showing how to include the header and where to call
the import function:

.. code-block:: c++

   #include <xbob.io/api.h>

   PyMODINIT_FUNC initclient(void) {

     PyObject* m Py_InitModule("client", ClientMethods);

     if (!m) return;

     // imports the NumPy C-API 
     import_array();

     // imports blitz.array C-API
     import_blitz_array();

     // imports xbob.core.random C-API
     import_xbob_io();

   }

.. note::

  The include directory can be discovered using
  :py:func:`xbob.io.get_include`.
Generic Functions
-----------------
.. cpp:function:: int PyBobIo_AsTypenum(bob::core::array::ElementType et)
   Converts the input Bob element type into a ``NPY_<TYPE>`` enumeration value.
   Returns ``NPY_NOTYPE`` in case of problems, and sets a
   :py:class:`RuntimeError`.
Bob File Support
----------------

.. cpp:type:: PyBobIoFileObject
   The pythonic object representation for a ``bob::io::File`` object.
   .. code-block:: cpp

      typedef struct {
        PyObject_HEAD
        boost::shared_ptr<bob::io::File> f;
      } PyBobIoFileObject;
   .. cpp:member:: boost::shared_ptr<bob::io::File> f
      A pointer to a file being read or written.

.. include:: links.rst