The C++ API of bob.io.base allows users to leverage from automatic converters for classes in bob.io.base. To use the C API, clients should first, include the header file <bob.io.base/api.h> on their compilation units and then, make sure to call once import_bob_io_base() at their module instantiation, as explained at the Python manual.
Here is a dummy C example showing how to include the header and where to call the import function:
#include <bob.io.base/api.h>
PyMODINIT_FUNC initclient(void) {
PyObject* m Py_InitModule("client", ClientMethods);
if (!m) return;
/* imports dependencies */
if (import_bob_blitz() < 0) {
PyErr_Print();
PyErr_SetString(PyExc_ImportError, "cannot import extension");
return 0;
}
if (import_bob_io_base() < 0) {
PyErr_Print();
PyErr_SetString(PyExc_ImportError, "cannot import extension");
return 0;
}
}
Note
The include directory can be discovered using bob.io.base.get_include().
Converts the input Bob element type into a NPY_<TYPE> enumeration value. Returns NPY_NOTYPE in case of problems, and sets a RuntimeError.
Converts the bob::core::array::typeinfo& object into a new reference to a tuple with 3 elements:
- [0]
- The data type as a numpy.dtype object
- [1]
- The shape of the object, as a tuple of integers
- [2]
- The strides of the object, as a tuple of integers
Returns 0 in case of failure, or a new reference to the tuple described above in case of success.
This function is meant to be used with PyArg_ParseTupleAndKeywords() family of functions in the Python C-API. It converts an arbitrary input object into a PyStringObject (in Python2.x) and into a PyBytesObject (in Python3.x). If the input object is of type PyUnicodeObject, which is the default in Python3.x, the unicode code is properly decoded using PyUnicode_AsEncodedString() with encoding set to Py_FileSystemDefaultEncoding and errors set to "strict". On versions of Python >= 3.2, this is just an alias for PyUnicode_FSConverter(), which does a similar job.
Objects which are not PyUnicodeObject are coerced into a bytes/string object using PyObject_Bytes() (on Python3.x) and PyObject_Str() (on Python 2.x).
Returns 0 if an error is detected, 1 on success.
The pythonic object representation for a bob::io::File object.
typedef struct {
PyObject_HEAD
boost::shared_ptr<bob::io::File> f;
} PyBobIoFileObject;
A pointer to a file being read or written.
The pythonic object representation for an iterator over a bob::io::File object.
typedef struct {
PyObject_HEAD
PyBobIoFileObject* pyfile;
Py_ssize_t curpos;
} PyBobIoFileIteratorObject;
A pointer to the pythonic representation of a file.
The current position at the file being pointed to.
The pythonic object representation for a bob::io::HDF5File object.
typedef struct {
PyObject_HEAD
boost::shared_ptr<bob::io::HDF5File> f;
} PyBobIoHDF5FileObject;
A pointer to a Bob object being used to read/write data into an HDF5 file.
Checks if the input object o is a PyBobIoHDF5FileObject. Returns 1 if it is, and 0 otherwise.
This function is meant to be used with PyArg_ParseTupleAndKeywords() family of functions in the Python C-API. It checks the input object to be of type PyBobIoHDF5FileObject and sets a new reference to it (in *a) if it is the case. Returns 0 in case of failure, 1 in case of success.