- 04 Aug, 2016 6 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.
-
Wenzel Jakob authored
Fix eigen copying of non-standard stride values
-
Wenzel Jakob authored
Fix scoped enums and add scoped enum example
-
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 4 commits
-
-
Wenzel Jakob authored
Add support for Eigen::Ref<...> function arguments
-
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.
-
Wenzel Jakob authored
Fix zero valued enum comparison error
-
Pim Schellart authored
-
- 02 Aug, 2016 4 commits
-
-
Wenzel Jakob authored
Enable comparisons between enums and their underlying types
-
Pim Schellart authored
-
Wenzel Jakob authored
-
Wenzel Jakob authored
Mark pybind11 include dir as PRIVATE to avoid a CMake error message.
-
- 01 Aug, 2016 6 commits
-
-
Wenzel Jakob authored
Improve CI test coverage: eigen, numpy and C++14
-
Dean Moldovan authored
-
Wenzel Jakob authored
-
Wenzel Jakob authored
Changes accessor::operator=() to throw error_already_set() instead of using pybind11_fail().
-
Trygve Laugstøl authored
Mark the pybind11 headers as private to the target. Fixes #305
-
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.
-
- 30 Jul, 2016 1 commit
-
-
Dean Moldovan authored
-
- 19 Jul, 2016 4 commits
-
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
- 18 Jul, 2016 7 commits
-
-
Wenzel Jakob authored
Rename examples files, as per #288
-
Jason Rhinelander authored
-
Jason Rhinelander authored
This renames example files from `exampleN` to `example-description`. Specifically, the following renaming is applied: example1 -> example-methods-and-attributes example2 -> example-python-types example3 -> example-operator-overloading example4 -> example-constants-and-functions example5 -> example-callbacks (*) example6 -> example-sequence-and-iterators example7 -> example-buffers example8 -> example-custom-ref-counting example9 -> example-modules example10 -> example-numpy-vectorize example11 -> example-arg-keywords-and-defaults example12 -> example-virtual-functions example13 -> example-keep-alive example14 -> example-opaque-types example15 -> example-pickling example16 -> example-inheritance example17 -> example-stl-binders example18 -> example-eval example19 -> example-custom-exceptions * the inheritance parts of example5 are moved into example-inheritance (previously example16), and the remainder is left as example-callbacks. This commit also renames the internal variables ("Example1", "Example2", "Example4", etc.) into non-numeric names ("ExampleMandA", "ExamplePythonTypes", "ExampleWithEnum", etc.) to correspond to the file renaming. The order of tests is preserved, but this can easily be changed if there is some more natural ordering by updating the list in examples/CMakeLists.txt. -
Wenzel Jakob authored
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
Wenzel Jakob authored
Fix #283: don't print first arg of constructor
-
- 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 5 commits
-
-
Wenzel Jakob authored
Add missing scipy run-time dep to eigen test
-
Jason Rhinelander authored
scipy is imported in pybind11/eigen.h when it encounters a sparse matrix, which gets tested in the eigen test.
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-
- 11 Jul, 2016 2 commits
-
-
Wenzel Jakob authored
-
Wenzel Jakob authored
-