aboutsummaryrefslogtreecommitdiffstats
path: root/3rdparty/pybind11/docs/advanced/cast/index.rst
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-07-27 13:50:42 +0100
committerGitHub <noreply@github.com>2020-07-27 13:50:42 +0100
commitb39a2a502065ec1407417ffacdac2154385bf80f (patch)
tree3349c93ac87f5758009c53b3e2eb5b9a130cd0d6 /3rdparty/pybind11/docs/advanced/cast/index.rst
parente6991ad5dc79f6118838f091cc05f10d3377eb4a (diff)
parentfe398ab983aee9283f61c288dc98d94542c30332 (diff)
downloadnextpnr-b39a2a502065ec1407417ffacdac2154385bf80f.tar.gz
nextpnr-b39a2a502065ec1407417ffacdac2154385bf80f.tar.bz2
nextpnr-b39a2a502065ec1407417ffacdac2154385bf80f.zip
Merge pull request #477 from YosysHQ/pybind11
Move to pybind11
Diffstat (limited to '3rdparty/pybind11/docs/advanced/cast/index.rst')
-rw-r--r--3rdparty/pybind11/docs/advanced/cast/index.rst42
1 files changed, 42 insertions, 0 deletions
diff --git a/3rdparty/pybind11/docs/advanced/cast/index.rst b/3rdparty/pybind11/docs/advanced/cast/index.rst
new file mode 100644
index 00000000..54c10570
--- /dev/null
+++ b/3rdparty/pybind11/docs/advanced/cast/index.rst
@@ -0,0 +1,42 @@
+Type conversions
+################
+
+Apart from enabling cross-language function calls, a fundamental problem
+that a binding tool like pybind11 must address is to provide access to
+native Python types in C++ and vice versa. There are three fundamentally
+different ways to do this—which approach is preferable for a particular type
+depends on the situation at hand.
+
+1. Use a native C++ type everywhere. In this case, the type must be wrapped
+ using pybind11-generated bindings so that Python can interact with it.
+
+2. Use a native Python type everywhere. It will need to be wrapped so that
+ C++ functions can interact with it.
+
+3. Use a native C++ type on the C++ side and a native Python type on the
+ Python side. pybind11 refers to this as a *type conversion*.
+
+ Type conversions are the most "natural" option in the sense that native
+ (non-wrapped) types are used everywhere. The main downside is that a copy
+ of the data must be made on every Python ↔ C++ transition: this is
+ needed since the C++ and Python versions of the same type generally won't
+ have the same memory layout.
+
+ pybind11 can perform many kinds of conversions automatically. An overview
+ is provided in the table ":ref:`conversion_table`".
+
+The following subsections discuss the differences between these options in more
+detail. The main focus in this section is on type conversions, which represent
+the last case of the above list.
+
+.. toctree::
+ :maxdepth: 1
+
+ overview
+ strings
+ stl
+ functional
+ chrono
+ eigen
+ custom
+