1. Sep 06, 2016
  2. Sep 05, 2016
  3. Sep 04, 2016
    • Wenzel Jakob's avatar
      minor code style fixes · f3be07c6
      Wenzel Jakob authored
      f3be07c6
    • Wenzel Jakob's avatar
      Merge pull request #379 from nevion/buffer_info · 987be18f
      Wenzel Jakob authored
      Buffer info improvements
      987be18f
    • Wenzel Jakob's avatar
      minor code style checker update · 85f07e18
      Wenzel Jakob authored
      85f07e18
    • Wenzel Jakob's avatar
      Merge pull request #381 from jagerman/tests-self-registering · 2ea4b8e8
      Wenzel Jakob authored
      Make test initialization self-registering
      2ea4b8e8
    • Jason Rhinelander's avatar
      Make test initialization self-registering · 52f4be89
      Jason Rhinelander authored
      Adding or removing tests is a little bit cumbersome currently: the test
      needs to be added to CMakeLists.txt, the init function needs to be
      predeclared in pybind11_tests.cpp, then called in the plugin
      initialization.  While this isn't a big deal for tests that are being
      committed, it's more of a hassle when working on some new feature or
      test code for which I temporarily only care about building and linking
      the test being worked on rather than the entire test suite.
      
      This commit changes tests to self-register their initialization by
      having each test initialize a local object (which stores the
      initialization function in a static variable).  This makes changing the
      set of tests being build easy: one only needs to add or comment out
      test names in tests/CMakeLists.txt.
      
      A couple other minor changes that go along with this:
      
      - test_eigen.cpp is now included in the test list, then removed if eigen
        isn't available.  This lets you disable the eigen tests by commenting
        it out, just like all the other tests, but keeps the build working
        without eigen eigen isn't available.  (Also, if it's commented out, we
        don't even bother looking for and reporting the building with/without
        eigen status message).
      
      - pytest is now invoked with all the built test names (with .cpp changed
        to .py) so that it doesn't try to run tests that weren't built.
      52f4be89
  4. Sep 03, 2016
  5. Aug 30, 2016
    • Wenzel Jakob's avatar
      Merge pull request #373 from jagerman/style-check-fix · 06d8de11
      Wenzel Jakob authored
      Fix check-style exit status and improve failure messages
      06d8de11
    • Wenzel Jakob's avatar
      Merge pull request #374 from jagerman/tpl-tramp-resolution-fix · c50bd5cb
      Wenzel Jakob authored
      Fix template trampoline overload lookup failure
      c50bd5cb
    • Jason Rhinelander's avatar
      Add line numbers; show and highlight found tabs · d472f0f0
      Jason Rhinelander authored
      This makes the output considerably easier to use: it now highlights (in
      red) matched tabs (instead of just listing the filenames), and adds
      line numbers to both the tabs check and the space-less if check outputs.
      d472f0f0
    • Jason Rhinelander's avatar
      Fix template trampoline overload lookup failure · 20978263
      Jason Rhinelander authored
      Problem
      =======
      
      The template trampoline pattern documented in PR #322 has a problem with
      virtual method overloads in intermediate classes in the inheritance
      chain between the trampoline class and the base class.
      
      For example, consider the following inheritance structure, where `B` is
      the actual class, `PyB<B>` is the trampoline class, and `PyA<B>` is an
      intermediate class adding A's methods into the trampoline:
      
          PyB<B> -> PyA<B> -> B -> A
      
      Suppose PyA<B> has a method `some_method()` with a PYBIND11_OVERLOAD in
      it to overload the virtual `A::some_method()`.  If a Python class `C` is
      defined that inherits from the pybind11-registered `B` and tries to
      provide an overriding `some_method()`, the PYBIND11_OVERLOADs declared
      in PyA<B> fails to find this overloaded method, and thus never invoke it
      (or, if pure virtual and not overridden in PyB<B>, raises an exception).
      
      This happens because the base (internal) `PYBIND11_OVERLOAD_INT` macro
      simply calls `get_overload(this, name)`; `get_overload()` then uses the
      inferred type of `this` to do a type lookup in `registered_types_cpp`.
      This is where it fails: `this` will be a `PyA<B> *`, but `PyA<B>` is
      neither the base type (`B`) nor the trampoline type (`PyB<B>`).  As a
      result, the overload fails and we get a failed overload lookup.
      
      The fix
      =======
      
      The fix is relatively simple: we can cast `this` passed to
      `get_overload()` to a `const B *`, which lets get_overload look up the
      correct class.  Since trampoline classes should be derived from `B`
      classes anyway, this cast should be perfectly safe.
      
      This does require adding the class name as an argument to the
      PYBIND11_OVERLOAD_INT macro, but leaves the public macro signatures
      unchanged.
      20978263
    • Jason Rhinelander's avatar
      Fix check-style exit status · 5a3570c4
      Jason Rhinelander authored
      The check-style exit status wasn't being propagated properly because
      the loops were running in a subshell (and so the change the the
      `errors` variable wasn't in the active command shell).  This fixes it
      by running the greps in subshells and the loops in the main shell.
      
      This also avoids the if(/for(/while( style check on
      tests/CMakeLists.txt, since it *does* have if() statements with no space
      that are producing error messages, but that is (acceptable) CMake style.
      5a3570c4
    • Wenzel Jakob's avatar
      Merge pull request #371 from jagerman/overload-name-doc-fix · d9b3db3e
      Wenzel Jakob authored
      Doc fix for OVERLOAD*_NAME macros
      d9b3db3e
    • Jason Rhinelander's avatar
      Doc fix for OVERLOAD*_NAME macros · 64830e33
      Jason Rhinelander authored
      The documentation says the string-valued python function name goes
      after the C++ function, but it actually goes before it.
      64830e33
    • Wenzel Jakob's avatar
      Merge pull request #369 from jagerman/check-for-tabs · 7946715d
      Wenzel Jakob authored
      Check for style issues during docs build
      7946715d