2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-26 06:42:27 +00:00

More fixes

[SVN r13182]
This commit is contained in:
Dave Abrahams
2002-03-12 21:07:26 +00:00
parent 0bdf3542e4
commit 3caa91cc36
5 changed files with 150 additions and 34 deletions

View File

@@ -9,6 +9,7 @@
# include <boost/python/object/class.hpp>
# 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/type.hpp>
# include <boost/mpl/select_type.hpp>
@@ -153,67 +154,88 @@ struct pointer_holder_back_reference : instance_holder
// Forward construction to the held object
pointer_holder_back_reference(PyObject* p)
: m_p(new Value(p)) {}
: m_p(new BackReferenceType(p)) {
(void)instance_finder<BackReferenceType>::registration;
}
template <class A1>
pointer_holder_back_reference(PyObject* p, A1 a1)
: m_p(new Value(p
: m_p(new BackReferenceType(p
, (typename unwrap_reference<A1>::type&)(a1)
))
{}
{
(void)instance_finder<BackReferenceType>::registration;
}
template <class A1, class A2>
pointer_holder_back_reference(PyObject* p, A1 a1, A2 a2)
: m_p(new Value(p
: m_p(new BackReferenceType(p
, (typename unwrap_reference<A1>::type&)(a1)
, (typename unwrap_reference<A2>::type&)(a2)
))
{}
{
(void)instance_finder<BackReferenceType>::registration;
}
template <class A1, class A2, class A3>
pointer_holder_back_reference(PyObject* p, A1 a1, A2 a2, A3 a3)
: m_p(new Value(p
: m_p(new BackReferenceType(p
, (typename unwrap_reference<A1>::type&)(a1)
, (typename unwrap_reference<A2>::type&)(a2)
, (typename unwrap_reference<A3>::type&)(a3)
))
{}
{
(void)instance_finder<BackReferenceType>::registration;
}
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 Value(p
: m_p(new BackReferenceType(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)
))
{}
{
(void)instance_finder<BackReferenceType>::registration;
}
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 Value(p
: m_p(new BackReferenceType(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)
)) {}
)) {
(void)instance_finder<BackReferenceType>::registration;
}
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 Value(p
: m_p(new BackReferenceType(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)
)) {}
)) {
(void)instance_finder<BackReferenceType>::registration;
}
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 Value(p
: m_p(new BackReferenceType(p
, (typename unwrap_reference<A1>::type&)(a1)
, (typename unwrap_reference<A2>::type&)(a2)
, (typename unwrap_reference<A3>::type&)(a3)
@@ -222,11 +244,14 @@ struct pointer_holder_back_reference : instance_holder
, (typename unwrap_reference<A6>::type&)(a6)
, (typename unwrap_reference<A7>::type&)(a7)
))
{}
{
(void)instance_finder<BackReferenceType>::registration;
}
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 Value(p
: m_p(new BackReferenceType(p
, (typename unwrap_reference<A1>::type&)(a1)
, (typename unwrap_reference<A2>::type&)(a2)
, (typename unwrap_reference<A3>::type&)(a3)
@@ -236,11 +261,14 @@ struct pointer_holder_back_reference : instance_holder
, (typename unwrap_reference<A7>::type&)(a7)
, (typename unwrap_reference<A8>::type&)(a8)
))
{}
{
(void)instance_finder<BackReferenceType>::registration;
}
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 Value(p
: m_p(new BackReferenceType(p
, (typename unwrap_reference<A1>::type&)(a1)
, (typename unwrap_reference<A2>::type&)(a2)
, (typename unwrap_reference<A3>::type&)(a3)
@@ -251,11 +279,14 @@ struct pointer_holder_back_reference : instance_holder
, (typename unwrap_reference<A8>::type&)(a8)
, (typename unwrap_reference<A9>::type&)(a9)
))
{}
{
(void)instance_finder<BackReferenceType>::registration;
}
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 Value(p
: m_p(new BackReferenceType(p
, (typename unwrap_reference<A1>::type&)(a1)
, (typename unwrap_reference<A2>::type&)(a2)
, (typename unwrap_reference<A3>::type&)(a3)
@@ -267,7 +298,10 @@ struct pointer_holder_back_reference : instance_holder
, (typename unwrap_reference<A9>::type&)(a9)
, (typename unwrap_reference<A10>::type&)(a10)
))
{}
{
(void)instance_finder<BackReferenceType>::registration;
}
private: // required holder implementation
void* holds(converter::undecorated_type_id_t);