[C++-SIG] [ANN] Boost Python Library (formerly py_cpp)
abrahams at mediaone.net
Mon Dec 11 01:39:28 CET 2000
I am proud to announce the re-release of py_cpp as the Boost Python Library
Among its many features:
* Automatic function argument type checking and conversion
* Subclassing wrapped C++ types in Python
* [Member] Function overloading
* Automatic wrapping of numeric operators
* Pickling support
* Support for C++ smart pointers
For those who have been following py_cpp, significant improvements have
occurred since the last release. An excerpt from the release notes follows:
Ullrich fixed bug in operator_dispatcher<op_long>.
Changed all class and function names into lower_case.
Ullrich updated documentation for operator wrapping.
Ullrich renamed ExtensionClass:register_coerce() into
ExtensionClass:def_standard_coerce() and made it public
Ullrich improved shared_pod_manager.
Changed allocation strategy of shared_pod_manager to make it portable.
Added pickling support + tests thanks to "Ralf W. Grosse-Kunstleve"
<rwgk at cci.lbl.gov>
Added a specialization of Callback<const char*> to prevent unsafe usage.
Fixed Ullrich's operator_dispatcher refcount bug
Removed const char* return values from virtual functions in tests; that
usage was unsafe.
Ullrich changed Module::add() so that it steals a reference (fix of
Ullrich added operator_dispatcher::create() optimization
Ullrich changed design and implementation of TypeObjectBase::enable()
(to eliminate low-level
code) and added shared_pod_manager optimization.
Fixed refcount bugs in operator calls.
Added callback_adjust_refcount(PyObject*, Type<T>) to account for
semantics of Callback's return types and Caller's arguments (which both
This bug caused refcount errors during operator calls.
Moved operator_dispatcher into extclass.cpp
Gave it shared ownership of the objects it wraps
Introduced sequence points in extension_class_coerce for
MixedCase template type argument names
Changed internal error reporting to use Python exceptions so we don't
user to link in iostreams code
Changed error return value of call_cmp to -1
Moved unwrap_* functions out of operator_dispatcher. This was
I realized they didn't need to be declared in extclass.h I moved them
now that operator_dispatcher itself is in extclass.cpp they could go
Numerous formatting tweaks
Updated the BoundFunction::create() optimization and enabled it so it
could actually be used!
Made Ullrich's operators support work with MSVC
Cleaned up operators.h such that invalid define_operator<0> is no longer
Ullrich created operators.h to support wrapping of C++ operators
(including the "__r*__" forms).
He added several auxiliary classes to extclass.h and extclass.cpp (most
py::detail::operator_dispatcher and py::operators)
removed obsolete ExtensionClassFromPython for good.
removed unused class ExtensionType forward declaration
Added enum_as_int_converters for easier enum wrapping
Introduced new conversion namespace macros:
Added call() function so that a regular python function (as opposed
method or other function-as-attribute) can be called.
Added newlines for readability.
Fixed a bug in add(), which allows non-method class attributes
Ullrich has added def_raw for simple varargs and keyword support.
Fixed version number check for __MWERKS__
Added tests for enums and non-method class attributes
Added py::String operator*= and operator* for repetition
Change Dict::items(), keys(), and values() to return a List
Added template versions of set_item, etc., methods so that users can
use C++ types that have to_python() functions as parameters.
Changed various Ptr by-value parameters to const Ptr&
More information about the Cplusplus-sig