- 04 Aug, 2016 4 commits
-
-
Jason Rhinelander authored
Functions returning specialized Eigen matrices like Eigen::DiagonalMatrix and Eigen::SelfAdjointView--which inherit from EigenBase but not DenseBase--isn't currently allowed; such classes are explicitly copyable into a Matrix (by definition), and so we can support functions that return them by copying the value into a Matrix then casting that resulting dense Matrix into a numpy.ndarray. This commit does exactly that.
-
Jason Rhinelander authored
Some Eigen objects, such as those returned by matrix.diagonal() and matrix.block() have non-standard stride values because they are basically just maps onto the underlying matrix without copying it (for example, the primary diagonal of a 3x3 matrix is a vector-like object with .src equal to the full matrix data, but with stride 4). Returning such an object from a pybind11 method breaks, however, because pybind11 assumes vectors have stride 1, and that matrices have strides equal to the number of rows/columns or 1 (depending on whether the matrix is stored column-major or row-major). This commit fixes the issue by making pybind11 use Eigen's stride methods when copying the data.
-
Jason Rhinelander authored
This makes the Python interface mirror the C++ interface: pybind11-exported scoped enums aren't directly comparable to the underlying integer values.
-
Jason Rhinelander authored
PR #309 broke scoped enums, which failed to compile because the added: value == value2 comparison isn't valid for a scoped enum (they aren't implicitly convertible to the underlying type). This commit fixes it by explicitly converting the enum value to its underlying type before doing the comparison. It also adds a scoped enum example to the constants-and-functions example that triggers the problem fixed in this commit.
-
- 03 Aug, 2016 2 commits
-
-
Jason Rhinelander authored
Eigen::Ref is a common way to pass eigen dense types without needing a template, e.g. the single definition `void func(Eigen::Ref<Eigen::MatrixXd> x)` can be called with any double matrix-like object. The current pybind11 eigen support fails with internal errors if attempting to bind a function with an Eigen::Ref<...> argument because Eigen::Ref<...> satisfies the "is_eigen_dense" requirement, but can't compile if actually used: Eigen::Ref<...> itself is not default constructible, and so the argument std::tuple containing an Eigen::Ref<...> isn't constructible, which results in compilation failure. This commit adds support for Eigen::Ref<...> by giving it its own type_caster implementation which consists of an internal type_caster of the referenced type, load/cast methods that dispatch to the internal type_caster, and a unique_ptr to an Eigen::Ref<> instance that gets set during load(). There is, of course, no performance advantage for pybind11-using code of using Eigen::Ref<...>--we are allocating a matrix of the derived type when loading it--but this has the advantage of allowing pybind11 to bind transparently to C++ methods taking Eigen::Refs.
-
Pim Schellart authored
-
- 02 Aug, 2016 1 commit
-
-
Pim Schellart authored
-
- 01 Aug, 2016 1 commit
-
-
Trygve Laugstøl authored
PyObject_SetItem and PyObject_SetAttr both throws an exception on failure so this will show the underlying exception instead of masking it. Fixes #303.
-
- 19 Jul, 2016 2 commits
-
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
- 18 Jul, 2016 2 commits
-
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
- 17 Jul, 2016 1 commit
-
-
Jason Rhinelander authored
This changes the exception error message of a bad-arguments error to suppress the constructor argument when the failure is a constructor. This changes both the "Invoked with: " output to omit the object instances, and rewrites the constructor signature to make it look like a constructor (changing the first argument to the object name, and removing the ' -> NoneType' return type.
-
- 12 Jul, 2016 1 commit
-
-
Wenzel Jakob authored
-
- 11 Jul, 2016 2 commits
-
-
Wenzel Jakob authored
-
Pim Schellart authored
-
- 10 Jul, 2016 1 commit
-
-
Wenzel Jakob authored
-
- 09 Jul, 2016 1 commit
-
-
Wenzel Jakob authored
-
- 08 Jul, 2016 5 commits
-
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
Klemens Morgenstern authored
-
- 07 Jul, 2016 2 commits
-
-
Jason Rhinelander authored
Otherwise this would create unknown option warnings under g++ < 6.
-
Jason Rhinelander authored
GCC-6 adds a -Wplacement-new warning that warns for placement-new into a space that is too small, which is sometimes being triggered here (e.g. example5 always generates the warning under g++-6). It's a false warning, however: the line immediately before just checked the size, and so this line is never going to actually be reached in the cases where the GCC warning is being triggered. This localizes the warning disabling just to this one spot as there are other placement-new uses in pybind11 where this warning could warn about legitimate future problems.
-
- 06 Jul, 2016 1 commit
-
-
Jason Rhinelander authored
This commit adds an additional _ template function for compile-time selection between two description strings. This in turn allows the elimination of needing two name() methods in type_caster<arithmetic types> and type_caster<eigen types>, which allows them to start using PYBIND11_TYPE_CASTER instead, simplifying their code by eliminating all the code that they are duplicating from the macro.
-
- 05 Jul, 2016 1 commit
-
-
Ben North authored
In eigen.h, type_caster<Type>::load(): For the 'ndim == 1' case, use the 'InnerStride' type because there is only an inner stride for a vector. Choose between (n_elts x 1) or (1 x n_elts) according to whether we're constructing a Vector or a RowVector.
-
- 01 Jul, 2016 4 commits
-
-
Merlin Nimier-David authored
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
hbruintjes authored
Allows const types to be used by shared_ptr
-
- 27 Jun, 2016 1 commit
-
-
Wenzel Jakob authored
-
- 22 Jun, 2016 2 commits
-
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
- 17 Jun, 2016 2 commits
-
-
Ivan Smirnov authored
-
Ivan Smirnov authored
-
- 15 Jun, 2016 2 commits
-
-
Jerry Gamache authored
-
Jerry Gamache authored
-
- 14 Jun, 2016 1 commit
-
-
Wenzel Jakob authored
-
- 03 Jun, 2016 1 commit
-
-
Dean Moldovan authored
-