Commit Graph

300 Commits

Author SHA1 Message Date
Wenzel Jakob
1959d18c48 fixed return value type in py::make_iterator 2016-04-30 21:42:17 +02:00
Wenzel Jakob
772c6d54d6 enable passing C++ instances to void*-valued arguments 2016-04-30 21:28:45 +02:00
Wenzel Jakob
fbafdea672 a few more GIL-related compatibility fixes 2016-04-25 17:48:56 +02:00
Wenzel Jakob
2f6662e174 Python 2.7.x fixes for new gil_scoped_release 2016-04-25 09:16:41 +02:00
Wenzel Jakob
084ca0e553 compilation fixes 2016-04-25 04:00:47 +02:00
Wenzel Jakob
39e97e6a49 significant redesign of GIL state handling 2016-04-25 03:27:32 +02:00
Wenzel Jakob
9b880ba743 keep_alive: don't fail when there is no patient 2016-04-25 03:26:36 +02:00
Wenzel Jakob
8cb6cb33ef minor cleanups in common.h; updated author info and copyright year 2016-04-18 10:53:38 +02:00
Wenzel Jakob
bf0c7dcc22 convenience overload for make_iterator() 2016-04-18 10:52:12 +02:00
Wenzel Jakob
b2b44a9af8 fix for virtual dispatch on newly created threads 2016-04-15 17:59:53 +02:00
Wenzel Jakob
b282595bba convenience wrapper for constructing iterators (fixes #142) 2016-04-14 00:23:37 +02:00
Wenzel Jakob
f5c154ade9 address issue with virtual function dispatch (fixes #159) 2016-04-11 18:13:08 +02:00
Wenzel Jakob
0b4895885b improve default parameters for properties 2016-03-25 16:13:10 +01:00
Wenzel Jakob
84ec78feeb minor redesign/generalization of def_property mechanism 2016-03-21 17:54:24 +01:00
Sylvain Corlay
4c7bf9bb94 Add return type 2016-03-08 18:44:04 -05:00
Sylvain Corlay
0e04fdf3f6 Add generic signature for overloads 2016-03-08 17:22:22 -05:00
Sylvain Corlay
13b22bf4f6 Signature formatting for sphinx 2016-03-08 16:06:05 -05:00
Wenzel Jakob
309a85ba59 support std::shared_ptr<const X> and types that indirectly derive from std::enable_shared_from_this 2016-03-08 17:59:10 +01:00
Wenzel Jakob
218b6ce246 Revert "trim docstrings (closes #112)"
This reverts commit b3ef54a544.
2016-02-28 23:52:37 +01:00
Johan Mabille
25dd4789a8 Python overloading of virtual functions defined in class template 2016-02-28 23:26:29 +01:00
Wenzel Jakob
b3ef54a544 trim docstrings (closes #112) 2016-02-24 13:49:04 +01:00
Ben Pritchard
33f3430d0c Add intel warning push/pop 2016-02-18 15:25:51 -05:00
Ben Pritchard
2de6e1d142 Remove some unnecessary semicolons (compilers warn on higher levels) 2016-02-18 13:20:15 -05:00
Ben Pritchard
70ee47ddcf Add Intel to cmake file. Supress Intel inline/noinline warning 2016-02-18 13:06:43 -05:00
Wenzel Jakob
e206564ebf removed a redundant tag 2016-02-04 23:29:29 +01:00
Wenzel Jakob
a65017902e set __module__ attribute of functions (fixes #95) 2016-02-04 23:03:58 +01:00
Wenzel Jakob
b6cf75d66a address issue with std::type_info across module boundaries (fixes #86) 2016-01-29 11:39:32 +01:00
Felipe Lema
2547ca468c deal with Python versions compiled without thread support (fixes #81) 2016-01-28 18:16:42 +01:00
Wenzel Jakob
15f6a0030e enum comparison and conversion operations (closes #80) 2016-01-24 14:05:12 +01:00
Wenzel Jakob
88d1d04132 another attempt to fix the offsetof warnings 2016-01-20 01:26:42 +01:00
Wenzel Jakob
2983d5e1de quench warnings (closes #69) 2016-01-18 22:15:16 +01:00
Wenzel Jakob
48548ea4a5 general cleanup of the codebase
- new pybind11::base<> attribute to indicate a subclass relationship
- unified infrastructure for parsing variadic arguments in class_ and cpp_function
- use 'handle' and 'object' more consistently everywhere
2016-01-17 22:31:15 +01:00
Wenzel Jakob
ba0732e7dc fixed a terrible bug in def_property_static and switched to the faster PyObject_CallFunctionObjArgs API call 2016-01-17 22:31:15 +01:00
Wenzel Jakob
678d787ca4 do more work with classes from pytypes.h (especially for STL container casting) 2016-01-17 22:31:15 +01:00
Wenzel Jakob
d561cb010c fully moved __pybind11__ Python attributes to the C++ side, cleanup & documentation pass over the main header file 2016-01-17 22:31:15 +01:00
Wenzel Jakob
95d18691c9 minor fixes & removed a leak when freeing functions 2016-01-17 22:31:15 +01:00
Wenzel Jakob
b2c2c79240 improved handling of shared/smart pointers
Previously, pybind11 required classes using std::shared_ptr<> to derive
from std::enable_shared_from_this<> (or compilation failures would ensue).

Everything now also works for classes that don't do this, assuming that
some basic rules are followed (e.g. never passing "raw" pointers of
instances manged by shared pointers). The safer
std::enable_shared_from_this<> approach continues to be supported.
2016-01-17 22:31:15 +01:00
Wenzel Jakob
5f218b3f2c keep_alive call policy (analogous to Boost.Python's with_custodian_and_ward, fixes #62) 2016-01-17 22:31:15 +01:00
Wenzel Jakob
4177ed4336 renamed decay -> intrinsic_type (fixes #59) 2016-01-17 22:31:15 +01:00
Wenzel Jakob
27e8e1066b added new type pybind11::bytes, cleanup of various macros (fixes #49) 2016-01-17 22:31:15 +01:00
Wenzel Jakob
f4671f6a04 use RAII in dispatcher to avoid refcount leaks in certain circumstances when handling exceptions 2016-01-17 22:31:15 +01:00
Wenzel Jakob
66c9a40213 Much more efficient generation of function signatures, updated docs
This modification taps into some newer C++14 features (if present) to
generate function signatures considerably more efficiently at compile
time rather than at run time.

With this change, pybind11 binaries are now *2.1 times* smaller compared
to the Boost.Python baseline in the benchmark. Compilation times get a
nice improvement as well.

Visual Studio 2015 unfortunately doesn't implement 'constexpr' well
enough yet to support this change and uses a runtime fallback.
2016-01-17 22:31:15 +01:00
Wenzel Jakob
2ac5044a05 moved processing of cpp_function arguments out of dispatch code
The cpp_function class accepts a variadic argument, which was formerly
processed twice -- once at registration time, and once in the dispatch
lambda function. This is not only unnecessarily slow but also leads to
code bloat since it adds to the object code generated for every bound
function. This change removes the second pass at dispatch time.

One noteworthy change of this commit is that default arguments are now
constructed (and converted to Python objects) right at declaration time.
Consider the following example:

py::class_<MyClass>("MyClass")
    .def("myFunction", py::arg("arg") = SomeType(123));

In this case, the change means that pybind11 must already be set up to
deal with values of the type 'SomeType', or an exception will be thrown.
Another change is that the "preview" of the default argument in the
function signature is generated using the __repr__ special method. If
it is not available in this type, the signature may not be very helpful,
i.e.:

|  myFunction(...)
|      Signature : (MyClass, arg : SomeType = <SomeType object at 0x101b7b080>) -> None

One workaround (other than defining SomeType.__repr__) is to specify the
human-readable preview of the default argument manually using the more
cumbersome arg_t notation:

py::class_<MyClass>("MyClass")
    .def("myFunction", py::arg_t<SomeType>("arg", SomeType(123), "SomeType(123)"));
2016-01-17 22:31:15 +01:00
Wenzel Jakob
3367cecc6b detect unreferenced keyword arguments in function calls 2015-12-30 18:48:20 +01:00
Wenzel Jakob
dd57a34e2d improved error handling at module import time 2015-12-26 14:04:52 +01:00
Jonas Adler
2b9fdbe7c9 ENH: add more error conversions 2015-12-15 11:56:12 +01:00
Wenzel Jakob
6e213c9ca0 improved shared pointer support (fixes #14) 2015-11-24 23:18:32 +01:00
Wenzel Jakob
54289302bc minor cleanups 2015-10-26 20:10:24 +01:00
Wenzel Jakob
b1b714023a consistent macro naming throughout the project 2015-10-18 16:48:30 +02:00
Wenzel Jakob
8f4eb00690 last breaking change: be consistent about the project name 2015-10-15 18:23:56 +02:00