00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #ifndef LASS_GUARDIAN_OF_INCLUSION_UTIL_PYOBJECT_CALL_INL
00051 #define LASS_GUARDIAN_OF_INCLUSION_UTIL_PYOBJECT_CALL_INL
00052
00053 #include "util_common.h"
00054 #include "pyobject_plus.h"
00055 #include "py_tuple.h"
00056 #include "pyshadow_object.h"
00057 #include "call_traits.h"
00058 #include "../meta/if.h"
00059 #include "../meta/select.h"
00060 #include "../meta/wrap.h"
00061 #include "../meta/type_list.h"
00062
00063 #define LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN_EX(v_errorReturnValue)\
00064 catch (const ::lass::python::PythonException& error)\
00065 {\
00066 handlePythonException(error);\
00067 return v_errorReturnValue;\
00068 }\
00069 catch (const ::lass::util::Exception& error)\
00070 {\
00071 handleLassException(error);\
00072 return v_errorReturnValue;\
00073 }\
00074 catch (::std::exception& error)\
00075 {\
00076 handleStdException(error);\
00077 return v_errorReturnValue;\
00078 }
00079
00080 #define LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN\
00081 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN_EX(0)
00082
00083 #if LASS_COMPILER_TYPE == LASS_COMPILER_TYPE_MSVC
00084 # pragma warning(push)
00085 # pragma warning(disable: 4267) // conversion from 'size_t' to 'unsigned int', possible loss of data
00086 #endif
00087
00088 namespace lass
00089 {
00090 namespace python
00091 {
00092 namespace impl
00093 {
00094
00095
00096
00097 inline void handlePythonException(const PythonException& error)
00098 {
00099 PyErr_Restore(
00100 ::lass::python::fromSharedPtrToNakedCast(error.type()),
00101 ::lass::python::fromSharedPtrToNakedCast(error.value()),
00102 ::lass::python::fromSharedPtrToNakedCast(error.traceback()));
00103 }
00104
00105 inline void handleLassException(const util::Exception& error)
00106 {
00107 ::std::ostringstream buffer;
00108 buffer << error.message() << "\n\n(" << error.location() << ")";
00109 PyErr_SetString(PyExc_Exception, buffer.str().c_str());
00110 }
00111
00112 inline void handleStdException(const std::exception& error)
00113 {
00114 PyErr_SetString(PyExc_Exception, error.what());
00115 }
00116
00117
00118
00119 template <typename T>
00120 struct ArgValue
00121 {
00122 typedef T TStorage;
00123 protected:
00124 static const T* get(const TStorage& storage) { return &storage; }
00125 };
00126
00127 template <typename T>
00128 struct ArgPyPtr
00129 {
00130 typedef typename PyObjectPtr<T>::Type TStorage;
00131 protected:
00132 static T* get(const TStorage& storage) { return storage.get(); }
00133 };
00134
00135
00136
00137
00138 template <typename T>
00139 struct ArgumentTraits: public meta::If< IsPyObject<T>, meta::NullType, ArgValue<T> >
00140 {
00141 template <typename S> static const T& arg(const S& storage) { return *get(storage); }
00142 };
00143
00144 template <typename T>
00145 struct ArgumentTraits<const T>: public meta::If< IsPyObject<T>, meta::NullType, ArgValue<T> >
00146 {
00147 template <typename S> static const T& arg(const S& storage) { return *get(storage); }
00148 };
00149
00150 template <typename T>
00151 struct ArgumentTraits<T&>: public meta::If< IsPyObject<T>, ArgPyPtr<T>, meta::NullType >
00152 {
00153 template <typename S> static T& arg(const S& storage) { return *get(storage); }
00154 };
00155
00156 template <typename T>
00157 struct ArgumentTraits<const T&>: public meta::If< IsPyObject<T>, ArgPyPtr<T>, ArgValue<T> >
00158 {
00159 template <typename S> static const T& arg(const S& storage) { return *get(storage); }
00160 };
00161
00162 template <typename T>
00163 struct ArgumentTraits<T*>: public meta::If< IsPyObject<T>, ArgPyPtr<T>, meta::NullType >
00164 {
00165 template <typename S> static T* arg(const S& storage) { return get(storage); }
00166 };
00167
00168 template <typename T>
00169 struct ArgumentTraits<const T*>: public meta::If< IsPyObject<T>, ArgPyPtr<T>, meta::NullType >
00170 {
00171 template <typename S> static const T* arg(const S& storage) { return get(storage); }
00172 };
00173
00174 template <typename T>
00175 struct ArgumentTraits<T* const>: public meta::If< IsPyObject<T>, ArgPyPtr<T>, meta::NullType >
00176 {
00177 template <typename S> static T* arg(const S& storage) { return get(storage); }
00178 };
00179
00180 template <typename T>
00181 struct ArgumentTraits<const T* const>: public meta::If< IsPyObject<T>, ArgPyPtr<T>, meta::NullType >
00182 {
00183 template <typename S> static const T* arg(const S& storage) { return get(storage); }
00184 };
00185
00186
00187
00188
00189
00190
00191
00192 template <typename R>
00193 struct Caller
00194 {
00195
00196
00197 template <typename Function>
00198 static PyObject* function( Function iFunction )
00199 {
00200 try
00201 {
00202 return pyBuildSimpleObject( iFunction() );
00203 }
00204 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00205 };
00206
00207 template <typename Function, typename P1>
00208 static PyObject* function( Function iFunction, P1 p1 )
00209 {
00210 try
00211 {
00212 return pyBuildSimpleObject( iFunction(p1) );
00213 }
00214 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00215 }
00216
00217 template <typename Function, typename P1, typename P2>
00218 static PyObject* function( Function iFunction, P1 p1, P2 p2 )
00219 {
00220 try
00221 {
00222 return pyBuildSimpleObject( iFunction(p1, p2) );
00223 }
00224 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00225 }
00226
00227 template <typename Function, typename P1, typename P2, typename P3>
00228 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3 )
00229 {
00230 try
00231 {
00232 return pyBuildSimpleObject( iFunction(p1, p2, p3) );
00233 }
00234 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00235 }
00236
00237 template <typename Function, typename P1, typename P2, typename P3, typename P4>
00238 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4 )
00239 {
00240 try
00241 {
00242 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4) );
00243 }
00244 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00245 }
00246
00247 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5>
00248 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5 )
00249 {
00250 try
00251 {
00252 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4, p5) );
00253 }
00254 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00255 }
00256
00257 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
00258 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6 )
00259 {
00260 try
00261 {
00262 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4, p5, p6) );
00263 }
00264 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00265 }
00266
00267 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
00268 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7 )
00269 {
00270 try
00271 {
00272 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4, p5, p6, p7) );
00273 }
00274 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00275 }
00276
00277 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
00278 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8 )
00279 {
00280 try
00281 {
00282 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4, p5, p6, p7, p8) );
00283 }
00284 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00285 }
00286
00287 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
00288 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9 )
00289 {
00290 try
00291 {
00292 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9) );
00293 }
00294 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00295 }
00296
00297 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
00298 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10 )
00299 {
00300 try
00301 {
00302 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) );
00303 }
00304 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00305 }
00306
00307 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
00308 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11 )
00309 {
00310 try
00311 {
00312 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) );
00313 }
00314 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00315 }
00316
00317 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
00318 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12 )
00319 {
00320 try
00321 {
00322 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) );
00323 }
00324 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00325 }
00326
00327 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
00328 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13 )
00329 {
00330 try
00331 {
00332 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) );
00333 }
00334 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00335 }
00336
00337 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
00338 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13, P14 p14 )
00339 {
00340 try
00341 {
00342 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14) );
00343 }
00344 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00345 }
00346
00347 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
00348 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13, P14 p14, P15 p15 )
00349 {
00350 try
00351 {
00352 return pyBuildSimpleObject( iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) );
00353 }
00354 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00355 }
00356
00357
00358
00359
00360 template <typename CppClassPtr, typename Method>
00361 static PyObject* method( CppClassPtr iObject, Method iMethod )
00362 {
00363 try
00364 {
00365 return pyBuildSimpleObject( (iObject->*iMethod)() );
00366 }
00367 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00368 };
00369
00370 template <typename CppClassPtr, typename Method, typename P1>
00371 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1 )
00372 {
00373 try
00374 {
00375 return pyBuildSimpleObject( (iObject->*iMethod)(p1) );
00376 }
00377 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00378 }
00379
00380 template <typename CppClassPtr, typename Method, typename P1, typename P2>
00381 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2 )
00382 {
00383 try
00384 {
00385 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2) );
00386 }
00387 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00388 }
00389
00390 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3>
00391 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3 )
00392 {
00393 try
00394 {
00395 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3) );
00396 }
00397 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00398 }
00399
00400 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4>
00401 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4 )
00402 {
00403 try
00404 {
00405 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4) );
00406 }
00407 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00408 }
00409
00410 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5>
00411 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5 )
00412 {
00413 try
00414 {
00415 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4, p5) );
00416 }
00417 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00418 }
00419
00420 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
00421 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6 )
00422 {
00423 try
00424 {
00425 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4, p5, p6) );
00426 }
00427 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00428 }
00429
00430 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
00431 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7 )
00432 {
00433 try
00434 {
00435 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7) );
00436 }
00437 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00438 }
00439
00440 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
00441 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8 )
00442 {
00443 try
00444 {
00445 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8) );
00446 }
00447 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00448 }
00449
00450 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
00451 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9 )
00452 {
00453 try
00454 {
00455 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9) );
00456 }
00457 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00458 }
00459
00460 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
00461 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10 )
00462 {
00463 try
00464 {
00465 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) );
00466 }
00467 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00468 }
00469
00470 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
00471 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11 )
00472 {
00473 try
00474 {
00475 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) );
00476 }
00477 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00478 }
00479
00480 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
00481 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12 )
00482 {
00483 try
00484 {
00485 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) );
00486 }
00487 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00488 }
00489
00490 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
00491 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13 )
00492 {
00493 try
00494 {
00495 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) );
00496 }
00497 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00498 }
00499
00500 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
00501 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13, P14 p14 )
00502 {
00503 try
00504 {
00505 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14) );
00506 }
00507 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00508 }
00509
00510 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
00511 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13, P14 p14, P15 p15 )
00512 {
00513 try
00514 {
00515 return pyBuildSimpleObject( (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) );
00516 }
00517 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00518 }
00519
00520 };
00521
00522
00523
00524 template <>
00525 struct Caller<void>
00526 {
00527
00528
00529 template <typename Function>
00530 static PyObject* function( Function iFunction )
00531 {
00532 try
00533 {
00534 iFunction();
00535 }
00536 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00537 Py_INCREF( Py_None );
00538 return Py_None;
00539 };
00540
00541 template <typename Function, typename P1>
00542 static PyObject* function( Function iFunction, P1 p1 )
00543 {
00544 try
00545 {
00546 iFunction(p1);
00547 }
00548 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00549 Py_INCREF( Py_None );
00550 return Py_None;
00551 }
00552
00553 template <typename Function, typename P1, typename P2>
00554 static PyObject* function( Function iFunction, P1 p1, P2 p2 )
00555 {
00556 try
00557 {
00558 iFunction(p1, p2);
00559 }
00560 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00561 Py_INCREF( Py_None );
00562 return Py_None;
00563 }
00564
00565 template <typename Function, typename P1, typename P2, typename P3>
00566 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3 )
00567 {
00568 try
00569 {
00570 iFunction(p1, p2, p3);
00571 }
00572 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00573 Py_INCREF( Py_None );
00574 return Py_None;
00575 }
00576
00577 template <typename Function, typename P1, typename P2, typename P3, typename P4>
00578 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4 )
00579 {
00580 try
00581 {
00582 iFunction(p1, p2, p3, p4);
00583 }
00584 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00585 Py_INCREF( Py_None );
00586 return Py_None;
00587 }
00588
00589 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5>
00590 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5 )
00591 {
00592 try
00593 {
00594 iFunction(p1, p2, p3, p4, p5);
00595 }
00596 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00597 Py_INCREF( Py_None );
00598 return Py_None;
00599 }
00600
00601 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
00602 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6 )
00603 {
00604 try
00605 {
00606 iFunction(p1, p2, p3, p4, p5, p6);
00607 }
00608 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00609 Py_INCREF( Py_None );
00610 return Py_None;
00611 }
00612
00613 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
00614 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7 )
00615 {
00616 try
00617 {
00618 iFunction(p1, p2, p3, p4, p5, p6, p7);
00619 }
00620 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00621 Py_INCREF( Py_None );
00622 return Py_None;
00623 }
00624
00625 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
00626 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8 )
00627 {
00628 try
00629 {
00630 iFunction(p1, p2, p3, p4, p5, p6, p7, p8);
00631 }
00632 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00633 Py_INCREF( Py_None );
00634 return Py_None;
00635 }
00636
00637 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
00638 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9 )
00639 {
00640 try
00641 {
00642 iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9);
00643 }
00644 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00645 Py_INCREF( Py_None );
00646 return Py_None;
00647 }
00648
00649 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
00650 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10 )
00651 {
00652 try
00653 {
00654 iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
00655 }
00656 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00657 Py_INCREF( Py_None );
00658 return Py_None;
00659 }
00660
00661 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
00662 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11 )
00663 {
00664 try
00665 {
00666 iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
00667 }
00668 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00669 Py_INCREF( Py_None );
00670 return Py_None;
00671 }
00672
00673 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
00674 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12 )
00675 {
00676 try
00677 {
00678 iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
00679 }
00680 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00681 Py_INCREF( Py_None );
00682 return Py_None;
00683 }
00684
00685 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
00686 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13 )
00687 {
00688 try
00689 {
00690 iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13);
00691 }
00692 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00693 Py_INCREF( Py_None );
00694 return Py_None;
00695 }
00696
00697 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
00698 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13, P14 p14 )
00699 {
00700 try
00701 {
00702 iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14);
00703 }
00704 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00705 Py_INCREF( Py_None );
00706 return Py_None;
00707 }
00708
00709 template <typename Function, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
00710 static PyObject* function( Function iFunction, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13, P14 p14, P15 p15 )
00711 {
00712 try
00713 {
00714 iFunction(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15);
00715 }
00716 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00717 Py_INCREF( Py_None );
00718 return Py_None;
00719 }
00720
00721
00722
00723
00724 template <typename CppClassPtr, typename Method>
00725 static PyObject* method( CppClassPtr iObject, Method iMethod )
00726 {
00727 try
00728 {
00729 (iObject->*iMethod)();
00730 }
00731 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00732 Py_INCREF( Py_None );
00733 return Py_None;
00734 };
00735
00736 template <typename CppClassPtr, typename Method, typename P1>
00737 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1 )
00738 {
00739 try
00740 {
00741 (iObject->*iMethod)(p1);
00742 }
00743 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00744 Py_INCREF( Py_None );
00745 return Py_None;
00746 }
00747
00748 template <typename CppClassPtr, typename Method, typename P1, typename P2>
00749 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2 )
00750 {
00751 try
00752 {
00753 (iObject->*iMethod)(p1, p2);
00754 }
00755 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00756 Py_INCREF( Py_None );
00757 return Py_None;
00758 }
00759
00760 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3>
00761 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3 )
00762 {
00763 try
00764 {
00765 (iObject->*iMethod)(p1, p2, p3);
00766 }
00767 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00768 Py_INCREF( Py_None );
00769 return Py_None;
00770 }
00771
00772 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4>
00773 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4 )
00774 {
00775 try
00776 {
00777 (iObject->*iMethod)(p1, p2, p3, p4);
00778 }
00779 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00780 Py_INCREF( Py_None );
00781 return Py_None;
00782 }
00783
00784 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5>
00785 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5 )
00786 {
00787 try
00788 {
00789 (iObject->*iMethod)(p1, p2, p3, p4, p5);
00790 }
00791 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00792 Py_INCREF( Py_None );
00793 return Py_None;
00794 }
00795
00796 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
00797 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6 )
00798 {
00799 try
00800 {
00801 (iObject->*iMethod)(p1, p2, p3, p4, p5, p6);
00802 }
00803 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00804 Py_INCREF( Py_None );
00805 return Py_None;
00806 }
00807
00808 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
00809 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7 )
00810 {
00811 try
00812 {
00813 (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7);
00814 }
00815 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00816 Py_INCREF( Py_None );
00817 return Py_None;
00818 }
00819
00820 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
00821 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8 )
00822 {
00823 try
00824 {
00825 (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8);
00826 }
00827 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00828 Py_INCREF( Py_None );
00829 return Py_None;
00830 }
00831
00832 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
00833 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9 )
00834 {
00835 try
00836 {
00837 (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9);
00838 }
00839 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00840 Py_INCREF( Py_None );
00841 return Py_None;
00842 }
00843
00844 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
00845 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10 )
00846 {
00847 try
00848 {
00849 (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
00850 }
00851 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00852 Py_INCREF( Py_None );
00853 return Py_None;
00854 }
00855
00856 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
00857 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11 )
00858 {
00859 try
00860 {
00861 (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
00862 }
00863 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00864 Py_INCREF( Py_None );
00865 return Py_None;
00866 }
00867
00868 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
00869 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12 )
00870 {
00871 try
00872 {
00873 (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
00874 }
00875 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00876 Py_INCREF( Py_None );
00877 return Py_None;
00878 }
00879
00880 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
00881 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13 )
00882 {
00883 try
00884 {
00885 (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13);
00886 }
00887 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00888 Py_INCREF( Py_None );
00889 return Py_None;
00890 }
00891
00892 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
00893 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13, P14 p14 )
00894 {
00895 try
00896 {
00897 (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14);
00898 }
00899 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00900 Py_INCREF( Py_None );
00901 return Py_None;
00902 }
00903
00904 template <typename CppClassPtr, typename Method, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
00905 static PyObject* method( CppClassPtr iObject, Method iMethod, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12, P13 p13, P14 p14, P15 p15 )
00906 {
00907 try
00908 {
00909 (iObject->*iMethod)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15);
00910 }
00911 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
00912 Py_INCREF( Py_None );
00913 return Py_None;
00914 }
00915
00916 };
00917
00918
00919
00920
00921
00922
00923
00924 template <typename R>
00925 PyObject* callFunction( PyObject* args, R (*iFunction)() )
00926 {
00927 typedef R(*TFunction)();
00928 if( decodeTuple(args) != 0 )
00929 {
00930 return 0;
00931 }
00932 return Caller<R>::template function<TFunction>( iFunction );
00933 }
00934
00935
00936
00937 template <typename R, typename P1>
00938 PyObject* callFunction( PyObject* args, R (*iFunction)(P1) )
00939 {
00940 typedef R (*TFunction)(P1);
00941 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
00942
00943 if( decodeTuple<S1>( args, p1 ) != 0 )
00944 {
00945 return 0;
00946 }
00947 return Caller<R>::template function<TFunction, P1>(
00948 iFunction, TArg1::arg(p1) );
00949 }
00950
00951
00952
00953 template <typename R, typename P1, typename P2>
00954 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2) )
00955 {
00956 typedef R (*TFunction)(P1, P2);
00957 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
00958 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
00959
00960 if( decodeTuple<S1, S2>( args, p1, p2 ) != 0 )
00961 {
00962 return 0;
00963 }
00964 return Caller<R>::template function<TFunction, P1, P2>(
00965 iFunction, TArg1::arg(p1), TArg2::arg(p2) );
00966 }
00967
00968
00969
00970 template <typename R, typename P1, typename P2, typename P3>
00971 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3) )
00972 {
00973 typedef R (*TFunction)(P1, P2, P3);
00974 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
00975 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
00976 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
00977
00978 if( decodeTuple<S1, S2, S3>( args, p1, p2, p3 ) != 0 )
00979 {
00980 return 0;
00981 }
00982 return Caller<R>::template function<TFunction, P1, P2, P3>(
00983 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3) );
00984 }
00985
00986
00987
00988 template <typename R, typename P1, typename P2, typename P3, typename P4>
00989 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4) )
00990 {
00991 typedef R (*TFunction)(P1, P2, P3, P4);
00992 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
00993 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
00994 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
00995 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
00996
00997 if( decodeTuple<S1, S2, S3, S4>( args, p1, p2, p3, p4 ) != 0 )
00998 {
00999 return 0;
01000 }
01001 return Caller<R>::template function<TFunction, P1, P2, P3, P4>(
01002 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4) );
01003 }
01004
01005
01006
01007 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5>
01008 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5) )
01009 {
01010 typedef R (*TFunction)(P1, P2, P3, P4, P5);
01011 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01012 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01013 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01014 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01015 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01016
01017 if( decodeTuple<S1, S2, S3, S4, S5>( args, p1, p2, p3, p4, p5 ) != 0 )
01018 {
01019 return 0;
01020 }
01021 return Caller<R>::template function<TFunction, P1, P2, P3, P4, P5>(
01022 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5) );
01023 }
01024
01025
01026
01027 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
01028 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6) )
01029 {
01030 typedef R (*TFunction)(P1, P2, P3, P4, P5, P6);
01031 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01032 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01033 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01034 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01035 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01036 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01037
01038 if( decodeTuple<S1, S2, S3, S4, S5, S6>( args, p1, p2, p3, p4, p5, p6 ) != 0 )
01039 {
01040 return 0;
01041 }
01042 return Caller<R>::template function<TFunction, P1, P2, P3, P4, P5, P6>(
01043 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6) );
01044 }
01045
01046
01047
01048 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
01049 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7) )
01050 {
01051 typedef R (*TFunction)(P1, P2, P3, P4, P5, P6, P7);
01052 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01053 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01054 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01055 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01056 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01057 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01058 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01059
01060 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7>( args, p1, p2, p3, p4, p5, p6, p7 ) != 0 )
01061 {
01062 return 0;
01063 }
01064 return Caller<R>::template function<TFunction, P1, P2, P3, P4, P5, P6, P7>(
01065 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7) );
01066 }
01067
01068
01069
01070 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
01071 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8) )
01072 {
01073 typedef R (*TFunction)(P1, P2, P3, P4, P5, P6, P7, P8);
01074 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01075 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01076 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01077 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01078 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01079 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01080 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01081 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01082
01083 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8>( args, p1, p2, p3, p4, p5, p6, p7, p8 ) != 0 )
01084 {
01085 return 0;
01086 }
01087 return Caller<R>::template function<TFunction, P1, P2, P3, P4, P5, P6, P7, P8>(
01088 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8) );
01089 }
01090
01091
01092
01093 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
01094 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9) )
01095 {
01096 typedef R (*TFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9);
01097 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01098 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01099 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01100 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01101 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01102 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01103 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01104 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01105 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01106
01107 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9 ) != 0 )
01108 {
01109 return 0;
01110 }
01111 return Caller<R>::template function<TFunction, P1, P2, P3, P4, P5, P6, P7, P8, P9>(
01112 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9) );
01113 }
01114
01115
01116
01117 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
01118 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) )
01119 {
01120 typedef R (*TFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10);
01121 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01122 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01123 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01124 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01125 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01126 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01127 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01128 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01129 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01130 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01131
01132 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ) != 0 )
01133 {
01134 return 0;
01135 }
01136 return Caller<R>::template function<TFunction, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>(
01137 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10) );
01138 }
01139
01140
01141
01142 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
01143 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) )
01144 {
01145 typedef R (*TFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11);
01146 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01147 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01148 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01149 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01150 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01151 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01152 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01153 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01154 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01155 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01156 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01157
01158 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ) != 0 )
01159 {
01160 return 0;
01161 }
01162 return Caller<R>::template function<TFunction, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>(
01163 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11) );
01164 }
01165
01166
01167
01168 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
01169 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) )
01170 {
01171 typedef R (*TFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12);
01172 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01173 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01174 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01175 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01176 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01177 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01178 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01179 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01180 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01181 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01182 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01183 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01184
01185 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ) != 0 )
01186 {
01187 return 0;
01188 }
01189 return Caller<R>::template function<TFunction, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>(
01190 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12) );
01191 }
01192
01193
01194
01195 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
01196 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) )
01197 {
01198 typedef R (*TFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13);
01199 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01200 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01201 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01202 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01203 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01204 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01205 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01206 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01207 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01208 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01209 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01210 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01211 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
01212
01213 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ) != 0 )
01214 {
01215 return 0;
01216 }
01217 return Caller<R>::template function<TFunction, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>(
01218 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13) );
01219 }
01220
01221
01222
01223 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
01224 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) )
01225 {
01226 typedef R (*TFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14);
01227 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01228 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01229 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01230 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01231 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01232 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01233 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01234 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01235 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01236 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01237 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01238 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01239 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
01240 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
01241
01242 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ) != 0 )
01243 {
01244 return 0;
01245 }
01246 return Caller<R>::template function<TFunction, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14>(
01247 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14) );
01248 }
01249
01250
01251
01252 template <typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
01253 PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) )
01254 {
01255 typedef R (*TFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15);
01256 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01257 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01258 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01259 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01260 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01261 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01262 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01263 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01264 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01265 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01266 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01267 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01268 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
01269 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
01270 typedef ArgumentTraits<P15> TArg15; typedef typename TArg15::TStorage S15; S15 p15;
01271
01272 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) != 0 )
01273 {
01274 return 0;
01275 }
01276 return Caller<R>::template function<TFunction, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(
01277 iFunction, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14), TArg15::arg(p15) );
01278 }
01279
01280
01281
01282
01283
01284
01285 template <class CppClass>
01286 struct CallMethod
01287 {
01288
01289
01290
01291
01292 template <typename C, typename R>
01293 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)() )
01294 {
01295 typedef R (C::*TMethod)();
01296 if( decodeTuple(args) != 0 )
01297 {
01298 return 0;
01299 }
01300 return Caller<R>::template method<CppClass*, TMethod>(
01301 iObject, iMethod );
01302 }
01303
01304
01305
01306 template <typename C, typename R, typename P1>
01307 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1) )
01308 {
01309 typedef R (C::*TMethod)(P1);
01310 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01311
01312 if( decodeTuple<S1>( args, p1 ) != 0 )
01313 {
01314 return 0;
01315 }
01316 return Caller<R>::template method<CppClass*, TMethod, P1>(
01317 iObject, iMethod, TArg1::arg(p1) );
01318 }
01319
01320
01321
01322 template <typename C, typename R, typename P1, typename P2>
01323 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2) )
01324 {
01325 typedef R (C::*TMethod)(P1, P2);
01326 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01327 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01328
01329 if( decodeTuple<S1, S2>( args, p1, p2 ) != 0 )
01330 {
01331 return 0;
01332 }
01333 return Caller<R>::template method<CppClass*, TMethod, P1, P2>(
01334 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2) );
01335 }
01336
01337
01338
01339 template <typename C, typename R, typename P1, typename P2, typename P3>
01340 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3) )
01341 {
01342 typedef R (C::*TMethod)(P1, P2, P3);
01343 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01344 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01345 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01346
01347 if( decodeTuple<S1, S2, S3>( args, p1, p2, p3 ) != 0 )
01348 {
01349 return 0;
01350 }
01351 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3>(
01352 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3) );
01353 }
01354
01355
01356
01357 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4>
01358 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4) )
01359 {
01360 typedef R (C::*TMethod)(P1, P2, P3, P4);
01361 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01362 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01363 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01364 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01365
01366 if( decodeTuple<S1, S2, S3, S4>( args, p1, p2, p3, p4 ) != 0 )
01367 {
01368 return 0;
01369 }
01370 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4>(
01371 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4) );
01372 }
01373
01374
01375
01376 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5>
01377 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5) )
01378 {
01379 typedef R (C::*TMethod)(P1, P2, P3, P4, P5);
01380 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01381 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01382 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01383 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01384 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01385
01386 if( decodeTuple<S1, S2, S3, S4, S5>( args, p1, p2, p3, p4, p5 ) != 0 )
01387 {
01388 return 0;
01389 }
01390 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4, P5>(
01391 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5) );
01392 }
01393
01394
01395
01396 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
01397 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6) )
01398 {
01399 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6);
01400 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01401 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01402 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01403 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01404 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01405 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01406
01407 if( decodeTuple<S1, S2, S3, S4, S5, S6>( args, p1, p2, p3, p4, p5, p6 ) != 0 )
01408 {
01409 return 0;
01410 }
01411 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4, P5, P6>(
01412 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6) );
01413 }
01414
01415
01416
01417 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
01418 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7) )
01419 {
01420 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7);
01421 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01422 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01423 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01424 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01425 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01426 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01427 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01428
01429 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7>( args, p1, p2, p3, p4, p5, p6, p7 ) != 0 )
01430 {
01431 return 0;
01432 }
01433 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7>(
01434 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7) );
01435 }
01436
01437
01438
01439 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
01440 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8) )
01441 {
01442 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8);
01443 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01444 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01445 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01446 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01447 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01448 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01449 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01450 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01451
01452 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8>( args, p1, p2, p3, p4, p5, p6, p7, p8 ) != 0 )
01453 {
01454 return 0;
01455 }
01456 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8>(
01457 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8) );
01458 }
01459
01460
01461
01462 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
01463 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9) )
01464 {
01465 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9);
01466 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01467 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01468 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01469 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01470 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01471 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01472 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01473 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01474 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01475
01476 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9 ) != 0 )
01477 {
01478 return 0;
01479 }
01480 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9>(
01481 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9) );
01482 }
01483
01484
01485
01486 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
01487 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) )
01488 {
01489 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10);
01490 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01491 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01492 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01493 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01494 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01495 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01496 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01497 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01498 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01499 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01500
01501 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ) != 0 )
01502 {
01503 return 0;
01504 }
01505 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>(
01506 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10) );
01507 }
01508
01509
01510
01511 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
01512 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) )
01513 {
01514 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11);
01515 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01516 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01517 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01518 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01519 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01520 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01521 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01522 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01523 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01524 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01525 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01526
01527 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ) != 0 )
01528 {
01529 return 0;
01530 }
01531 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>(
01532 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11) );
01533 }
01534
01535
01536
01537 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
01538 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) )
01539 {
01540 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12);
01541 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01542 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01543 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01544 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01545 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01546 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01547 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01548 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01549 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01550 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01551 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01552 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01553
01554 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ) != 0 )
01555 {
01556 return 0;
01557 }
01558 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>(
01559 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12) );
01560 }
01561
01562
01563
01564 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
01565 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) )
01566 {
01567 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13);
01568 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01569 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01570 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01571 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01572 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01573 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01574 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01575 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01576 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01577 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01578 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01579 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01580 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
01581
01582 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ) != 0 )
01583 {
01584 return 0;
01585 }
01586 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>(
01587 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13) );
01588 }
01589
01590
01591
01592 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
01593 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) )
01594 {
01595 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14);
01596 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01597 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01598 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01599 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01600 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01601 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01602 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01603 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01604 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01605 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01606 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01607 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01608 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
01609 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
01610
01611 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ) != 0 )
01612 {
01613 return 0;
01614 }
01615 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14>(
01616 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14) );
01617 }
01618
01619
01620
01621 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
01622 static PyObject* call( PyObject* args, CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) )
01623 {
01624 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15);
01625 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01626 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01627 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01628 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01629 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01630 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01631 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01632 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01633 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01634 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01635 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01636 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01637 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
01638 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
01639 typedef ArgumentTraits<P15> TArg15; typedef typename TArg15::TStorage S15; S15 p15;
01640
01641 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) != 0 )
01642 {
01643 return 0;
01644 }
01645 return Caller<R>::template method<CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(
01646 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14), TArg15::arg(p15) );
01647 }
01648
01649
01650
01651
01652
01653
01654 template <typename C, typename R>
01655 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)() const )
01656 {
01657 typedef R (C::*TMethod)() const;
01658 if( decodeTuple(args) != 0 )
01659 {
01660 return 0;
01661 }
01662 return Caller<R>::template method<const CppClass*, TMethod>(
01663 iObject, iMethod );
01664 }
01665
01666
01667
01668 template <typename C, typename R, typename P1>
01669 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1) const )
01670 {
01671 typedef R (C::*TMethod)(P1) const;
01672 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01673
01674 if( decodeTuple<S1>( args, p1 ) != 0 )
01675 {
01676 return 0;
01677 }
01678 return Caller<R>::template method<const CppClass*, TMethod, P1>(
01679 iObject, iMethod, TArg1::arg(p1) );
01680 }
01681
01682
01683
01684 template <typename C, typename R, typename P1, typename P2>
01685 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2) const )
01686 {
01687 typedef R (C::*TMethod)(P1, P2) const;
01688 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01689 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01690
01691 if( decodeTuple<S1, S2>( args, p1, p2 ) != 0 )
01692 {
01693 return 0;
01694 }
01695 return Caller<R>::template method<const CppClass*, TMethod, P1, P2>(
01696 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2) );
01697 }
01698
01699
01700
01701 template <typename C, typename R, typename P1, typename P2, typename P3>
01702 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3) const )
01703 {
01704 typedef R (C::*TMethod)(P1, P2, P3) const;
01705 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01706 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01707 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01708
01709 if( decodeTuple<S1, S2, S3>( args, p1, p2, p3 ) != 0 )
01710 {
01711 return 0;
01712 }
01713 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3>(
01714 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3) );
01715 }
01716
01717
01718
01719 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4>
01720 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4) const )
01721 {
01722 typedef R (C::*TMethod)(P1, P2, P3, P4) const;
01723 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01724 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01725 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01726 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01727
01728 if( decodeTuple<S1, S2, S3, S4>( args, p1, p2, p3, p4 ) != 0 )
01729 {
01730 return 0;
01731 }
01732 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4>(
01733 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4) );
01734 }
01735
01736
01737
01738 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5>
01739 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5) const )
01740 {
01741 typedef R (C::*TMethod)(P1, P2, P3, P4, P5) const;
01742 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01743 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01744 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01745 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01746 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01747
01748 if( decodeTuple<S1, S2, S3, S4, S5>( args, p1, p2, p3, p4, p5 ) != 0 )
01749 {
01750 return 0;
01751 }
01752 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4, P5>(
01753 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5) );
01754 }
01755
01756
01757
01758 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
01759 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6) const )
01760 {
01761 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6) const;
01762 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01763 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01764 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01765 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01766 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01767 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01768
01769 if( decodeTuple<S1, S2, S3, S4, S5, S6>( args, p1, p2, p3, p4, p5, p6 ) != 0 )
01770 {
01771 return 0;
01772 }
01773 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4, P5, P6>(
01774 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6) );
01775 }
01776
01777
01778
01779 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
01780 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7) const )
01781 {
01782 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7) const;
01783 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01784 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01785 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01786 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01787 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01788 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01789 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01790
01791 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7>( args, p1, p2, p3, p4, p5, p6, p7 ) != 0 )
01792 {
01793 return 0;
01794 }
01795 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7>(
01796 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7) );
01797 }
01798
01799
01800
01801 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
01802 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8) const )
01803 {
01804 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8) const;
01805 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01806 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01807 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01808 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01809 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01810 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01811 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01812 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01813
01814 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8>( args, p1, p2, p3, p4, p5, p6, p7, p8 ) != 0 )
01815 {
01816 return 0;
01817 }
01818 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8>(
01819 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8) );
01820 }
01821
01822
01823
01824 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
01825 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9) const )
01826 {
01827 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9) const;
01828 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01829 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01830 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01831 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01832 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01833 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01834 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01835 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01836 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01837
01838 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9 ) != 0 )
01839 {
01840 return 0;
01841 }
01842 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9>(
01843 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9) );
01844 }
01845
01846
01847
01848 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
01849 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) const )
01850 {
01851 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) const;
01852 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01853 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01854 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01855 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01856 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01857 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01858 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01859 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01860 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01861 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01862
01863 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ) != 0 )
01864 {
01865 return 0;
01866 }
01867 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>(
01868 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10) );
01869 }
01870
01871
01872
01873 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
01874 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) const )
01875 {
01876 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) const;
01877 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01878 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01879 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01880 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01881 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01882 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01883 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01884 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01885 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01886 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01887 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01888
01889 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ) != 0 )
01890 {
01891 return 0;
01892 }
01893 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>(
01894 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11) );
01895 }
01896
01897
01898
01899 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
01900 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) const )
01901 {
01902 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) const;
01903 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01904 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01905 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01906 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01907 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01908 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01909 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01910 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01911 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01912 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01913 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01914 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01915
01916 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ) != 0 )
01917 {
01918 return 0;
01919 }
01920 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>(
01921 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12) );
01922 }
01923
01924
01925
01926 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
01927 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) const )
01928 {
01929 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) const;
01930 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01931 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01932 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01933 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01934 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01935 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01936 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01937 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01938 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01939 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01940 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01941 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01942 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
01943
01944 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ) != 0 )
01945 {
01946 return 0;
01947 }
01948 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>(
01949 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13) );
01950 }
01951
01952
01953
01954 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
01955 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) const )
01956 {
01957 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) const;
01958 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01959 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01960 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01961 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01962 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01963 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01964 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01965 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01966 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01967 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01968 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01969 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01970 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
01971 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
01972
01973 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ) != 0 )
01974 {
01975 return 0;
01976 }
01977 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14>(
01978 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14) );
01979 }
01980
01981
01982
01983 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
01984 static PyObject* call( PyObject* args, const CppClass* iObject, R (C::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) const )
01985 {
01986 typedef R (C::*TMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) const;
01987 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
01988 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
01989 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
01990 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
01991 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
01992 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
01993 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
01994 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
01995 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
01996 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
01997 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
01998 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
01999 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
02000 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
02001 typedef ArgumentTraits<P15> TArg15; typedef typename TArg15::TStorage S15; S15 p15;
02002
02003 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) != 0 )
02004 {
02005 return 0;
02006 }
02007 return Caller<R>::template method<const CppClass*, TMethod, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(
02008 iObject, iMethod, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14), TArg15::arg(p15) );
02009 }
02010
02011
02012
02013
02014
02015 template <typename C, typename R>
02016 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*) )
02017 {
02018 typedef R (*TFunction)(C*);
02019 if( decodeTuple(args) != 0 )
02020 {
02021 return 0;
02022 }
02023 return Caller<R>::template function<TFunction, C* >(
02024 iFreeMethod, iObject );
02025 }
02026
02027
02028
02029
02030 template <typename C, typename R, typename P1>
02031 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1) )
02032 {
02033 typedef R (*TFunction)(C*, P1);
02034 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02035
02036 if( decodeTuple<S1>( args, p1 ) != 0 )
02037 {
02038 return 0;
02039 }
02040 return Caller<R>::template function<TFunction, C*, P1>(
02041 iFreeMethod, iObject, TArg1::arg(p1) );
02042 }
02043
02044
02045
02046
02047 template <typename C, typename R, typename P1, typename P2>
02048 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2) )
02049 {
02050 typedef R (*TFunction)(C*, P1, P2);
02051 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02052 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02053
02054 if( decodeTuple<S1, S2>( args, p1, p2 ) != 0 )
02055 {
02056 return 0;
02057 }
02058 return Caller<R>::template function<TFunction, C*, P1, P2>(
02059 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2) );
02060 }
02061
02062
02063
02064
02065 template <typename C, typename R, typename P1, typename P2, typename P3>
02066 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3) )
02067 {
02068 typedef R (*TFunction)(C*, P1, P2, P3);
02069 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02070 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02071 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02072
02073 if( decodeTuple<S1, S2, S3>( args, p1, p2, p3 ) != 0 )
02074 {
02075 return 0;
02076 }
02077 return Caller<R>::template function<TFunction, C*, P1, P2, P3>(
02078 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3) );
02079 }
02080
02081
02082
02083
02084 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4>
02085 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4) )
02086 {
02087 typedef R (*TFunction)(C*, P1, P2, P3, P4);
02088 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02089 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02090 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02091 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02092
02093 if( decodeTuple<S1, S2, S3, S4>( args, p1, p2, p3, p4 ) != 0 )
02094 {
02095 return 0;
02096 }
02097 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4>(
02098 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4) );
02099 }
02100
02101
02102
02103
02104 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5>
02105 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4, P5) )
02106 {
02107 typedef R (*TFunction)(C*, P1, P2, P3, P4, P5);
02108 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02109 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02110 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02111 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02112 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02113
02114 if( decodeTuple<S1, S2, S3, S4, S5>( args, p1, p2, p3, p4, p5 ) != 0 )
02115 {
02116 return 0;
02117 }
02118 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4, P5>(
02119 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5) );
02120 }
02121
02122
02123
02124
02125 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
02126 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4, P5, P6) )
02127 {
02128 typedef R (*TFunction)(C*, P1, P2, P3, P4, P5, P6);
02129 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02130 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02131 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02132 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02133 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02134 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02135
02136 if( decodeTuple<S1, S2, S3, S4, S5, S6>( args, p1, p2, p3, p4, p5, p6 ) != 0 )
02137 {
02138 return 0;
02139 }
02140 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4, P5, P6>(
02141 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6) );
02142 }
02143
02144
02145
02146
02147 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
02148 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4, P5, P6, P7) )
02149 {
02150 typedef R (*TFunction)(C*, P1, P2, P3, P4, P5, P6, P7);
02151 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02152 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02153 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02154 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02155 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02156 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02157 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02158
02159 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7>( args, p1, p2, p3, p4, p5, p6, p7 ) != 0 )
02160 {
02161 return 0;
02162 }
02163 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4, P5, P6, P7>(
02164 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7) );
02165 }
02166
02167
02168
02169
02170 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
02171 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4, P5, P6, P7, P8) )
02172 {
02173 typedef R (*TFunction)(C*, P1, P2, P3, P4, P5, P6, P7, P8);
02174 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02175 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02176 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02177 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02178 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02179 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02180 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02181 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02182
02183 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8>( args, p1, p2, p3, p4, p5, p6, p7, p8 ) != 0 )
02184 {
02185 return 0;
02186 }
02187 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4, P5, P6, P7, P8>(
02188 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8) );
02189 }
02190
02191
02192
02193
02194 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
02195 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9) )
02196 {
02197 typedef R (*TFunction)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9);
02198 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02199 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02200 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02201 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02202 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02203 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02204 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02205 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02206 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02207
02208 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9 ) != 0 )
02209 {
02210 return 0;
02211 }
02212 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4, P5, P6, P7, P8, P9>(
02213 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9) );
02214 }
02215
02216
02217
02218
02219 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
02220 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) )
02221 {
02222 typedef R (*TFunction)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10);
02223 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02224 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02225 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02226 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02227 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02228 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02229 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02230 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02231 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02232 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02233
02234 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ) != 0 )
02235 {
02236 return 0;
02237 }
02238 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>(
02239 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10) );
02240 }
02241
02242
02243
02244
02245 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
02246 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) )
02247 {
02248 typedef R (*TFunction)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11);
02249 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02250 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02251 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02252 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02253 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02254 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02255 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02256 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02257 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02258 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02259 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
02260
02261 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ) != 0 )
02262 {
02263 return 0;
02264 }
02265 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>(
02266 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11) );
02267 }
02268
02269
02270
02271
02272 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
02273 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) )
02274 {
02275 typedef R (*TFunction)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12);
02276 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02277 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02278 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02279 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02280 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02281 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02282 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02283 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02284 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02285 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02286 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
02287 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
02288
02289 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ) != 0 )
02290 {
02291 return 0;
02292 }
02293 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>(
02294 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12) );
02295 }
02296
02297
02298
02299
02300 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
02301 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) )
02302 {
02303 typedef R (*TFunction)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13);
02304 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02305 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02306 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02307 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02308 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02309 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02310 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02311 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02312 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02313 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02314 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
02315 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
02316 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
02317
02318 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ) != 0 )
02319 {
02320 return 0;
02321 }
02322 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>(
02323 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13) );
02324 }
02325
02326
02327
02328
02329 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
02330 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) )
02331 {
02332 typedef R (*TFunction)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14);
02333 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02334 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02335 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02336 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02337 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02338 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02339 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02340 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02341 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02342 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02343 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
02344 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
02345 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
02346 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
02347
02348 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ) != 0 )
02349 {
02350 return 0;
02351 }
02352 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14>(
02353 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14) );
02354 }
02355
02356
02357
02358
02359 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
02360 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) )
02361 {
02362 typedef R (*TFunction)(C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15);
02363 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02364 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02365 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02366 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02367 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02368 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02369 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02370 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02371 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02372 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02373 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
02374 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
02375 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
02376 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
02377 typedef ArgumentTraits<P15> TArg15; typedef typename TArg15::TStorage S15; S15 p15;
02378
02379 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) != 0 )
02380 {
02381 return 0;
02382 }
02383 return Caller<R>::template function<TFunction, C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(
02384 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14), TArg15::arg(p15) );
02385 }
02386
02387
02388
02389
02390
02391
02392 template <typename C, typename R>
02393 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&) )
02394 {
02395 typedef R (*TFunction)(C&);
02396 if( decodeTuple(args) != 0 )
02397 {
02398 return 0;
02399 }
02400 LASS_ASSERT(iObject);
02401 return Caller<R>::template function<TFunction, C& >(
02402 iFreeMethod, *iObject );
02403 }
02404
02405
02406
02407
02408 template <typename C, typename R, typename P1>
02409 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1) )
02410 {
02411 typedef R (*TFunction)(C&, P1);
02412 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02413
02414 if( decodeTuple<S1>( args, p1 ) != 0 )
02415 {
02416 return 0;
02417 }
02418 LASS_ASSERT(iObject);
02419 return Caller<R>::template function<TFunction, C&, P1>(
02420 iFreeMethod, *iObject, TArg1::arg(p1) );
02421 }
02422
02423
02424
02425
02426 template <typename C, typename R, typename P1, typename P2>
02427 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2) )
02428 {
02429 typedef R (*TFunction)(C&, P1, P2);
02430 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02431 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02432
02433 if( decodeTuple<S1, S2>( args, p1, p2 ) != 0 )
02434 {
02435 return 0;
02436 }
02437 LASS_ASSERT(iObject);
02438 return Caller<R>::template function<TFunction, C&, P1, P2>(
02439 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2) );
02440 }
02441
02442
02443
02444
02445 template <typename C, typename R, typename P1, typename P2, typename P3>
02446 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3) )
02447 {
02448 typedef R (*TFunction)(C&, P1, P2, P3);
02449 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02450 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02451 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02452
02453 if( decodeTuple<S1, S2, S3>( args, p1, p2, p3 ) != 0 )
02454 {
02455 return 0;
02456 }
02457 LASS_ASSERT(iObject);
02458 return Caller<R>::template function<TFunction, C&, P1, P2, P3>(
02459 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3) );
02460 }
02461
02462
02463
02464
02465 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4>
02466 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4) )
02467 {
02468 typedef R (*TFunction)(C&, P1, P2, P3, P4);
02469 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02470 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02471 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02472 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02473
02474 if( decodeTuple<S1, S2, S3, S4>( args, p1, p2, p3, p4 ) != 0 )
02475 {
02476 return 0;
02477 }
02478 LASS_ASSERT(iObject);
02479 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4>(
02480 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4) );
02481 }
02482
02483
02484
02485
02486 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5>
02487 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4, P5) )
02488 {
02489 typedef R (*TFunction)(C&, P1, P2, P3, P4, P5);
02490 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02491 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02492 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02493 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02494 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02495
02496 if( decodeTuple<S1, S2, S3, S4, S5>( args, p1, p2, p3, p4, p5 ) != 0 )
02497 {
02498 return 0;
02499 }
02500 LASS_ASSERT(iObject);
02501 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4, P5>(
02502 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5) );
02503 }
02504
02505
02506
02507
02508 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
02509 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4, P5, P6) )
02510 {
02511 typedef R (*TFunction)(C&, P1, P2, P3, P4, P5, P6);
02512 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02513 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02514 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02515 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02516 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02517 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02518
02519 if( decodeTuple<S1, S2, S3, S4, S5, S6>( args, p1, p2, p3, p4, p5, p6 ) != 0 )
02520 {
02521 return 0;
02522 }
02523 LASS_ASSERT(iObject);
02524 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4, P5, P6>(
02525 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6) );
02526 }
02527
02528
02529
02530
02531 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
02532 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4, P5, P6, P7) )
02533 {
02534 typedef R (*TFunction)(C&, P1, P2, P3, P4, P5, P6, P7);
02535 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02536 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02537 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02538 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02539 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02540 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02541 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02542
02543 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7>( args, p1, p2, p3, p4, p5, p6, p7 ) != 0 )
02544 {
02545 return 0;
02546 }
02547 LASS_ASSERT(iObject);
02548 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4, P5, P6, P7>(
02549 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7) );
02550 }
02551
02552
02553
02554
02555 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
02556 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4, P5, P6, P7, P8) )
02557 {
02558 typedef R (*TFunction)(C&, P1, P2, P3, P4, P5, P6, P7, P8);
02559 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02560 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02561 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02562 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02563 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02564 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02565 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02566 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02567
02568 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8>( args, p1, p2, p3, p4, p5, p6, p7, p8 ) != 0 )
02569 {
02570 return 0;
02571 }
02572 LASS_ASSERT(iObject);
02573 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4, P5, P6, P7, P8>(
02574 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8) );
02575 }
02576
02577
02578
02579
02580 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
02581 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9) )
02582 {
02583 typedef R (*TFunction)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9);
02584 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02585 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02586 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02587 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02588 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02589 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02590 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02591 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02592 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02593
02594 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9 ) != 0 )
02595 {
02596 return 0;
02597 }
02598 LASS_ASSERT(iObject);
02599 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4, P5, P6, P7, P8, P9>(
02600 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9) );
02601 }
02602
02603
02604
02605
02606 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
02607 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) )
02608 {
02609 typedef R (*TFunction)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10);
02610 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02611 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02612 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02613 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02614 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02615 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02616 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02617 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02618 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02619 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02620
02621 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ) != 0 )
02622 {
02623 return 0;
02624 }
02625 LASS_ASSERT(iObject);
02626 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>(
02627 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10) );
02628 }
02629
02630
02631
02632
02633 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
02634 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) )
02635 {
02636 typedef R (*TFunction)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11);
02637 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02638 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02639 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02640 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02641 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02642 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02643 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02644 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02645 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02646 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02647 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
02648
02649 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ) != 0 )
02650 {
02651 return 0;
02652 }
02653 LASS_ASSERT(iObject);
02654 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>(
02655 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11) );
02656 }
02657
02658
02659
02660
02661 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
02662 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) )
02663 {
02664 typedef R (*TFunction)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12);
02665 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02666 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02667 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02668 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02669 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02670 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02671 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02672 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02673 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02674 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02675 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
02676 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
02677
02678 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ) != 0 )
02679 {
02680 return 0;
02681 }
02682 LASS_ASSERT(iObject);
02683 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>(
02684 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12) );
02685 }
02686
02687
02688
02689
02690 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
02691 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) )
02692 {
02693 typedef R (*TFunction)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13);
02694 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02695 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02696 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02697 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02698 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02699 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02700 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02701 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02702 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02703 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02704 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
02705 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
02706 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
02707
02708 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ) != 0 )
02709 {
02710 return 0;
02711 }
02712 LASS_ASSERT(iObject);
02713 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>(
02714 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13) );
02715 }
02716
02717
02718
02719
02720 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
02721 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) )
02722 {
02723 typedef R (*TFunction)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14);
02724 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02725 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02726 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02727 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02728 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02729 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02730 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02731 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02732 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02733 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02734 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
02735 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
02736 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
02737 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
02738
02739 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ) != 0 )
02740 {
02741 return 0;
02742 }
02743 LASS_ASSERT(iObject);
02744 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14>(
02745 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14) );
02746 }
02747
02748
02749
02750
02751 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
02752 static PyObject* callFree( PyObject* args, CppClass* iObject, R (*iFreeMethod)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) )
02753 {
02754 typedef R (*TFunction)(C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15);
02755 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02756 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02757 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02758 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02759 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02760 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02761 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02762 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02763 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02764 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
02765 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
02766 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
02767 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
02768 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
02769 typedef ArgumentTraits<P15> TArg15; typedef typename TArg15::TStorage S15; S15 p15;
02770
02771 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) != 0 )
02772 {
02773 return 0;
02774 }
02775 LASS_ASSERT(iObject);
02776 return Caller<R>::template function<TFunction, C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(
02777 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14), TArg15::arg(p15) );
02778 }
02779
02780
02781
02782
02783
02784
02785 template <typename C, typename R>
02786 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*) )
02787 {
02788 typedef R (*TFunction)(const C*);
02789 if( decodeTuple(args) != 0 )
02790 {
02791 return 0;
02792 }
02793 return Caller<R>::template function<TFunction, const C* >(
02794 iFreeMethod, iObject );
02795 }
02796
02797
02798
02799
02800 template <typename C, typename R, typename P1>
02801 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1) )
02802 {
02803 typedef R (*TFunction)(const C*, P1);
02804 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02805
02806 if( decodeTuple<S1>( args, p1 ) != 0 )
02807 {
02808 return 0;
02809 }
02810 return Caller<R>::template function<TFunction, const C*, P1>(
02811 iFreeMethod, iObject, TArg1::arg(p1) );
02812 }
02813
02814
02815
02816
02817 template <typename C, typename R, typename P1, typename P2>
02818 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2) )
02819 {
02820 typedef R (*TFunction)(const C*, P1, P2);
02821 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02822 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02823
02824 if( decodeTuple<S1, S2>( args, p1, p2 ) != 0 )
02825 {
02826 return 0;
02827 }
02828 return Caller<R>::template function<TFunction, const C*, P1, P2>(
02829 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2) );
02830 }
02831
02832
02833
02834
02835 template <typename C, typename R, typename P1, typename P2, typename P3>
02836 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3) )
02837 {
02838 typedef R (*TFunction)(const C*, P1, P2, P3);
02839 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02840 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02841 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02842
02843 if( decodeTuple<S1, S2, S3>( args, p1, p2, p3 ) != 0 )
02844 {
02845 return 0;
02846 }
02847 return Caller<R>::template function<TFunction, const C*, P1, P2, P3>(
02848 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3) );
02849 }
02850
02851
02852
02853
02854 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4>
02855 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4) )
02856 {
02857 typedef R (*TFunction)(const C*, P1, P2, P3, P4);
02858 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02859 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02860 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02861 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02862
02863 if( decodeTuple<S1, S2, S3, S4>( args, p1, p2, p3, p4 ) != 0 )
02864 {
02865 return 0;
02866 }
02867 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4>(
02868 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4) );
02869 }
02870
02871
02872
02873
02874 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5>
02875 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4, P5) )
02876 {
02877 typedef R (*TFunction)(const C*, P1, P2, P3, P4, P5);
02878 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02879 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02880 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02881 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02882 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02883
02884 if( decodeTuple<S1, S2, S3, S4, S5>( args, p1, p2, p3, p4, p5 ) != 0 )
02885 {
02886 return 0;
02887 }
02888 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4, P5>(
02889 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5) );
02890 }
02891
02892
02893
02894
02895 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
02896 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4, P5, P6) )
02897 {
02898 typedef R (*TFunction)(const C*, P1, P2, P3, P4, P5, P6);
02899 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02900 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02901 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02902 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02903 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02904 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02905
02906 if( decodeTuple<S1, S2, S3, S4, S5, S6>( args, p1, p2, p3, p4, p5, p6 ) != 0 )
02907 {
02908 return 0;
02909 }
02910 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4, P5, P6>(
02911 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6) );
02912 }
02913
02914
02915
02916
02917 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
02918 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4, P5, P6, P7) )
02919 {
02920 typedef R (*TFunction)(const C*, P1, P2, P3, P4, P5, P6, P7);
02921 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02922 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02923 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02924 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02925 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02926 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02927 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02928
02929 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7>( args, p1, p2, p3, p4, p5, p6, p7 ) != 0 )
02930 {
02931 return 0;
02932 }
02933 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4, P5, P6, P7>(
02934 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7) );
02935 }
02936
02937
02938
02939
02940 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
02941 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4, P5, P6, P7, P8) )
02942 {
02943 typedef R (*TFunction)(const C*, P1, P2, P3, P4, P5, P6, P7, P8);
02944 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02945 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02946 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02947 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02948 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02949 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02950 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02951 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02952
02953 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8>( args, p1, p2, p3, p4, p5, p6, p7, p8 ) != 0 )
02954 {
02955 return 0;
02956 }
02957 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4, P5, P6, P7, P8>(
02958 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8) );
02959 }
02960
02961
02962
02963
02964 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
02965 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9) )
02966 {
02967 typedef R (*TFunction)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9);
02968 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02969 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02970 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02971 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02972 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02973 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02974 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
02975 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
02976 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
02977
02978 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9 ) != 0 )
02979 {
02980 return 0;
02981 }
02982 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9>(
02983 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9) );
02984 }
02985
02986
02987
02988
02989 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
02990 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) )
02991 {
02992 typedef R (*TFunction)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10);
02993 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
02994 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
02995 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
02996 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
02997 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
02998 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
02999 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03000 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03001 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03002 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03003
03004 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ) != 0 )
03005 {
03006 return 0;
03007 }
03008 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>(
03009 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10) );
03010 }
03011
03012
03013
03014
03015 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
03016 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) )
03017 {
03018 typedef R (*TFunction)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11);
03019 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03020 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03021 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03022 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03023 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03024 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03025 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03026 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03027 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03028 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03029 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
03030
03031 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ) != 0 )
03032 {
03033 return 0;
03034 }
03035 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>(
03036 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11) );
03037 }
03038
03039
03040
03041
03042 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
03043 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) )
03044 {
03045 typedef R (*TFunction)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12);
03046 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03047 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03048 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03049 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03050 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03051 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03052 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03053 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03054 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03055 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03056 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
03057 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
03058
03059 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ) != 0 )
03060 {
03061 return 0;
03062 }
03063 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>(
03064 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12) );
03065 }
03066
03067
03068
03069
03070 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
03071 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) )
03072 {
03073 typedef R (*TFunction)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13);
03074 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03075 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03076 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03077 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03078 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03079 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03080 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03081 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03082 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03083 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03084 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
03085 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
03086 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
03087
03088 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ) != 0 )
03089 {
03090 return 0;
03091 }
03092 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>(
03093 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13) );
03094 }
03095
03096
03097
03098
03099 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
03100 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) )
03101 {
03102 typedef R (*TFunction)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14);
03103 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03104 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03105 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03106 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03107 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03108 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03109 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03110 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03111 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03112 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03113 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
03114 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
03115 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
03116 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
03117
03118 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ) != 0 )
03119 {
03120 return 0;
03121 }
03122 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14>(
03123 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14) );
03124 }
03125
03126
03127
03128
03129 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
03130 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) )
03131 {
03132 typedef R (*TFunction)(const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15);
03133 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03134 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03135 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03136 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03137 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03138 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03139 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03140 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03141 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03142 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03143 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
03144 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
03145 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
03146 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
03147 typedef ArgumentTraits<P15> TArg15; typedef typename TArg15::TStorage S15; S15 p15;
03148
03149 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) != 0 )
03150 {
03151 return 0;
03152 }
03153 return Caller<R>::template function<TFunction, const C*, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(
03154 iFreeMethod, iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14), TArg15::arg(p15) );
03155 }
03156
03157
03158
03159
03160
03161
03162 template <typename C, typename R>
03163 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&) )
03164 {
03165 typedef R (*TFunction)(const C&);
03166 if( decodeTuple(args) != 0 )
03167 {
03168 return 0;
03169 }
03170 LASS_ASSERT(iObject);
03171 return Caller<R>::template function<TFunction, const C& >(
03172 iFreeMethod, *iObject );
03173 }
03174
03175
03176
03177
03178 template <typename C, typename R, typename P1>
03179 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1) )
03180 {
03181 typedef R (*TFunction)(const C&, P1);
03182 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03183
03184 if( decodeTuple<S1>( args, p1 ) != 0 )
03185 {
03186 return 0;
03187 }
03188 LASS_ASSERT(iObject);
03189 return Caller<R>::template function<TFunction, const C&, P1>(
03190 iFreeMethod, *iObject, TArg1::arg(p1) );
03191 }
03192
03193
03194
03195
03196 template <typename C, typename R, typename P1, typename P2>
03197 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2) )
03198 {
03199 typedef R (*TFunction)(const C&, P1, P2);
03200 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03201 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03202
03203 if( decodeTuple<S1, S2>( args, p1, p2 ) != 0 )
03204 {
03205 return 0;
03206 }
03207 LASS_ASSERT(iObject);
03208 return Caller<R>::template function<TFunction, const C&, P1, P2>(
03209 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2) );
03210 }
03211
03212
03213
03214
03215 template <typename C, typename R, typename P1, typename P2, typename P3>
03216 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3) )
03217 {
03218 typedef R (*TFunction)(const C&, P1, P2, P3);
03219 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03220 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03221 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03222
03223 if( decodeTuple<S1, S2, S3>( args, p1, p2, p3 ) != 0 )
03224 {
03225 return 0;
03226 }
03227 LASS_ASSERT(iObject);
03228 return Caller<R>::template function<TFunction, const C&, P1, P2, P3>(
03229 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3) );
03230 }
03231
03232
03233
03234
03235 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4>
03236 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4) )
03237 {
03238 typedef R (*TFunction)(const C&, P1, P2, P3, P4);
03239 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03240 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03241 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03242 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03243
03244 if( decodeTuple<S1, S2, S3, S4>( args, p1, p2, p3, p4 ) != 0 )
03245 {
03246 return 0;
03247 }
03248 LASS_ASSERT(iObject);
03249 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4>(
03250 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4) );
03251 }
03252
03253
03254
03255
03256 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5>
03257 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4, P5) )
03258 {
03259 typedef R (*TFunction)(const C&, P1, P2, P3, P4, P5);
03260 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03261 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03262 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03263 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03264 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03265
03266 if( decodeTuple<S1, S2, S3, S4, S5>( args, p1, p2, p3, p4, p5 ) != 0 )
03267 {
03268 return 0;
03269 }
03270 LASS_ASSERT(iObject);
03271 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4, P5>(
03272 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5) );
03273 }
03274
03275
03276
03277
03278 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
03279 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4, P5, P6) )
03280 {
03281 typedef R (*TFunction)(const C&, P1, P2, P3, P4, P5, P6);
03282 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03283 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03284 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03285 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03286 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03287 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03288
03289 if( decodeTuple<S1, S2, S3, S4, S5, S6>( args, p1, p2, p3, p4, p5, p6 ) != 0 )
03290 {
03291 return 0;
03292 }
03293 LASS_ASSERT(iObject);
03294 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4, P5, P6>(
03295 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6) );
03296 }
03297
03298
03299
03300
03301 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
03302 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4, P5, P6, P7) )
03303 {
03304 typedef R (*TFunction)(const C&, P1, P2, P3, P4, P5, P6, P7);
03305 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03306 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03307 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03308 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03309 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03310 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03311 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03312
03313 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7>( args, p1, p2, p3, p4, p5, p6, p7 ) != 0 )
03314 {
03315 return 0;
03316 }
03317 LASS_ASSERT(iObject);
03318 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4, P5, P6, P7>(
03319 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7) );
03320 }
03321
03322
03323
03324
03325 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
03326 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4, P5, P6, P7, P8) )
03327 {
03328 typedef R (*TFunction)(const C&, P1, P2, P3, P4, P5, P6, P7, P8);
03329 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03330 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03331 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03332 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03333 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03334 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03335 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03336 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03337
03338 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8>( args, p1, p2, p3, p4, p5, p6, p7, p8 ) != 0 )
03339 {
03340 return 0;
03341 }
03342 LASS_ASSERT(iObject);
03343 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4, P5, P6, P7, P8>(
03344 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8) );
03345 }
03346
03347
03348
03349
03350 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
03351 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9) )
03352 {
03353 typedef R (*TFunction)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9);
03354 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03355 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03356 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03357 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03358 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03359 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03360 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03361 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03362 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03363
03364 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9 ) != 0 )
03365 {
03366 return 0;
03367 }
03368 LASS_ASSERT(iObject);
03369 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9>(
03370 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9) );
03371 }
03372
03373
03374
03375
03376 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
03377 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) )
03378 {
03379 typedef R (*TFunction)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10);
03380 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03381 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03382 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03383 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03384 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03385 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03386 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03387 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03388 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03389 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03390
03391 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ) != 0 )
03392 {
03393 return 0;
03394 }
03395 LASS_ASSERT(iObject);
03396 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>(
03397 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10) );
03398 }
03399
03400
03401
03402
03403 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
03404 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) )
03405 {
03406 typedef R (*TFunction)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11);
03407 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03408 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03409 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03410 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03411 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03412 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03413 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03414 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03415 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03416 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03417 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
03418
03419 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ) != 0 )
03420 {
03421 return 0;
03422 }
03423 LASS_ASSERT(iObject);
03424 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>(
03425 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11) );
03426 }
03427
03428
03429
03430
03431 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
03432 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) )
03433 {
03434 typedef R (*TFunction)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12);
03435 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03436 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03437 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03438 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03439 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03440 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03441 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03442 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03443 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03444 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03445 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
03446 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
03447
03448 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ) != 0 )
03449 {
03450 return 0;
03451 }
03452 LASS_ASSERT(iObject);
03453 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>(
03454 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12) );
03455 }
03456
03457
03458
03459
03460 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
03461 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) )
03462 {
03463 typedef R (*TFunction)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13);
03464 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03465 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03466 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03467 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03468 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03469 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03470 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03471 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03472 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03473 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03474 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
03475 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
03476 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
03477
03478 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ) != 0 )
03479 {
03480 return 0;
03481 }
03482 LASS_ASSERT(iObject);
03483 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>(
03484 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13) );
03485 }
03486
03487
03488
03489
03490 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
03491 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) )
03492 {
03493 typedef R (*TFunction)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14);
03494 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03495 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03496 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03497 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03498 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03499 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03500 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03501 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03502 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03503 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03504 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
03505 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
03506 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
03507 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
03508
03509 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ) != 0 )
03510 {
03511 return 0;
03512 }
03513 LASS_ASSERT(iObject);
03514 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14>(
03515 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14) );
03516 }
03517
03518
03519
03520
03521 template <typename C, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
03522 static PyObject* callFree( PyObject* args, const CppClass* iObject, R (*iFreeMethod)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) )
03523 {
03524 typedef R (*TFunction)(const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15);
03525 typedef ArgumentTraits<P1> TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03526 typedef ArgumentTraits<P2> TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03527 typedef ArgumentTraits<P3> TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03528 typedef ArgumentTraits<P4> TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03529 typedef ArgumentTraits<P5> TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03530 typedef ArgumentTraits<P6> TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03531 typedef ArgumentTraits<P7> TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03532 typedef ArgumentTraits<P8> TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03533 typedef ArgumentTraits<P9> TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03534 typedef ArgumentTraits<P10> TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03535 typedef ArgumentTraits<P11> TArg11; typedef typename TArg11::TStorage S11; S11 p11;
03536 typedef ArgumentTraits<P12> TArg12; typedef typename TArg12::TStorage S12; S12 p12;
03537 typedef ArgumentTraits<P13> TArg13; typedef typename TArg13::TStorage S13; S13 p13;
03538 typedef ArgumentTraits<P14> TArg14; typedef typename TArg14::TStorage S14; S14 p14;
03539 typedef ArgumentTraits<P15> TArg15; typedef typename TArg15::TStorage S15; S15 p15;
03540
03541 if( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) != 0 )
03542 {
03543 return 0;
03544 }
03545 LASS_ASSERT(iObject);
03546 return Caller<R>::template function<TFunction, const C&, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>(
03547 iFreeMethod, *iObject, TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14), TArg15::arg(p15) );
03548 }
03549
03550
03551
03552
03553
03554
03555 template <typename C, typename R>
03556 static PyObject* get( const CppClass* iObject, R (C::*iMethod)() const)
03557 {
03558 try
03559 {
03560 return pyBuildSimpleObject((iObject->*iMethod)());
03561 }
03562 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03563 }
03564
03565
03566
03567 template <typename C, typename R>
03568 static PyObject* get( CppClass* iObject, R (C::*iMethod)() )
03569 {
03570 try
03571 {
03572 return pyBuildSimpleObject((iObject->*iMethod)());
03573 }
03574 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03575 }
03576
03577
03578
03579
03580 template <typename P>
03581 static int set( PyObject* args, CppClass* iObject, void (CppClass::*iMethod)(P) )
03582 {
03583 typedef ArgumentTraits<P> TArg;
03584 typename TArg::TStorage p;
03585
03586 if( pyGetSimpleObject( args, p ) != 0 )
03587 {
03588 return -1;
03589 }
03590
03591 try
03592 {
03593 (iObject->*iMethod)(TArg::arg(p));
03594 }
03595 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN_EX(-1)
03596 return 0;
03597 }
03598
03599
03600
03601 template <typename P>
03602 static int set( PyObject* args, CppClass* iObject, P& (CppClass::*iMethod)() )
03603 {
03604 typedef ArgumentTraits<P> TArg;
03605 typename TArg::TStorage p;
03606
03607 if( pyGetSimpleObject( args, p ) != 0 )
03608 {
03609 return -1;
03610 }
03611
03612 try
03613 {
03614 (iObject->*iMethod)() = TArg::arg(p);
03615 }
03616 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN_EX(-1)
03617 return 0;
03618 }
03619 };
03620
03621
03622
03623
03624
03625
03626
03627 template <class PyObjectClass>
03628 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03629 {
03630 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03631 typedef typename TPyShadowTraits::TCppClass TCppClass;
03632
03633 if( decodeTuple(args) != 0 )
03634 {
03635 return 0;
03636 }
03637
03638 try
03639 {
03640 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass );
03641
03642
03643 impl::fixObjectType(result);
03644 result->ob_type = iSubtype;
03645
03646
03647
03648
03649
03650
03651
03652
03653
03654 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
03655 Py_INCREF(result->ob_type);
03656 return result;
03657 }
03658 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03659 }
03660
03661
03662
03663 template <class PyObjectClass, typename P1>
03664 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03665 {
03666 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03667 typedef typename TPyShadowTraits::TCppClass TCppClass;
03668 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03669
03670
03671 if ( decodeTuple<S1>( args, p1 ) != 0 )
03672 {
03673 return 0;
03674 }
03675
03676 try
03677 {
03678 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1) ) );
03679 impl::fixObjectType(result);
03680 result->ob_type = iSubtype;
03681 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
03682 Py_INCREF(result->ob_type);
03683 return result;
03684 }
03685 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03686 }
03687
03688
03689
03690 template <class PyObjectClass, typename P1, typename P2>
03691 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03692 {
03693 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03694 typedef typename TPyShadowTraits::TCppClass TCppClass;
03695 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03696 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03697
03698
03699 if ( decodeTuple<S1, S2>( args, p1, p2 ) != 0 )
03700 {
03701 return 0;
03702 }
03703
03704 try
03705 {
03706 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2) ) );
03707 impl::fixObjectType(result);
03708 result->ob_type = iSubtype;
03709 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
03710 Py_INCREF(result->ob_type);
03711 return result;
03712 }
03713 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03714 }
03715
03716
03717
03718 template <class PyObjectClass, typename P1, typename P2, typename P3>
03719 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03720 {
03721 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03722 typedef typename TPyShadowTraits::TCppClass TCppClass;
03723 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03724 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03725 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03726
03727
03728 if ( decodeTuple<S1, S2, S3>( args, p1, p2, p3 ) != 0 )
03729 {
03730 return 0;
03731 }
03732
03733 try
03734 {
03735 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3) ) );
03736 impl::fixObjectType(result);
03737 result->ob_type = iSubtype;
03738 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
03739 Py_INCREF(result->ob_type);
03740 return result;
03741 }
03742 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03743 }
03744
03745
03746
03747 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4>
03748 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03749 {
03750 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03751 typedef typename TPyShadowTraits::TCppClass TCppClass;
03752 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03753 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03754 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03755 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03756
03757
03758 if ( decodeTuple<S1, S2, S3, S4>( args, p1, p2, p3, p4 ) != 0 )
03759 {
03760 return 0;
03761 }
03762
03763 try
03764 {
03765 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4) ) );
03766 impl::fixObjectType(result);
03767 result->ob_type = iSubtype;
03768 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
03769 Py_INCREF(result->ob_type);
03770 return result;
03771 }
03772 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03773 }
03774
03775
03776
03777 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4, typename P5>
03778 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03779 {
03780 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03781 typedef typename TPyShadowTraits::TCppClass TCppClass;
03782 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03783 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03784 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03785 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03786 typedef ArgumentTraits< P5 > TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03787
03788
03789 if ( decodeTuple<S1, S2, S3, S4, S5>( args, p1, p2, p3, p4, p5 ) != 0 )
03790 {
03791 return 0;
03792 }
03793
03794 try
03795 {
03796 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5) ) );
03797 impl::fixObjectType(result);
03798 result->ob_type = iSubtype;
03799 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
03800 Py_INCREF(result->ob_type);
03801 return result;
03802 }
03803 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03804 }
03805
03806
03807
03808 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
03809 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03810 {
03811 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03812 typedef typename TPyShadowTraits::TCppClass TCppClass;
03813 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03814 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03815 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03816 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03817 typedef ArgumentTraits< P5 > TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03818 typedef ArgumentTraits< P6 > TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03819
03820
03821 if ( decodeTuple<S1, S2, S3, S4, S5, S6>( args, p1, p2, p3, p4, p5, p6 ) != 0 )
03822 {
03823 return 0;
03824 }
03825
03826 try
03827 {
03828 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6) ) );
03829 impl::fixObjectType(result);
03830 result->ob_type = iSubtype;
03831 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
03832 Py_INCREF(result->ob_type);
03833 return result;
03834 }
03835 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03836 }
03837
03838
03839
03840 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
03841 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03842 {
03843 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03844 typedef typename TPyShadowTraits::TCppClass TCppClass;
03845 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03846 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03847 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03848 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03849 typedef ArgumentTraits< P5 > TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03850 typedef ArgumentTraits< P6 > TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03851 typedef ArgumentTraits< P7 > TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03852
03853
03854 if ( decodeTuple<S1, S2, S3, S4, S5, S6, S7>( args, p1, p2, p3, p4, p5, p6, p7 ) != 0 )
03855 {
03856 return 0;
03857 }
03858
03859 try
03860 {
03861 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7) ) );
03862 impl::fixObjectType(result);
03863 result->ob_type = iSubtype;
03864 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
03865 Py_INCREF(result->ob_type);
03866 return result;
03867 }
03868 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03869 }
03870
03871
03872
03873 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
03874 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03875 {
03876 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03877 typedef typename TPyShadowTraits::TCppClass TCppClass;
03878 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03879 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03880 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03881 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03882 typedef ArgumentTraits< P5 > TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03883 typedef ArgumentTraits< P6 > TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03884 typedef ArgumentTraits< P7 > TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03885 typedef ArgumentTraits< P8 > TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03886
03887
03888 if ( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8>( args, p1, p2, p3, p4, p5, p6, p7, p8 ) != 0 )
03889 {
03890 return 0;
03891 }
03892
03893 try
03894 {
03895 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8) ) );
03896 impl::fixObjectType(result);
03897 result->ob_type = iSubtype;
03898 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
03899 Py_INCREF(result->ob_type);
03900 return result;
03901 }
03902 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03903 }
03904
03905
03906
03907 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
03908 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03909 {
03910 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03911 typedef typename TPyShadowTraits::TCppClass TCppClass;
03912 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03913 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03914 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03915 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03916 typedef ArgumentTraits< P5 > TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03917 typedef ArgumentTraits< P6 > TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03918 typedef ArgumentTraits< P7 > TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03919 typedef ArgumentTraits< P8 > TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03920 typedef ArgumentTraits< P9 > TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03921
03922
03923 if ( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9 ) != 0 )
03924 {
03925 return 0;
03926 }
03927
03928 try
03929 {
03930 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9) ) );
03931 impl::fixObjectType(result);
03932 result->ob_type = iSubtype;
03933 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
03934 Py_INCREF(result->ob_type);
03935 return result;
03936 }
03937 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03938 }
03939
03940
03941
03942 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
03943 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03944 {
03945 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03946 typedef typename TPyShadowTraits::TCppClass TCppClass;
03947 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03948 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03949 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03950 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03951 typedef ArgumentTraits< P5 > TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03952 typedef ArgumentTraits< P6 > TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03953 typedef ArgumentTraits< P7 > TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03954 typedef ArgumentTraits< P8 > TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03955 typedef ArgumentTraits< P9 > TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03956 typedef ArgumentTraits< P10 > TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03957
03958
03959 if ( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ) != 0 )
03960 {
03961 return 0;
03962 }
03963
03964 try
03965 {
03966 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10) ) );
03967 impl::fixObjectType(result);
03968 result->ob_type = iSubtype;
03969 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
03970 Py_INCREF(result->ob_type);
03971 return result;
03972 }
03973 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
03974 }
03975
03976
03977
03978 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
03979 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
03980 {
03981 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
03982 typedef typename TPyShadowTraits::TCppClass TCppClass;
03983 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
03984 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
03985 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
03986 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
03987 typedef ArgumentTraits< P5 > TArg5; typedef typename TArg5::TStorage S5; S5 p5;
03988 typedef ArgumentTraits< P6 > TArg6; typedef typename TArg6::TStorage S6; S6 p6;
03989 typedef ArgumentTraits< P7 > TArg7; typedef typename TArg7::TStorage S7; S7 p7;
03990 typedef ArgumentTraits< P8 > TArg8; typedef typename TArg8::TStorage S8; S8 p8;
03991 typedef ArgumentTraits< P9 > TArg9; typedef typename TArg9::TStorage S9; S9 p9;
03992 typedef ArgumentTraits< P10 > TArg10; typedef typename TArg10::TStorage S10; S10 p10;
03993 typedef ArgumentTraits< P11 > TArg11; typedef typename TArg11::TStorage S11; S11 p11;
03994
03995
03996 if ( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ) != 0 )
03997 {
03998 return 0;
03999 }
04000
04001 try
04002 {
04003 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11) ) );
04004 impl::fixObjectType(result);
04005 result->ob_type = iSubtype;
04006 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
04007 Py_INCREF(result->ob_type);
04008 return result;
04009 }
04010 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
04011 }
04012
04013
04014
04015 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
04016 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
04017 {
04018 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
04019 typedef typename TPyShadowTraits::TCppClass TCppClass;
04020 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
04021 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
04022 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
04023 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
04024 typedef ArgumentTraits< P5 > TArg5; typedef typename TArg5::TStorage S5; S5 p5;
04025 typedef ArgumentTraits< P6 > TArg6; typedef typename TArg6::TStorage S6; S6 p6;
04026 typedef ArgumentTraits< P7 > TArg7; typedef typename TArg7::TStorage S7; S7 p7;
04027 typedef ArgumentTraits< P8 > TArg8; typedef typename TArg8::TStorage S8; S8 p8;
04028 typedef ArgumentTraits< P9 > TArg9; typedef typename TArg9::TStorage S9; S9 p9;
04029 typedef ArgumentTraits< P10 > TArg10; typedef typename TArg10::TStorage S10; S10 p10;
04030 typedef ArgumentTraits< P11 > TArg11; typedef typename TArg11::TStorage S11; S11 p11;
04031 typedef ArgumentTraits< P12 > TArg12; typedef typename TArg12::TStorage S12; S12 p12;
04032
04033
04034 if ( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ) != 0 )
04035 {
04036 return 0;
04037 }
04038
04039 try
04040 {
04041 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12) ) );
04042 impl::fixObjectType(result);
04043 result->ob_type = iSubtype;
04044 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
04045 Py_INCREF(result->ob_type);
04046 return result;
04047 }
04048 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
04049 }
04050
04051
04052
04053 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
04054 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
04055 {
04056 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
04057 typedef typename TPyShadowTraits::TCppClass TCppClass;
04058 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
04059 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
04060 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
04061 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
04062 typedef ArgumentTraits< P5 > TArg5; typedef typename TArg5::TStorage S5; S5 p5;
04063 typedef ArgumentTraits< P6 > TArg6; typedef typename TArg6::TStorage S6; S6 p6;
04064 typedef ArgumentTraits< P7 > TArg7; typedef typename TArg7::TStorage S7; S7 p7;
04065 typedef ArgumentTraits< P8 > TArg8; typedef typename TArg8::TStorage S8; S8 p8;
04066 typedef ArgumentTraits< P9 > TArg9; typedef typename TArg9::TStorage S9; S9 p9;
04067 typedef ArgumentTraits< P10 > TArg10; typedef typename TArg10::TStorage S10; S10 p10;
04068 typedef ArgumentTraits< P11 > TArg11; typedef typename TArg11::TStorage S11; S11 p11;
04069 typedef ArgumentTraits< P12 > TArg12; typedef typename TArg12::TStorage S12; S12 p12;
04070 typedef ArgumentTraits< P13 > TArg13; typedef typename TArg13::TStorage S13; S13 p13;
04071
04072
04073 if ( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ) != 0 )
04074 {
04075 return 0;
04076 }
04077
04078 try
04079 {
04080 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13) ) );
04081 impl::fixObjectType(result);
04082 result->ob_type = iSubtype;
04083 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
04084 Py_INCREF(result->ob_type);
04085 return result;
04086 }
04087 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
04088 }
04089
04090
04091
04092 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
04093 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
04094 {
04095 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
04096 typedef typename TPyShadowTraits::TCppClass TCppClass;
04097 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
04098 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
04099 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
04100 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
04101 typedef ArgumentTraits< P5 > TArg5; typedef typename TArg5::TStorage S5; S5 p5;
04102 typedef ArgumentTraits< P6 > TArg6; typedef typename TArg6::TStorage S6; S6 p6;
04103 typedef ArgumentTraits< P7 > TArg7; typedef typename TArg7::TStorage S7; S7 p7;
04104 typedef ArgumentTraits< P8 > TArg8; typedef typename TArg8::TStorage S8; S8 p8;
04105 typedef ArgumentTraits< P9 > TArg9; typedef typename TArg9::TStorage S9; S9 p9;
04106 typedef ArgumentTraits< P10 > TArg10; typedef typename TArg10::TStorage S10; S10 p10;
04107 typedef ArgumentTraits< P11 > TArg11; typedef typename TArg11::TStorage S11; S11 p11;
04108 typedef ArgumentTraits< P12 > TArg12; typedef typename TArg12::TStorage S12; S12 p12;
04109 typedef ArgumentTraits< P13 > TArg13; typedef typename TArg13::TStorage S13; S13 p13;
04110 typedef ArgumentTraits< P14 > TArg14; typedef typename TArg14::TStorage S14; S14 p14;
04111
04112
04113 if ( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ) != 0 )
04114 {
04115 return 0;
04116 }
04117
04118 try
04119 {
04120 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14) ) );
04121 impl::fixObjectType(result);
04122 result->ob_type = iSubtype;
04123 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
04124 Py_INCREF(result->ob_type);
04125 return result;
04126 }
04127 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
04128 }
04129
04130
04131
04132 template <class PyObjectClass, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
04133 PyObject* construct( PyTypeObject* iSubtype, PyObject* args )
04134 {
04135 typedef ShadowTraits< PyObjectClass > TPyShadowTraits;
04136 typedef typename TPyShadowTraits::TCppClass TCppClass;
04137 typedef ArgumentTraits< P1 > TArg1; typedef typename TArg1::TStorage S1; S1 p1;
04138 typedef ArgumentTraits< P2 > TArg2; typedef typename TArg2::TStorage S2; S2 p2;
04139 typedef ArgumentTraits< P3 > TArg3; typedef typename TArg3::TStorage S3; S3 p3;
04140 typedef ArgumentTraits< P4 > TArg4; typedef typename TArg4::TStorage S4; S4 p4;
04141 typedef ArgumentTraits< P5 > TArg5; typedef typename TArg5::TStorage S5; S5 p5;
04142 typedef ArgumentTraits< P6 > TArg6; typedef typename TArg6::TStorage S6; S6 p6;
04143 typedef ArgumentTraits< P7 > TArg7; typedef typename TArg7::TStorage S7; S7 p7;
04144 typedef ArgumentTraits< P8 > TArg8; typedef typename TArg8::TStorage S8; S8 p8;
04145 typedef ArgumentTraits< P9 > TArg9; typedef typename TArg9::TStorage S9; S9 p9;
04146 typedef ArgumentTraits< P10 > TArg10; typedef typename TArg10::TStorage S10; S10 p10;
04147 typedef ArgumentTraits< P11 > TArg11; typedef typename TArg11::TStorage S11; S11 p11;
04148 typedef ArgumentTraits< P12 > TArg12; typedef typename TArg12::TStorage S12; S12 p12;
04149 typedef ArgumentTraits< P13 > TArg13; typedef typename TArg13::TStorage S13; S13 p13;
04150 typedef ArgumentTraits< P14 > TArg14; typedef typename TArg14::TStorage S14; S14 p14;
04151 typedef ArgumentTraits< P15 > TArg15; typedef typename TArg15::TStorage S15; S15 p15;
04152
04153
04154 if ( decodeTuple<S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15>( args, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) != 0 )
04155 {
04156 return 0;
04157 }
04158
04159 try
04160 {
04161 PyObjectClass* result = TPyShadowTraits::pyObject( new TCppClass( TArg1::arg(p1), TArg2::arg(p2), TArg3::arg(p3), TArg4::arg(p4), TArg5::arg(p5), TArg6::arg(p6), TArg7::arg(p7), TArg8::arg(p8), TArg9::arg(p9), TArg10::arg(p10), TArg11::arg(p11), TArg12::arg(p12), TArg13::arg(p13), TArg14::arg(p14), TArg15::arg(p15) ) );
04162 impl::fixObjectType(result);
04163 result->ob_type = iSubtype;
04164 result->ob_type->tp_flags &= (~Py_TPFLAGS_HAVE_GC);
04165 Py_INCREF(result->ob_type);
04166 return result;
04167 }
04168 LASS_UTIL_PYOBJECT_CALL_CATCH_AND_RETURN
04169 }
04170
04171
04172
04173
04174
04175
04176
04177
04178
04179 template <class CppClass, typename R, typename TypeListType> struct ExplicitResolver;
04180 template <class CppClass, typename R, typename P1, typename TypeListType> struct ExplicitResolver1;
04181 template <class CppClass, typename R, typename P1, typename P2, typename TypeListType> struct ExplicitResolver2;
04182 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename TypeListType> struct ExplicitResolver3;
04183 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename TypeListType> struct ExplicitResolver4;
04184 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename TypeListType> struct ExplicitResolver5;
04185 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename TypeListType> struct ExplicitResolver6;
04186 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename TypeListType> struct ExplicitResolver7;
04187 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename TypeListType> struct ExplicitResolver8;
04188 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename TypeListType> struct ExplicitResolver9;
04189 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename TypeListType> struct ExplicitResolver10;
04190 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename TypeListType> struct ExplicitResolver11;
04191 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename TypeListType> struct ExplicitResolver12;
04192 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename TypeListType> struct ExplicitResolver13;
04193 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename TypeListType> struct ExplicitResolver14;
04194 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15, typename TypeListType> struct ExplicitResolver15;
04195
04196 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15, typename P16, typename TypeListType> struct ExplicitResolver16;
04197
04198
04199 template <class CppClass, typename R>
04200 struct ExplicitResolver<CppClass, R, lass::meta::NullType>
04201 {
04202 struct Impl
04203 {
04204 static PyObject* callFunction( PyObject* args, R (*iFunction)() )
04205 {
04206 return ::lass::python::impl::callFunction<R>( args, iFunction );
04207 }
04208 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)() )
04209 {
04210 return CallMethod<CppClass>::call( args, iObject, iMethod );
04211 }
04212 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)() const )
04213 {
04214 return CallMethod<CppClass>::call( args, iObject, iMethod );
04215 }
04216 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04217 {
04218 return construct<CppClass>( iSubtype, args );
04219 }
04220 static bool isConstMember( R (CppClass::*)() ) { return false; }
04221 static bool isConstMember( R (CppClass::*)() const ) { return true; }
04222 };
04223 typedef Impl TImpl;
04224 };
04225
04226 template <class CppClass, typename R, typename P1>
04227 struct ExplicitResolver1<CppClass, R, P1, lass::meta::NullType>
04228 {
04229 struct Impl
04230 {
04231 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1) )
04232 {
04233 return ::lass::python::impl::callFunction<R, P1>( args, iFunction );
04234 }
04235 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1) )
04236 {
04237 return CallMethod<CppClass>::call( args, iObject, iMethod );
04238 }
04239 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1) const )
04240 {
04241 return CallMethod<CppClass>::call( args, iObject, iMethod );
04242 }
04243 static bool isConstMember( R (CppClass::*)(P1) ) { return false; }
04244 static bool isConstMember( R (CppClass::*)(P1) const ) { return true; }
04245 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1) )
04246 {
04247 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04248 }
04249 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04250 {
04251 return construct<CppClass, P1>( iSubtype, args );
04252 }
04253 };
04254 typedef Impl TImpl;
04255 };
04256
04257 template <class CppClass, typename R, typename P1, typename P2>
04258 struct ExplicitResolver2<CppClass, R, P1, P2, lass::meta::NullType>
04259 {
04260 struct Impl
04261 {
04262 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2) )
04263 {
04264 return ::lass::python::impl::callFunction<R, P1, P2>( args, iFunction );
04265 }
04266 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2) )
04267 {
04268 return CallMethod<CppClass>::call( args, iObject, iMethod );
04269 }
04270 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2) const )
04271 {
04272 return CallMethod<CppClass>::call( args, iObject, iMethod );
04273 }
04274 static bool isConstMember( R (CppClass::*)(P1, P2) ) { return false; }
04275 static bool isConstMember( R (CppClass::*)(P1, P2) const ) { return true; }
04276 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2) )
04277 {
04278 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04279 }
04280 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04281 {
04282 return construct<CppClass, P1, P2>( iSubtype, args );
04283 }
04284 };
04285 typedef Impl TImpl;
04286 };
04287
04288 template <class CppClass, typename R, typename P1, typename P2, typename P3>
04289 struct ExplicitResolver3<CppClass, R, P1, P2, P3, lass::meta::NullType>
04290 {
04291 struct Impl
04292 {
04293 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3) )
04294 {
04295 return ::lass::python::impl::callFunction<R, P1, P2, P3>( args, iFunction );
04296 }
04297 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3) )
04298 {
04299 return CallMethod<CppClass>::call( args, iObject, iMethod );
04300 }
04301 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3) const )
04302 {
04303 return CallMethod<CppClass>::call( args, iObject, iMethod );
04304 }
04305 static bool isConstMember( R (CppClass::*)(P1, P2, P3) ) { return false; }
04306 static bool isConstMember( R (CppClass::*)(P1, P2, P3) const ) { return true; }
04307 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3) )
04308 {
04309 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04310 }
04311 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04312 {
04313 return construct<CppClass, P1, P2, P3>( iSubtype, args );
04314 }
04315 };
04316 typedef Impl TImpl;
04317 };
04318
04319 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4>
04320 struct ExplicitResolver4<CppClass, R, P1, P2, P3, P4, lass::meta::NullType>
04321 {
04322 struct Impl
04323 {
04324 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4) )
04325 {
04326 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4>( args, iFunction );
04327 }
04328 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4) )
04329 {
04330 return CallMethod<CppClass>::call( args, iObject, iMethod );
04331 }
04332 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4) const )
04333 {
04334 return CallMethod<CppClass>::call( args, iObject, iMethod );
04335 }
04336 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4) ) { return false; }
04337 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4) const ) { return true; }
04338 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4) )
04339 {
04340 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04341 }
04342 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04343 {
04344 return construct<CppClass, P1, P2, P3, P4>( iSubtype, args );
04345 }
04346 };
04347 typedef Impl TImpl;
04348 };
04349
04350 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5>
04351 struct ExplicitResolver5<CppClass, R, P1, P2, P3, P4, P5, lass::meta::NullType>
04352 {
04353 struct Impl
04354 {
04355 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5) )
04356 {
04357 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4, P5>( args, iFunction );
04358 }
04359 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5) )
04360 {
04361 return CallMethod<CppClass>::call( args, iObject, iMethod );
04362 }
04363 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5) const )
04364 {
04365 return CallMethod<CppClass>::call( args, iObject, iMethod );
04366 }
04367 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5) ) { return false; }
04368 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5) const ) { return true; }
04369 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4, P5) )
04370 {
04371 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04372 }
04373 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04374 {
04375 return construct<CppClass, P1, P2, P3, P4, P5>( iSubtype, args );
04376 }
04377 };
04378 typedef Impl TImpl;
04379 };
04380
04381 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
04382 struct ExplicitResolver6<CppClass, R, P1, P2, P3, P4, P5, P6, lass::meta::NullType>
04383 {
04384 struct Impl
04385 {
04386 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6) )
04387 {
04388 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4, P5, P6>( args, iFunction );
04389 }
04390 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6) )
04391 {
04392 return CallMethod<CppClass>::call( args, iObject, iMethod );
04393 }
04394 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6) const )
04395 {
04396 return CallMethod<CppClass>::call( args, iObject, iMethod );
04397 }
04398 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6) ) { return false; }
04399 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6) const ) { return true; }
04400 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4, P5, P6) )
04401 {
04402 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04403 }
04404 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04405 {
04406 return construct<CppClass, P1, P2, P3, P4, P5, P6>( iSubtype, args );
04407 }
04408 };
04409 typedef Impl TImpl;
04410 };
04411
04412 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
04413 struct ExplicitResolver7<CppClass, R, P1, P2, P3, P4, P5, P6, P7, lass::meta::NullType>
04414 {
04415 struct Impl
04416 {
04417 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7) )
04418 {
04419 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4, P5, P6, P7>( args, iFunction );
04420 }
04421 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7) )
04422 {
04423 return CallMethod<CppClass>::call( args, iObject, iMethod );
04424 }
04425 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7) const )
04426 {
04427 return CallMethod<CppClass>::call( args, iObject, iMethod );
04428 }
04429 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7) ) { return false; }
04430 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7) const ) { return true; }
04431 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4, P5, P6, P7) )
04432 {
04433 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04434 }
04435 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04436 {
04437 return construct<CppClass, P1, P2, P3, P4, P5, P6, P7>( iSubtype, args );
04438 }
04439 };
04440 typedef Impl TImpl;
04441 };
04442
04443 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
04444 struct ExplicitResolver8<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, lass::meta::NullType>
04445 {
04446 struct Impl
04447 {
04448 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8) )
04449 {
04450 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4, P5, P6, P7, P8>( args, iFunction );
04451 }
04452 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8) )
04453 {
04454 return CallMethod<CppClass>::call( args, iObject, iMethod );
04455 }
04456 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8) const )
04457 {
04458 return CallMethod<CppClass>::call( args, iObject, iMethod );
04459 }
04460 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8) ) { return false; }
04461 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8) const ) { return true; }
04462 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4, P5, P6, P7, P8) )
04463 {
04464 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04465 }
04466 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04467 {
04468 return construct<CppClass, P1, P2, P3, P4, P5, P6, P7, P8>( iSubtype, args );
04469 }
04470 };
04471 typedef Impl TImpl;
04472 };
04473
04474 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>
04475 struct ExplicitResolver9<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, lass::meta::NullType>
04476 {
04477 struct Impl
04478 {
04479 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9) )
04480 {
04481 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4, P5, P6, P7, P8, P9>( args, iFunction );
04482 }
04483 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9) )
04484 {
04485 return CallMethod<CppClass>::call( args, iObject, iMethod );
04486 }
04487 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9) const )
04488 {
04489 return CallMethod<CppClass>::call( args, iObject, iMethod );
04490 }
04491 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9) ) { return false; }
04492 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9) const ) { return true; }
04493 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9) )
04494 {
04495 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04496 }
04497 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04498 {
04499 return construct<CppClass, P1, P2, P3, P4, P5, P6, P7, P8, P9>( iSubtype, args );
04500 }
04501 };
04502 typedef Impl TImpl;
04503 };
04504
04505 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>
04506 struct ExplicitResolver10<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, lass::meta::NullType>
04507 {
04508 struct Impl
04509 {
04510 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) )
04511 {
04512 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>( args, iFunction );
04513 }
04514 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) )
04515 {
04516 return CallMethod<CppClass>::call( args, iObject, iMethod );
04517 }
04518 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) const )
04519 {
04520 return CallMethod<CppClass>::call( args, iObject, iMethod );
04521 }
04522 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) ) { return false; }
04523 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) const ) { return true; }
04524 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) )
04525 {
04526 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04527 }
04528 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04529 {
04530 return construct<CppClass, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>( iSubtype, args );
04531 }
04532 };
04533 typedef Impl TImpl;
04534 };
04535
04536 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11>
04537 struct ExplicitResolver11<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, lass::meta::NullType>
04538 {
04539 struct Impl
04540 {
04541 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) )
04542 {
04543 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>( args, iFunction );
04544 }
04545 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) )
04546 {
04547 return CallMethod<CppClass>::call( args, iObject, iMethod );
04548 }
04549 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) const )
04550 {
04551 return CallMethod<CppClass>::call( args, iObject, iMethod );
04552 }
04553 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) ) { return false; }
04554 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) const ) { return true; }
04555 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) )
04556 {
04557 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04558 }
04559 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04560 {
04561 return construct<CppClass, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>( iSubtype, args );
04562 }
04563 };
04564 typedef Impl TImpl;
04565 };
04566
04567 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12>
04568 struct ExplicitResolver12<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, lass::meta::NullType>
04569 {
04570 struct Impl
04571 {
04572 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) )
04573 {
04574 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>( args, iFunction );
04575 }
04576 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) )
04577 {
04578 return CallMethod<CppClass>::call( args, iObject, iMethod );
04579 }
04580 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) const )
04581 {
04582 return CallMethod<CppClass>::call( args, iObject, iMethod );
04583 }
04584 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) ) { return false; }
04585 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) const ) { return true; }
04586 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) )
04587 {
04588 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04589 }
04590 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04591 {
04592 return construct<CppClass, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>( iSubtype, args );
04593 }
04594 };
04595 typedef Impl TImpl;
04596 };
04597
04598 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13>
04599 struct ExplicitResolver13<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, lass::meta::NullType>
04600 {
04601 struct Impl
04602 {
04603 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) )
04604 {
04605 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>( args, iFunction );
04606 }
04607 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) )
04608 {
04609 return CallMethod<CppClass>::call( args, iObject, iMethod );
04610 }
04611 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) const )
04612 {
04613 return CallMethod<CppClass>::call( args, iObject, iMethod );
04614 }
04615 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) ) { return false; }
04616 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) const ) { return true; }
04617 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) )
04618 {
04619 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04620 }
04621 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04622 {
04623 return construct<CppClass, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>( iSubtype, args );
04624 }
04625 };
04626 typedef Impl TImpl;
04627 };
04628
04629 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14>
04630 struct ExplicitResolver14<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, lass::meta::NullType>
04631 {
04632 struct Impl
04633 {
04634 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) )
04635 {
04636 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14>( args, iFunction );
04637 }
04638 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) )
04639 {
04640 return CallMethod<CppClass>::call( args, iObject, iMethod );
04641 }
04642 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) const )
04643 {
04644 return CallMethod<CppClass>::call( args, iObject, iMethod );
04645 }
04646 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) ) { return false; }
04647 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) const ) { return true; }
04648 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) )
04649 {
04650 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04651 }
04652 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04653 {
04654 return construct<CppClass, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14>( iSubtype, args );
04655 }
04656 };
04657 typedef Impl TImpl;
04658 };
04659
04660 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15>
04661 struct ExplicitResolver15<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, lass::meta::NullType>
04662 {
04663 struct Impl
04664 {
04665 static PyObject* callFunction( PyObject* args, R (*iFunction)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) )
04666 {
04667 return ::lass::python::impl::callFunction<R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>( args, iFunction );
04668 }
04669 static PyObject* callMethod( PyObject* args, CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) )
04670 {
04671 return CallMethod<CppClass>::call( args, iObject, iMethod );
04672 }
04673 static PyObject* callMethod( PyObject* args, const CppClass* iObject, R (CppClass::*iMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) const )
04674 {
04675 return CallMethod<CppClass>::call( args, iObject, iMethod );
04676 }
04677 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) ) { return false; }
04678 static bool isConstMember( R (CppClass::*)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) const ) { return true; }
04679 static PyObject* callFreeMethod( PyObject* args, CppClass* iObject, R (*iFreeMethod)(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) )
04680 {
04681 return CallMethod<CppClass>::callFree( args, iObject, iFreeMethod );
04682 }
04683 static PyObject* callConstructor( PyTypeObject* iSubtype, PyObject* args )
04684 {
04685 return construct<CppClass, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15>( iSubtype, args );
04686 }
04687 };
04688 typedef Impl TImpl;
04689 };
04690
04691
04692 template <class CppClass, typename R, typename Head, typename Tail>
04693 struct ExplicitResolver<CppClass, R, meta::TypeList<Head, Tail> >
04694 {
04695 typedef typename ExplicitResolver1<CppClass, R, Head, Tail>::TImpl TImpl;
04696 };
04697
04698 template <class CppClass, typename R, typename P1, typename Head, typename Tail>
04699 struct ExplicitResolver1<CppClass, R, P1, meta::TypeList<Head, Tail> >
04700 {
04701 typedef typename ExplicitResolver2<CppClass, R, P1, Head, Tail>::TImpl TImpl;
04702 };
04703
04704 template <class CppClass, typename R, typename P1, typename P2, typename Head, typename Tail>
04705 struct ExplicitResolver2<CppClass, R, P1, P2, meta::TypeList<Head, Tail> >
04706 {
04707 typedef typename ExplicitResolver3<CppClass, R, P1, P2, Head, Tail>::TImpl TImpl;
04708 };
04709
04710 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename Head, typename Tail>
04711 struct ExplicitResolver3<CppClass, R, P1, P2, P3, meta::TypeList<Head, Tail> >
04712 {
04713 typedef typename ExplicitResolver4<CppClass, R, P1, P2, P3, Head, Tail>::TImpl TImpl;
04714 };
04715
04716 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename Head, typename Tail>
04717 struct ExplicitResolver4<CppClass, R, P1, P2, P3, P4, meta::TypeList<Head, Tail> >
04718 {
04719 typedef typename ExplicitResolver5<CppClass, R, P1, P2, P3, P4, Head, Tail>::TImpl TImpl;
04720 };
04721
04722 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename Head, typename Tail>
04723 struct ExplicitResolver5<CppClass, R, P1, P2, P3, P4, P5, meta::TypeList<Head, Tail> >
04724 {
04725 typedef typename ExplicitResolver6<CppClass, R, P1, P2, P3, P4, P5, Head, Tail>::TImpl TImpl;
04726 };
04727
04728 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename Head, typename Tail>
04729 struct ExplicitResolver6<CppClass, R, P1, P2, P3, P4, P5, P6, meta::TypeList<Head, Tail> >
04730 {
04731 typedef typename ExplicitResolver7<CppClass, R, P1, P2, P3, P4, P5, P6, Head, Tail>::TImpl TImpl;
04732 };
04733
04734 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename Head, typename Tail>
04735 struct ExplicitResolver7<CppClass, R, P1, P2, P3, P4, P5, P6, P7, meta::TypeList<Head, Tail> >
04736 {
04737 typedef typename ExplicitResolver8<CppClass, R, P1, P2, P3, P4, P5, P6, P7, Head, Tail>::TImpl TImpl;
04738 };
04739
04740 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename Head, typename Tail>
04741 struct ExplicitResolver8<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, meta::TypeList<Head, Tail> >
04742 {
04743 typedef typename ExplicitResolver9<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, Head, Tail>::TImpl TImpl;
04744 };
04745
04746 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename Head, typename Tail>
04747 struct ExplicitResolver9<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, meta::TypeList<Head, Tail> >
04748 {
04749 typedef typename ExplicitResolver10<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, Head, Tail>::TImpl TImpl;
04750 };
04751
04752 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename Head, typename Tail>
04753 struct ExplicitResolver10<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, meta::TypeList<Head, Tail> >
04754 {
04755 typedef typename ExplicitResolver11<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, Head, Tail>::TImpl TImpl;
04756 };
04757
04758 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename Head, typename Tail>
04759 struct ExplicitResolver11<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, meta::TypeList<Head, Tail> >
04760 {
04761 typedef typename ExplicitResolver12<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, Head, Tail>::TImpl TImpl;
04762 };
04763
04764 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename Head, typename Tail>
04765 struct ExplicitResolver12<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, meta::TypeList<Head, Tail> >
04766 {
04767 typedef typename ExplicitResolver13<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, Head, Tail>::TImpl TImpl;
04768 };
04769
04770 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename Head, typename Tail>
04771 struct ExplicitResolver13<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, meta::TypeList<Head, Tail> >
04772 {
04773 typedef typename ExplicitResolver14<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, Head, Tail>::TImpl TImpl;
04774 };
04775
04776 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename Head, typename Tail>
04777 struct ExplicitResolver14<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, meta::TypeList<Head, Tail> >
04778 {
04779 typedef typename ExplicitResolver15<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, Head, Tail>::TImpl TImpl;
04780 };
04781
04782 template <class CppClass, typename R, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11, typename P12, typename P13, typename P14, typename P15, typename Head, typename Tail>
04783 struct ExplicitResolver15<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, meta::TypeList<Head, Tail> >
04784 {
04785 typedef typename ExplicitResolver16<CppClass, R, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, Head, Tail>::TImpl TImpl;
04786 };
04787
04788
04789
04790 }
04791
04792 }
04793
04794 }
04795
04796 #if LASS_COMPILER_TYPE == LASS_COMPILER_TYPE_MSVC
04797 # pragma warning(pop)
04798 #endif
04799
04800 #endif
04801
04802