1. 11 Sep, 2016 2 commits
  2. 10 Sep, 2016 10 commits
  3. 09 Sep, 2016 1 commit
    • Jason Rhinelander's avatar
      Implement py::init_alias<>() constructors · ec62d977
      Jason Rhinelander authored
      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.
      ec62d977
  4. 08 Sep, 2016 8 commits
  5. 07 Sep, 2016 10 commits
  6. 06 Sep, 2016 9 commits
    • Dean Moldovan's avatar
      Replace std::cout with py::print in tests · 81511be3
      Dean Moldovan authored
      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.
      81511be3
    • 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
    • Wenzel Jakob's avatar
      c84b37b5
    • Wenzel Jakob's avatar
      Merge pull request #372 from dean0x7d/keywords · a3dbdc67
      Wenzel Jakob authored
      Keyword arguments and generalized unpacking for C++ API
      a3dbdc67
    • Dean Moldovan's avatar
      Make keyword argument hold a py::object instead of T* · 60b26802
      Dean Moldovan authored
      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.
      60b26802
    • Dean Moldovan's avatar
      8fe13b88
    • Dean Moldovan's avatar
      Workaround for py::dict() constructor on MSVC · 56e86ed0
      Dean Moldovan authored
      MSVC fails to compile if the constructor is defined out-of-line.
      The error states that it cannot deduce the type of the default template
      parameter which is used for SFINAE.
      56e86ed0
    • Dean Moldovan's avatar
      Remove superseded handle::operator() overloads · 16db1bfb
      Dean Moldovan authored
      The variadic handle::operator() offers the same functionality as well
      as mixed positional, keyword, * and ** arguments. The tests are also
      superseded by the ones in `test_callbacks`.
      16db1bfb
    • Dean Moldovan's avatar