1- // Copyright David Abrahams 2002. Permission to copy, use,
2- // modify, sell and distribute this software is granted provided this
3- // copyright notice appears in all copies. This software is provided
4- // "as is" without express or implied warranty, and with no claim as
5- // to its suitability for any purpose.
1+ // Copyright David Abrahams 2002.Permission to copy,use,
2+ // modify,sell and distribute this software is granted provided this
3+ // copyright notice appears in all copies.This software is provided
4+ // "as is" without express or implied warranty,and with no claim as
5+ // to its suitability for any purpose.
66#ifndef CALL_PP_DWA2002411_HPP
7- # define CALL_PP_DWA2002411_HPP
7+ #define CALL_PP_DWA2002411_HPP
88
9- call (PyObject*self)
10- :m_result(
11- PyEval_CallFunction (self,const_cast <char *>(" (" " )" )))
9+ template <class R >
10+ typename converter::callback_from_python<R>::result_type call (PyObject*callable,boost::type<R>* =0 )
1211{
13-
12+ converter::callback_from_python<R>converter;
13+ return converter (
14+ PyEval_CallFunction (callable,const_cast <char *>(" (" " )" )));
1415}
15- template <class A0 >
16- call (PyObject*self,A0 const &a0)
17- :m_result(
18- PyEval_CallFunction (self,const_cast <char *>(" (" " O" " )" ),
19- converter::callback_to_python<A0>(a0).get()))
16+ template <class R ,class A0 >
17+ typename converter::callback_from_python<R>::result_type call (PyObject*callable,A0 const &a0,boost::type<R>* =0 )
2018{
21-
19+ converter::callback_from_python<R>converter;
20+ return converter (
21+ PyEval_CallFunction (callable,const_cast <char *>(" (" " O" " )" ),
22+ converter::callback_to_python<A0>(a0).get ()));
2223}
23- template <class A0 ,class A1 >
24- call (PyObject*self,A0 const &a0,A1 const &a1)
25- :m_result(
26- PyEval_CallFunction (self,const_cast <char *>(" (" " O" " O" " )" ),
27- converter::callback_to_python<A0>(a0).get(),
28- converter::callback_to_python<A1>(a1).get()))
24+ template <class R ,class A0 ,class A1 >
25+ typename converter::callback_from_python<R>::result_type call (PyObject*callable,A0 const &a0,A1 const &a1,boost::type<R>* =0 )
2926{
30-
27+ converter::callback_from_python<R>converter;
28+ return converter (
29+ PyEval_CallFunction (callable,const_cast <char *>(" (" " O" " O" " )" ),
30+ converter::callback_to_python<A0>(a0).get (),
31+ converter::callback_to_python<A1>(a1).get ()));
3132}
32- template <class A0 ,class A1 ,class A2 >
33- call (PyObject*self,A0 const &a0,A1 const &a1,A2 const &a2)
34- :m_result(
35- PyEval_CallFunction (self,const_cast <char *>(" (" " O" " O" " O" " )" ),
33+ template <class R ,class A0 ,class A1 ,class A2 >
34+ typename converter::callback_from_python<R>::result_type call (PyObject*callable,A0 const &a0,A1 const &a1,A2 const &a2,boost::type<R>* =0 )
35+ {
36+ converter::callback_from_python<R>converter;
37+ return converter (
38+ PyEval_CallFunction (callable,const_cast <char *>(" (" " O" " O" " O" " )" ),
3639 converter::callback_to_python<A0>(a0).get (),
3740 converter::callback_to_python<A1>(a1).get (),
38- converter::callback_to_python<A2>(a2).get()))
39- {
40-
41+ converter::callback_to_python<A2>(a2).get ()));
4142}
42- template <class A0 ,class A1 ,class A2 ,class A3 >
43- call (PyObject*self,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3)
44- :m_result(
45- PyEval_CallFunction (self,const_cast <char *>(" (" " O" " O" " O" " O" " )" ),
43+ template <class R ,class A0 ,class A1 ,class A2 ,class A3 >
44+ typename converter::callback_from_python<R>::result_type call (PyObject*callable,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3,boost::type<R>* =0 )
45+ {
46+ converter::callback_from_python<R>converter;
47+ return converter (
48+ PyEval_CallFunction (callable,const_cast <char *>(" (" " O" " O" " O" " O" " )" ),
4649 converter::callback_to_python<A0>(a0).get (),
4750 converter::callback_to_python<A1>(a1).get (),
4851 converter::callback_to_python<A2>(a2).get (),
49- converter::callback_to_python<A3>(a3).get()))
50- {
51-
52+ converter::callback_to_python<A3>(a3).get ()));
5253}
53- template <class A0 ,class A1 ,class A2 ,class A3 ,class A4 >
54- call (PyObject*self,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3,A4 const &a4)
55- :m_result(
56- PyEval_CallFunction (self,const_cast <char *>(" (" " O" " O" " O" " O" " O" " )" ),
54+ template <class R ,class A0 ,class A1 ,class A2 ,class A3 ,class A4 >
55+ typename converter::callback_from_python<R>::result_type call (PyObject*callable,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3,A4 const &a4,boost::type<R>* =0 )
56+ {
57+ converter::callback_from_python<R>converter;
58+ return converter (
59+ PyEval_CallFunction (callable,const_cast <char *>(" (" " O" " O" " O" " O" " O" " )" ),
5760 converter::callback_to_python<A0>(a0).get (),
5861 converter::callback_to_python<A1>(a1).get (),
5962 converter::callback_to_python<A2>(a2).get (),
6063 converter::callback_to_python<A3>(a3).get (),
61- converter::callback_to_python<A4>(a4).get()))
62- {
63-
64+ converter::callback_to_python<A4>(a4).get ()));
6465}
65- template <class A0 ,class A1 ,class A2 ,class A3 ,class A4 ,class A5 >
66- call (PyObject*self,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3,A4 const &a4,A5 const &a5)
67- :m_result(
68- PyEval_CallFunction (self,const_cast <char *>(" (" " O" " O" " O" " O" " O" " O" " )" ),
66+ template <class R ,class A0 ,class A1 ,class A2 ,class A3 ,class A4 ,class A5 >
67+ typename converter::callback_from_python<R>::result_type call (PyObject*callable,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3,A4 const &a4,A5 const &a5,boost::type<R>* =0 )
68+ {
69+ converter::callback_from_python<R>converter;
70+ return converter (
71+ PyEval_CallFunction (callable,const_cast <char *>(" (" " O" " O" " O" " O" " O" " O" " )" ),
6972 converter::callback_to_python<A0>(a0).get (),
7073 converter::callback_to_python<A1>(a1).get (),
7174 converter::callback_to_python<A2>(a2).get (),
7275 converter::callback_to_python<A3>(a3).get (),
7376 converter::callback_to_python<A4>(a4).get (),
74- converter::callback_to_python<A5>(a5).get()))
75- {
76-
77+ converter::callback_to_python<A5>(a5).get ()));
7778}
78- template <class A0 ,class A1 ,class A2 ,class A3 ,class A4 ,class A5 ,class A6 >
79- call (PyObject*self,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3,A4 const &a4,A5 const &a5,A6 const &a6)
80- :m_result(
81- PyEval_CallFunction (self,const_cast <char *>(" (" " O" " O" " O" " O" " O" " O" " O" " )" ),
79+ template <class R ,class A0 ,class A1 ,class A2 ,class A3 ,class A4 ,class A5 ,class A6 >
80+ typename converter::callback_from_python<R>::result_type call (PyObject*callable,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3,A4 const &a4,A5 const &a5,A6 const &a6,boost::type<R>* =0 )
81+ {
82+ converter::callback_from_python<R>converter;
83+ return converter (
84+ PyEval_CallFunction (callable,const_cast <char *>(" (" " O" " O" " O" " O" " O" " O" " O" " )" ),
8285 converter::callback_to_python<A0>(a0).get (),
8386 converter::callback_to_python<A1>(a1).get (),
8487 converter::callback_to_python<A2>(a2).get (),
8588 converter::callback_to_python<A3>(a3).get (),
8689 converter::callback_to_python<A4>(a4).get (),
8790 converter::callback_to_python<A5>(a5).get (),
88- converter::callback_to_python<A6>(a6).get()))
89- {
90-
91+ converter::callback_to_python<A6>(a6).get ()));
9192}
92- template <class A0 ,class A1 ,class A2 ,class A3 ,class A4 ,class A5 ,class A6 ,class A7 >
93- call (PyObject*self,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3,A4 const &a4,A5 const &a5,A6 const &a6,A7 const &a7)
94- :m_result(
95- PyEval_CallFunction (self,const_cast <char *>(" (" " O" " O" " O" " O" " O" " O" " O" " O" " )" ),
93+ template <class R ,class A0 ,class A1 ,class A2 ,class A3 ,class A4 ,class A5 ,class A6 ,class A7 >
94+ typename converter::callback_from_python<R>::result_type call (PyObject*callable,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3,A4 const &a4,A5 const &a5,A6 const &a6,A7 const &a7,boost::type<R>* =0 )
95+ {
96+ converter::callback_from_python<R>converter;
97+ return converter (
98+ PyEval_CallFunction (callable,const_cast <char *>(" (" " O" " O" " O" " O" " O" " O" " O" " O" " )" ),
9699 converter::callback_to_python<A0>(a0).get (),
97100 converter::callback_to_python<A1>(a1).get (),
98101 converter::callback_to_python<A2>(a2).get (),
99102 converter::callback_to_python<A3>(a3).get (),
100103 converter::callback_to_python<A4>(a4).get (),
101104 converter::callback_to_python<A5>(a5).get (),
102105 converter::callback_to_python<A6>(a6).get (),
103- converter::callback_to_python<A7>(a7).get()))
104- {
105-
106+ converter::callback_to_python<A7>(a7).get ()));
106107}
107- template <class A0 ,class A1 ,class A2 ,class A3 ,class A4 ,class A5 ,class A6 ,class A7 ,class A8 >
108- call (PyObject*self,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3,A4 const &a4,A5 const &a5,A6 const &a6,A7 const &a7,A8 const &a8)
109- :m_result(
110- PyEval_CallFunction (self,const_cast <char *>(" (" " O" " O" " O" " O" " O" " O" " O" " O" " O" " )" ),
108+ template <class R ,class A0 ,class A1 ,class A2 ,class A3 ,class A4 ,class A5 ,class A6 ,class A7 ,class A8 >
109+ typename converter::callback_from_python<R>::result_type call (PyObject*callable,A0 const &a0,A1 const &a1,A2 const &a2,A3 const &a3,A4 const &a4,A5 const &a5,A6 const &a6,A7 const &a7,A8 const &a8,boost::type<R>* =0 )
110+ {
111+ converter::callback_from_python<R>converter;
112+ return converter (
113+ PyEval_CallFunction (callable,const_cast <char *>(" (" " O" " O" " O" " O" " O" " O" " O" " O" " O" " )" ),
111114 converter::callback_to_python<A0>(a0).get (),
112115 converter::callback_to_python<A1>(a1).get (),
113116 converter::callback_to_python<A2>(a2).get (),
@@ -116,10 +119,8 @@ call(PyObject*self,A0 const&a0,A1 const&a1,A2 const&a2,A3 const&a3,A4 const&a4,A
116119 converter::callback_to_python<A5>(a5).get (),
117120 converter::callback_to_python<A6>(a6).get (),
118121 converter::callback_to_python<A7>(a7).get (),
119- converter::callback_to_python<A8>(a8).get()
120- ))
121- {
122-
123- }
122+ converter::callback_to_python<A8>(a8).get ()));
123+ }
124+
124125
125- #endif // CALL_PP_DWA2002411_HPP
126+ #endif // CALL_PP_DWA2002411_HPP
0 commit comments