1. 08 Aug, 2016 3 commits
  2. 05 Aug, 2016 2 commits
    • virtual + inheritance example: remove multiple inheritance approach · d6c365bc
      It was already pretty badly intrusive, but it also appears to make MSVC
      segfault.  Rather than investigating and fixing it, it's easier to just
      remove it.
      Jason Rhinelander committed
    • Added advanced doc section on virtual methods + inheritance · 0ca96e29
      As discussed in #320.
      
      The adds a documentation block that mentions that the trampoline classes
      must provide overrides for both the classes' own virtual methods *and*
      any inherited virtual methods.  It also provides a templated solution to
      avoiding method duplication.
      
      The example includes a third method (only mentioned in the "see also"
      section of the documentation addition), using multiple inheritance.
      While this approach works, and avoids code generation in deep
      hierarchies, it is intrusive by requiring that the wrapped classes use
      virtual inheritance, which itself is more instrusive if any of the
      virtual base classes need anything other than default constructors.  As
      per the discussion in #320, it is kept as an example, but not suggested
      in the documentation.
      Jason Rhinelander committed
  3. 04 Aug, 2016 15 commits
  4. 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
  5. 02 Aug, 2016 4 commits
  6. 01 Aug, 2016 6 commits
  7. 30 Jul, 2016 1 commit
  8. 19 Jul, 2016 4 commits
  9. 18 Jul, 2016 1 commit