From 223afe37fad4b89418633f8f91a522ae6cefab85 Mon Sep 17 00:00:00 2001 From: Ivan Smirnov Date: Sat, 2 Jul 2016 15:33:04 +0100 Subject: [PATCH] Add documentation re: PYBIND11_DTYPE macro --- docs/advanced.rst | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/advanced.rst b/docs/advanced.rst index 1620db71..649454c9 100644 --- a/docs/advanced.rst +++ b/docs/advanced.rst @@ -1358,6 +1358,30 @@ template paramenter, and it ensures that non-conforming arguments are converted into an array satisfying the specified requirements instead of trying the next function overload. +NumPy structured types +====================== + +In order for ``py::array_t`` to work with structured (record) types, we first need +to register the memory layout of the type. This could be done via ``PYBIND11_DTYPE`` +macro which expects the type followed by field names: + +.. code-block:: cpp + + struct A { + int x; + double y; + }; + + struct B { + int z; + A a; + }; + + PYBIND11_DTYPE(A, x, y); + PYBIND11_DTYPE(B, z, a); + + /* now both A and B can be used as template arguments to py::array_t */ + Vectorizing functions =====================