1. 11 Sep, 2016 5 commits
  2. 10 Sep, 2016 10 commits
  3. 09 Sep, 2016 1 commit
    • Implement py::init_alias<>() constructors · ec62d977
      This commit adds support for forcing alias type initialization by
      defining constructors with `py::init_alias<arg1, arg2>()` instead of
      `py::init<arg1, arg2>()`.  Currently py::init<> only results in Alias
      initialization if the type is extended in python, or the given
      arguments can't be used to construct the base type, but can be used to
      construct the alias.  py::init_alias<>, in contrast, always invokes the
      constructor of the alias type.
      
      It looks like this was already the intention of
      `py::detail::init_alias`, which was forward-declared in
      86d825f3, but was apparently never
      finished: despite the existance of a .def method accepting it, the
      `detail::init_alias` class isn't actually defined anywhere.
      
      This commit completes the feature (or possibly repurposes it), allowing
      declaration of classes that will always initialize the trampoline which
      is (as I argued in #397) sometimes useful.
      Jason Rhinelander committed
  4. 08 Sep, 2016 8 commits
  5. 07 Sep, 2016 10 commits
  6. 06 Sep, 2016 6 commits
    • Replace std::cout with py::print in tests · 81511be3
      With this change both C++ and Python write to sys.stdout which resolves
      the capture issues noted in #351. Therefore, the related workarounds are
      removed.
      Dean Moldovan committed
    • Allow arbitrary class_ template option ordering · 5fffe200
      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.
      Jason Rhinelander committed
    • Merge pull request #372 from dean0x7d/keywords · a3dbdc67
      Keyword arguments and generalized unpacking for C++ API
      Wenzel Jakob committed
    • Make keyword argument hold a py::object instead of T* · 60b26802
      With this change arg_t is no longer a template, but it must remain so
      for backward compatibility. Thus, a non-template arg_v is introduced,
      while a dummy template alias arg_t is there to keep old code from
      breaking. This can be remove in the next major release.
      
      The implementation of arg_v also needed to be placed a little earlier in
      the headers because it's not a template any more and unpacking_collector
      needs more than a forward declaration.
      Dean Moldovan committed