1. 04 Aug, 2016 6 commits
    • Eigen support for special matrix objects · 9ffb3dda
      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 committed
    • Merge pull request #315 from jagerman/eigen-stride-fix · 19637536
      Fix eigen copying of non-standard stride values
      Wenzel Jakob committed
    • Merge pull request #313 from jagerman/scoped-enums · 2fb81afb
      Fix scoped enums and add scoped enum example
      Wenzel Jakob committed
    • Fix eigen copying of non-standard stride values · 8657f308
      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 committed
    • Only support ==/!= int on unscoped enums · d41a2730
      This makes the Python interface mirror the C++ interface:
      pybind11-exported scoped enums aren't directly comparable to the
      underlying integer values.
      Jason Rhinelander committed
    • Fix scoped enums and add scoped enum example · 61354194
      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.
      Jason Rhinelander committed
  2. 03 Aug, 2016 4 commits
    • Merge pull request #312 from jagerman/eigen-ref-args · 39ff2d01
      Add support for Eigen::Ref<...> function arguments
      Wenzel Jakob committed
    • Add support for Eigen::Ref<...> function arguments · 5fd5074a
      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.
      Jason Rhinelander committed
    • Merge pull request #311 from lsst-dm/master · 7f9603fe
      Fix zero valued enum comparison error
      Wenzel Jakob committed
  3. 02 Aug, 2016 4 commits
  4. 01 Aug, 2016 6 commits
  5. 30 Jul, 2016 1 commit
  6. 19 Jul, 2016 4 commits
  7. 18 Jul, 2016 7 commits
  8. 17 Jul, 2016 1 commit
    • Fix #283: don't print first arg of constructor · 4e45e180
      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.
      Jason Rhinelander committed
  9. 12 Jul, 2016 5 commits
  10. 11 Jul, 2016 2 commits