diff --git a/doc/v2/reference.html b/doc/v2/reference.html index 24704847..62a7efd9 100644 --- a/doc/v2/reference.html +++ b/doc/v2/reference.html @@ -13,7 +13,7 @@ p.c3 {font-style: italic} h2.c2 {text-align: center} h1.c1 {text-align: center} - +
@@ -96,172 +96,217 @@Revised - 19 July, 2003 + 31 October, 2004 +
© Copyright Contents
To wrap a class To wrap a class Encapsulates a Python override of a C++ virtual function.
- An Encapsulates a Python override of a C++ virtual function. An
+ Deriving your wrapper class from both ``T`` and
- ``wrapper<T> makes writing that derived class easier.
+ ``wrapper<T> makes writing that derived class easier. Revised
- 31 October, 2004
-
+ 31 October, 2004
+
© Copyright Dave
-
Introduction
- T such that its virtual functions
- can be "overridden in Python"—so that the corresponding
- method of a Python derived class will be called when the virtual
- function is invoked from C++—you must create a C++ wrapper
- class derived from ``T`` that overrides those virtual functions so
- that they call into Python. This header contains classes that can
- be used to make that job easier.
+ T such that its virtual functions can be
+ "overridden in Python"—so that the corresponding method of a Python
+ derived class will be called when the virtual function is invoked from
+ C++—you must create a C++ wrapper class derived from ``T`` that
+ overrides those virtual functions so that they call into Python. This
+ header contains classes that can be used to make that job easier.Classes
Class
- overrideoverride object either holds a callable Python
- object or None.
+ override object either holds a callable Python object or
+ None.Class
+ override synopsisClass
override
+ synopsis
namespace boost
{
@@ -91,8 +97,8 @@ namespace boost
};
- Class
+ override observer
- functionsClass
override
+ observer functions
unspecified operator() const;
template <class A0>
@@ -105,26 +111,27 @@ template <class A0, class A1, ...class An>
-
*this holds a callable
- Python object, it is invoked with the specified arguments in
- the manner specified here. Otherwise, throws
-error_already_set
-.
+ *this holds a callable Python
+ object, it is invoked with the specified arguments in the manner
+ specified here. Otherwise, throws error_already_set
+ .R, attempts to convert that result object
- to R. If that conversion fails, throws
-error_already_set
-.
+ R, attempts to convert that result object to
+ R. If that conversion fails, throws error_already_set
+ .Class template
wrapperClass template
+ wrapper synopsisClass template
+
wrapper synopsis
namespace boost
{
@@ -136,27 +143,24 @@ namespace boost
};
- Class
+ wrapper observer
- functionsClass
wrapper
+ observer functions
override get_override(char const* name) const;
-
name is a ntbs.
+ name is a ntbs.*this is the C++ base class
- subobject of a Python derived class instance that overrides
- the named function, returns an override object
- that delegates to the Python override. Otherwise,
- returns an
-override
-
-object that holds None.
+ subobject of a Python derived class instance that overrides the named
+ function, returns an override object that delegates to the
+ Python override. Otherwise, returns an override object
+ that holds None.Example
-
#include <boost/python/module.hpp>
#include <boost/python/class.hpp>
@@ -170,7 +174,7 @@ struct P
{
virtual ~P(){}
virtual char const* f() = 0;
- char const* g() { return "P::g()"; }
+ char const* g() { return "P::g()"; }
};
struct PCallback : P, wrapper<P>
@@ -178,9 +182,9 @@ struct PCallback : P, wrapper<P>
char const* f()
{
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) // Workaround for vc6/vc7
- return call<char const*>(this->get_override("f").ptr());
+ return call<char const*>(this->get_override("f").ptr());
#else
- return this->get_override("f")();
+ return this->get_override("f")();
#endif
}
};
@@ -189,14 +193,14 @@ struct PCallback : P, wrapper<P>
struct A
{
virtual ~A(){}
- virtual char const* f() { return "A::f()"; }
+ virtual char const* f() { return "A::f()"; }
};
struct ACallback : A, wrapper<A>
{
char const* f()
{
- if (override f = this->get_override("f"))
+ if (override f = this->get_override("f"))
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) // Workaround for vc6/vc7
return call<char const*>(f.ptr());
#else
@@ -211,19 +215,20 @@ struct ACallback : A, wrapper<A>
BOOST_PYTHON_MODULE_INIT(polymorphism)
{
- class_<PCallback,boost::noncopyable>("P")
- .def("f", pure_virtual(&P::f))
+ class_<PCallback,boost::noncopyable>("P")
+ .def("f", pure_virtual(&P::f))
;
- class_<ACallback,boost::noncopyable>("A")
- .def("f", &A::f, &ACallback::default_f)
+ class_<ACallback,boost::noncopyable>("A")
+ .def("f", &A::f, &ACallback::default_f)
;
}
+