1. 10 Sep, 2016 1 commit
  2. 07 Sep, 2016 1 commit
    • Jason Rhinelander's avatar
      Allow passing base types as a template parameter · 6b52c838
      Jason Rhinelander authored
      This allows a slightly cleaner base type specification of:
      
          py::class_<Type, Base>("Type")
      
      as an alternative to
      
          py::class_<Type>("Type", py::base<Base>())
      
      As with the other template parameters, the order relative to the holder
      or trampoline types doesn't matter.
      
      This also includes a compile-time assertion failure if attempting to
      specify more than one base class (but is easily extendible to support
      multiple inheritance, someday, by updating the class_selector::set_bases
      function to set multiple bases).
      6b52c838
  3. 06 Sep, 2016 4 commits
    • Jason Rhinelander's avatar
      Allow arbitrary class_ template option ordering · 5fffe200
      Jason Rhinelander authored
      The current pybind11::class_<Type, Holder, Trampoline> fixed template
      ordering results in a requirement to repeat the Holder with its default
      value (std::unique_ptr<Type>) argument, which is a little bit annoying:
      it needs to be specified not because we want to override the default,
      but rather because we need to specify the third argument.
      
      This commit removes this limitation by making the class_ template take
      the type name plus a parameter pack of options.  It then extracts the
      first valid holder type and the first subclass type for holder_type and
      trampoline type_alias, respectively.  (If unfound, both fall back to
      their current defaults, `std::unique_ptr<type>` and `type`,
      respectively).  If any unmatched template arguments are provided, a
      static assertion fails.
      
      What this means is that you can specify or omit the arguments in any
      order:
      
          py::class_<A, PyA> c1(m, "A");
          py::class_<B, PyB, std::shared_ptr<B>> c2(m, "B");
          py::class_<C, std::shared_ptr<C>, PyB> c3(m, "C");
      
      It also allows future class attributes (such as base types in the next
      commit) to be passed as class template types rather than needing to use
      a py::base<> wrapper.
      5fffe200
    • Dean Moldovan's avatar
    • Wenzel Jakob's avatar
      48ce0727
    • Wenzel Jakob's avatar
      minor doc & style fixes · fe34241e
      Wenzel Jakob authored
      fe34241e
  4. 05 Sep, 2016 1 commit
  5. 29 Aug, 2016 1 commit
  6. 28 Aug, 2016 1 commit
  7. 27 Aug, 2016 1 commit
  8. 22 Aug, 2016 1 commit
  9. 19 Aug, 2016 1 commit
  10. 18 Aug, 2016 1 commit
  11. 17 Aug, 2016 1 commit
    • Glen Walker's avatar
      Support keep_alive where nurse may be None · f45bb585
      Glen Walker authored
      For example keep_alive<0,1>() should work where the return value may sometimes be None. At present a "Could not allocate weak reference!" exception is thrown.
      Update documentation to clarify behaviour of keep_alive when nurse is None or does not support weak references.
      f45bb585
  12. 15 Aug, 2016 1 commit
    • Dean Moldovan's avatar
      Fix sphinx doc missing code blocks and warnings · aebca12b
      Dean Moldovan authored
      The missing empty line after `.. code-block::` resulted in incorrectly
      parsed restructuredtext (sphinx warnings) and the code blocks were not
      generated in the html output.
      
      The `exclude_patterns` change just silences the orphaned file warning.
      
      [ci skip]
      aebca12b
  13. 13 Aug, 2016 6 commits
  14. 12 Aug, 2016 1 commit
    • Jason Rhinelander's avatar
      Added pybind11::make_key_iterator for map iteration · 5aa85be2
      Jason Rhinelander authored
      This allows exposing a dict-like interface to python code, allowing
      iteration over keys via:
      
          for k in custommapping:
              ...
      
      while still allowing iteration over pairs, so that you can also
      implement 'dict.items()' functionality which returns a pair iterator,
      allowing:
      
          for k, v in custommapping.items():
              ...
      
      example-sequences-and-iterators is updated with a custom class providing
      both types of iteration.
      5aa85be2
  15. 10 Aug, 2016 2 commits
  16. 05 Aug, 2016 2 commits
    • Jason Rhinelander's avatar
      virtual + inheritance example: remove multiple inheritance approach · d6c365bc
      Jason Rhinelander authored
      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.
      d6c365bc
    • Jason Rhinelander's avatar
      Added advanced doc section on virtual methods + inheritance · 0ca96e29
      Jason Rhinelander authored
      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.
      0ca96e29
  17. 04 Aug, 2016 3 commits
  18. 01 Aug, 2016 1 commit
  19. 19 Jul, 2016 1 commit
  20. 18 Jul, 2016 2 commits
  21. 11 Jul, 2016 1 commit
  22. 10 Jul, 2016 1 commit
  23. 08 Jul, 2016 2 commits
  24. 30 Jun, 2016 2 commits
  25. 28 Jun, 2016 1 commit