2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-25 18:32:24 +00:00

Yet another bug reported by Peter Bienstman is now fixed.

[SVN r13370]
This commit is contained in:
Dave Abrahams
2002-04-04 21:18:00 +00:00
parent 8de3571aa8
commit b601ba55d0
8 changed files with 356 additions and 235 deletions

View File

@@ -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;