mirror of
https://github.com/boostorg/python.git
synced 2026-01-21 05:02:17 +00:00
Yet another bug reported by Peter Bienstman is now fixed.
[SVN r13370]
This commit is contained in:
@@ -10,28 +10,99 @@
|
||||
# include <boost/type_traits/object_traits.hpp>
|
||||
# include <boost/type_traits/composite_traits.hpp>
|
||||
# include <boost/type_traits/transform_traits.hpp>
|
||||
# include <boost/ref.hpp>
|
||||
|
||||
namespace boost { namespace python { namespace objects {
|
||||
|
||||
template <class T>
|
||||
struct reference_to_value
|
||||
{
|
||||
typedef typename add_reference<typename add_const<T>::type>::type reference;
|
||||
|
||||
reference_to_value(reference x) : m_value(x) {}
|
||||
operator reference() const { return m_value; }
|
||||
private:
|
||||
reference m_value;
|
||||
};
|
||||
|
||||
// A little metaprogram which selects the type to pass through an
|
||||
// intermediate forwarding function when the destination argument type
|
||||
// is T.
|
||||
template <class T>
|
||||
struct forward
|
||||
{
|
||||
BOOST_STATIC_CONSTANT(
|
||||
bool, by_value = (is_scalar<T>::value | is_reference<T>::value)
|
||||
);
|
||||
|
||||
typedef typename mpl::select_type<
|
||||
by_value
|
||||
: mpl::select_type<
|
||||
is_scalar<T>::value
|
||||
, T
|
||||
, reference_wrapper<
|
||||
typename add_const<T>::type
|
||||
>
|
||||
>::type type;
|
||||
, reference_to_value<T> >
|
||||
{
|
||||
};
|
||||
|
||||
# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
template<typename T>
|
||||
class unforward
|
||||
{
|
||||
public:
|
||||
typedef typename unwrap_reference<T>::type& type;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class unforward<reference_to_value<T> >
|
||||
{
|
||||
public:
|
||||
typedef T type;
|
||||
};
|
||||
# else // no partial specialization
|
||||
|
||||
namespace detail
|
||||
{
|
||||
typedef char (&yes_reference_to_value_t)[1];
|
||||
typedef char (&no_reference_to_value_t)[2];
|
||||
|
||||
no_reference_to_value_t is_reference_to_value_test(...);
|
||||
|
||||
template<typename T>
|
||||
yes_reference_to_value_t is_reference_to_value_test(type< reference_to_value<T> >);
|
||||
|
||||
template<bool wrapped>
|
||||
struct unforwarder
|
||||
{
|
||||
template <class T>
|
||||
struct apply
|
||||
{
|
||||
typedef typename unwrap_reference<T>::type& type;
|
||||
};
|
||||
};
|
||||
|
||||
template<>
|
||||
struct unforwarder<true>
|
||||
{
|
||||
template <class T>
|
||||
struct apply
|
||||
{
|
||||
typedef typename T::reference type;
|
||||
};
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class is_reference_to_value
|
||||
{
|
||||
public:
|
||||
BOOST_STATIC_CONSTANT(
|
||||
bool, value = (
|
||||
sizeof(is_reference_to_value_test(type<T>()))
|
||||
== sizeof(yes_reference_to_value_t)));
|
||||
};
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class unforward
|
||||
: public detail::unforwarder<
|
||||
detail::is_reference_to_value<T>::value
|
||||
>::template apply<T>
|
||||
{};
|
||||
|
||||
# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
|
||||
}}} // namespace boost::python::objects
|
||||
|
||||
#endif // FORWARD_DWA20011215_HPP
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
# include <boost/python/converter/type_id.hpp>
|
||||
# include <boost/python/object/inheritance.hpp>
|
||||
# include <boost/python/object/find_instance.hpp>
|
||||
# include <boost/ref.hpp>
|
||||
# include <boost/python/object/forward.hpp>
|
||||
# include <boost/type.hpp>
|
||||
# include <boost/mpl/select_type.hpp>
|
||||
# include <boost/mpl/apply.hpp>
|
||||
@@ -31,113 +31,113 @@ struct pointer_holder : instance_holder
|
||||
template <class A1>
|
||||
pointer_holder(PyObject*, A1 a1)
|
||||
: m_p(new Value(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
))
|
||||
{}
|
||||
|
||||
template <class A1, class A2>
|
||||
pointer_holder(PyObject*, A1 a1, A2 a2)
|
||||
: m_p(new Value(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
))
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3>
|
||||
pointer_holder(PyObject*, A1 a1, A2 a2, A3 a3)
|
||||
: m_p(new Value(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
))
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3, class A4>
|
||||
pointer_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4)
|
||||
: m_p(new Value(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
))
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5>
|
||||
pointer_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
|
||||
: m_p(new Value(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
)) {}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6>
|
||||
pointer_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
|
||||
: m_p(new Value(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
)) {}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7>
|
||||
pointer_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
|
||||
: m_p(new Value(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
))
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
|
||||
pointer_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
|
||||
: m_p(new Value(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
))
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
|
||||
pointer_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
|
||||
: m_p(new Value(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
, (typename unwrap_reference<A9>::type&)(a9)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
, (typename unforward<A9>::type)(a9)
|
||||
))
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
|
||||
pointer_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10)
|
||||
: m_p(new Value(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
, (typename unwrap_reference<A9>::type&)(a9)
|
||||
, (typename unwrap_reference<A10>::type&)(a10)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
, (typename unforward<A9>::type)(a9)
|
||||
, (typename unforward<A10>::type)(a10)
|
||||
))
|
||||
{}
|
||||
|
||||
@@ -166,7 +166,7 @@ struct pointer_holder_back_reference : instance_holder
|
||||
template <class A1>
|
||||
pointer_holder_back_reference(PyObject* p, A1 a1)
|
||||
: m_p(new held_type(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
))
|
||||
{
|
||||
void const* x = &instance_finder<held_type>::registration; (void)x;
|
||||
@@ -176,8 +176,8 @@ struct pointer_holder_back_reference : instance_holder
|
||||
template <class A1, class A2>
|
||||
pointer_holder_back_reference(PyObject* p, A1 a1, A2 a2)
|
||||
: m_p(new held_type(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
))
|
||||
{
|
||||
void const* x = &instance_finder<held_type>::registration; (void)x;
|
||||
@@ -187,9 +187,9 @@ struct pointer_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3>
|
||||
pointer_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3)
|
||||
: m_p(new held_type(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
))
|
||||
{
|
||||
void const* x = &instance_finder<held_type>::registration; (void)x;
|
||||
@@ -199,10 +199,10 @@ struct pointer_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4>
|
||||
pointer_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4)
|
||||
: m_p(new held_type(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
))
|
||||
{
|
||||
void const* x = &instance_finder<held_type>::registration; (void)x;
|
||||
@@ -212,11 +212,11 @@ struct pointer_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5>
|
||||
pointer_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
|
||||
: m_p(new held_type(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
)) {
|
||||
void const* x = &instance_finder<held_type>::registration; (void)x;
|
||||
}
|
||||
@@ -225,12 +225,12 @@ struct pointer_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6>
|
||||
pointer_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
|
||||
: m_p(new held_type(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
)) {
|
||||
void const* x = &instance_finder<held_type>::registration; (void)x;
|
||||
}
|
||||
@@ -239,13 +239,13 @@ struct pointer_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7>
|
||||
pointer_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
|
||||
: m_p(new held_type(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
))
|
||||
{
|
||||
void const* x = &instance_finder<held_type>::registration; (void)x;
|
||||
@@ -255,14 +255,14 @@ struct pointer_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
|
||||
pointer_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
|
||||
: m_p(new held_type(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
))
|
||||
{
|
||||
void const* x = &instance_finder<held_type>::registration; (void)x;
|
||||
@@ -272,15 +272,15 @@ struct pointer_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
|
||||
pointer_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
|
||||
: m_p(new held_type(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
, (typename unwrap_reference<A9>::type&)(a9)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
, (typename unforward<A9>::type)(a9)
|
||||
))
|
||||
{
|
||||
void const* x = &instance_finder<held_type>::registration; (void)x;
|
||||
@@ -290,16 +290,16 @@ struct pointer_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
|
||||
pointer_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10)
|
||||
: m_p(new held_type(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
, (typename unwrap_reference<A9>::type&)(a9)
|
||||
, (typename unwrap_reference<A10>::type&)(a10)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
, (typename unforward<A9>::type)(a9)
|
||||
, (typename unforward<A10>::type)(a10)
|
||||
))
|
||||
{
|
||||
void const* x = &instance_finder<held_type>::registration; (void)x;
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# include <boost/python/converter/type_id.hpp>
|
||||
# include <boost/python/object/inheritance.hpp>
|
||||
# include <boost/python/object/find_instance.hpp>
|
||||
# include <boost/ref.hpp>
|
||||
# include <boost/python/object/forward.hpp>
|
||||
|
||||
namespace boost { namespace python { namespace objects {
|
||||
|
||||
@@ -25,113 +25,113 @@ struct value_holder : instance_holder
|
||||
template <class A1>
|
||||
value_holder(PyObject*, A1 a1)
|
||||
: m_held(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
)
|
||||
{}
|
||||
|
||||
template <class A1, class A2>
|
||||
value_holder(PyObject*, A1 a1, A2 a2)
|
||||
: m_held(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
)
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3>
|
||||
value_holder(PyObject*, A1 a1, A2 a2, A3 a3)
|
||||
: m_held(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
)
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3, class A4>
|
||||
value_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4)
|
||||
: m_held(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
)
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5>
|
||||
value_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
|
||||
: m_held(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
) {}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6>
|
||||
value_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
|
||||
: m_held(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
) {}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7>
|
||||
value_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
|
||||
: m_held(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
)
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
|
||||
value_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
|
||||
: m_held(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
)
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
|
||||
value_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
|
||||
: m_held(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
, (typename unwrap_reference<A9>::type&)(a9)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
, (typename unforward<A9>::type)(a9)
|
||||
)
|
||||
{}
|
||||
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
|
||||
value_holder(PyObject*, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10)
|
||||
: m_held(
|
||||
(typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
, (typename unwrap_reference<A9>::type&)(a9)
|
||||
, (typename unwrap_reference<A10>::type&)(a10)
|
||||
(typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
, (typename unforward<A9>::type)(a9)
|
||||
, (typename unforward<A10>::type)(a10)
|
||||
)
|
||||
{}
|
||||
|
||||
@@ -155,7 +155,7 @@ struct value_holder_back_reference : instance_holder
|
||||
template <class A1>
|
||||
value_holder_back_reference(PyObject* p, A1 a1)
|
||||
: m_held(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
)
|
||||
{
|
||||
void const* x = &instance_finder<BackReferenceType>::registration; (void)x;
|
||||
@@ -165,8 +165,8 @@ struct value_holder_back_reference : instance_holder
|
||||
template <class A1, class A2>
|
||||
value_holder_back_reference(PyObject* p, A1 a1, A2 a2)
|
||||
: m_held(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
)
|
||||
{
|
||||
void const* x = &instance_finder<BackReferenceType>::registration; (void)x;
|
||||
@@ -176,9 +176,9 @@ struct value_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3>
|
||||
value_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3)
|
||||
: m_held(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
)
|
||||
{
|
||||
void const* x = &instance_finder<BackReferenceType>::registration; (void)x;
|
||||
@@ -188,10 +188,10 @@ struct value_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4>
|
||||
value_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4)
|
||||
: m_held(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
)
|
||||
{
|
||||
void const* x = &instance_finder<BackReferenceType>::registration; (void)x;
|
||||
@@ -201,11 +201,11 @@ struct value_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5>
|
||||
value_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
|
||||
: m_held(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
) {
|
||||
void const* x = &instance_finder<BackReferenceType>::registration; (void)x;
|
||||
}
|
||||
@@ -214,12 +214,12 @@ struct value_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6>
|
||||
value_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
|
||||
: m_held(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
) {
|
||||
void const* x = &instance_finder<BackReferenceType>::registration; (void)x;
|
||||
}
|
||||
@@ -228,13 +228,13 @@ struct value_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7>
|
||||
value_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
|
||||
: m_held(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
)
|
||||
{
|
||||
void const* x = &instance_finder<BackReferenceType>::registration; (void)x;
|
||||
@@ -244,14 +244,14 @@ struct value_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
|
||||
value_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
|
||||
: m_held(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
)
|
||||
{
|
||||
void const* x = &instance_finder<BackReferenceType>::registration; (void)x;
|
||||
@@ -261,15 +261,15 @@ struct value_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
|
||||
value_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
|
||||
: m_held(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
, (typename unwrap_reference<A9>::type&)(a9)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
, (typename unforward<A9>::type)(a9)
|
||||
)
|
||||
{
|
||||
void const* x = &instance_finder<BackReferenceType>::registration; (void)x;
|
||||
@@ -279,16 +279,16 @@ struct value_holder_back_reference : instance_holder
|
||||
template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
|
||||
value_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10)
|
||||
: m_held(p
|
||||
, (typename unwrap_reference<A1>::type&)(a1)
|
||||
, (typename unwrap_reference<A2>::type&)(a2)
|
||||
, (typename unwrap_reference<A3>::type&)(a3)
|
||||
, (typename unwrap_reference<A4>::type&)(a4)
|
||||
, (typename unwrap_reference<A5>::type&)(a5)
|
||||
, (typename unwrap_reference<A6>::type&)(a6)
|
||||
, (typename unwrap_reference<A7>::type&)(a7)
|
||||
, (typename unwrap_reference<A8>::type&)(a8)
|
||||
, (typename unwrap_reference<A9>::type&)(a9)
|
||||
, (typename unwrap_reference<A10>::type&)(a10)
|
||||
, (typename unforward<A1>::type)(a1)
|
||||
, (typename unforward<A2>::type)(a2)
|
||||
, (typename unforward<A3>::type)(a3)
|
||||
, (typename unforward<A4>::type)(a4)
|
||||
, (typename unforward<A5>::type)(a5)
|
||||
, (typename unforward<A6>::type)(a6)
|
||||
, (typename unforward<A7>::type)(a7)
|
||||
, (typename unforward<A8>::type)(a8)
|
||||
, (typename unforward<A9>::type)(a9)
|
||||
, (typename unforward<A10>::type)(a10)
|
||||
)
|
||||
{
|
||||
void const* x = &instance_finder<BackReferenceType>::registration; (void)x;
|
||||
|
||||
@@ -53,6 +53,7 @@ rule bpl-test ( name ? : files * )
|
||||
|
||||
bpl-test bienstman1 ;
|
||||
bpl-test bienstman2 ;
|
||||
bpl-test bienstman3 ;
|
||||
bpl-test try : newtest.py m1.cpp m2.cpp ;
|
||||
bpl-test builtin_converters : test_builtin_converters.py test_builtin_converters.cpp ;
|
||||
bpl-test test_pointer_adoption ;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
'''
|
||||
>>> import bienstman1_ext
|
||||
>>> from bienstman1_ext import *
|
||||
>>> # from Numeric import *
|
||||
'''
|
||||
def run(args = None):
|
||||
import sys
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
'''
|
||||
>>> import bienstman1_ext.py
|
||||
>>> import bienstman2_ext
|
||||
'''
|
||||
def run(args = None):
|
||||
import sys
|
||||
|
||||
33
test/bienstman3.cpp
Normal file
33
test/bienstman3.cpp
Normal file
@@ -0,0 +1,33 @@
|
||||
#include <boost/python/module.hpp>
|
||||
#include <boost/python/class.hpp>
|
||||
#include <boost/mpl/type_list.hpp>
|
||||
|
||||
struct V
|
||||
{
|
||||
virtual void f() = 0;
|
||||
};
|
||||
|
||||
struct B
|
||||
{
|
||||
B(const V&) {}
|
||||
};
|
||||
|
||||
BOOST_PYTHON_MODULE_INIT(bienstman3_ext)
|
||||
{
|
||||
using namespace boost::python;
|
||||
using boost::mpl::type_list;
|
||||
|
||||
module m("bienstman3_ext");
|
||||
|
||||
m
|
||||
|
||||
.add(
|
||||
class_<V, boost::noncopyable>("V")
|
||||
)
|
||||
|
||||
.add(
|
||||
class_<B>("B")
|
||||
.def_init(type_list<const V&>())
|
||||
)
|
||||
;
|
||||
}
|
||||
15
test/bienstman3.py
Normal file
15
test/bienstman3.py
Normal file
@@ -0,0 +1,15 @@
|
||||
'''
|
||||
>>> from bienstman3_ext import *
|
||||
'''
|
||||
def run(args = None):
|
||||
import sys
|
||||
import doctest
|
||||
|
||||
if args is not None:
|
||||
sys.argv = args
|
||||
return doctest.testmod(sys.modules.get(__name__))
|
||||
|
||||
if __name__ == '__main__':
|
||||
print "running..."
|
||||
import sys
|
||||
sys.exit(run()[0])
|
||||
Reference in New Issue
Block a user