50#ifndef LASS_GUARDIAN_OF_INCLUSION_UTIL_PYCALLBACK_EXPORT_TRAITS_H
51#define LASS_GUARDIAN_OF_INCLUSION_UTIL_PYCALLBACK_EXPORT_TRAITS_H
61 static constexpr const char* py_typing =
"Callable[[], None]";
63 typedef lass::util::MultiCallback0 TCallback;
64 typedef lass::util::Callback0 TNonMultiCallback;
65 static PyObject* build(
const lass::util::MultiCallback0& callback)
67 return new lass::python::MultiCallback(callback);
69 static int get(PyObject* obj, lass::util::MultiCallback0& callback)
71 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
73 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
74 callback = *almost->get();
80 TNonMultiCallback tempCallback;
81 int rv = pyGetSimpleObject(obj, tempCallback);
85 callback.add(tempCallback);
98 static constexpr const char* py_typing =
"Callable[[P1], None]";
100 typedef lass::util::MultiCallback1< P1 > TCallback;
101 typedef lass::util::Callback1< P1 > TNonMultiCallback;
102 static PyObject* build(
const TCallback& callback)
104 return new lass::python::MultiCallback(callback);
106 static int get(PyObject* obj, TCallback& callback)
108 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
110 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
111 callback = *almost->get();
117 TNonMultiCallback tempCallback;
118 int rv = pyGetSimpleObject(obj, tempCallback);
122 callback.add(tempCallback);
129 typename P1,
typename P2
133 static constexpr const char* py_typing =
"Callable[[P1, P2], None]";
135 typedef lass::util::MultiCallback2< P1, P2 > TCallback;
136 typedef lass::util::Callback2< P1, P2 > TNonMultiCallback;
137 static PyObject* build(
const TCallback& callback)
139 return new lass::python::MultiCallback(callback);
141 static int get(PyObject* obj, TCallback& callback)
143 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
145 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
146 callback = *almost->get();
152 TNonMultiCallback tempCallback;
153 int rv = pyGetSimpleObject(obj, tempCallback);
157 callback.add(tempCallback);
164 typename P1,
typename P2,
typename P3
168 static constexpr const char* py_typing =
"Callable[[P1, P2, P3], None]";
170 typedef lass::util::MultiCallback3< P1, P2, P3 > TCallback;
171 typedef lass::util::Callback3< P1, P2, P3 > TNonMultiCallback;
172 static PyObject* build(
const TCallback& callback)
174 return new lass::python::MultiCallback(callback);
176 static int get(PyObject* obj, TCallback& callback)
178 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
180 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
181 callback = *almost->get();
187 TNonMultiCallback tempCallback;
188 int rv = pyGetSimpleObject(obj, tempCallback);
192 callback.add(tempCallback);
199 typename P1,
typename P2,
typename P3,
typename P4
201struct PyExportTraits<lass::util::MultiCallback4< P1, P2, P3, P4 > >
203 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4], None]";
205 typedef lass::util::MultiCallback4< P1, P2, P3, P4 > TCallback;
206 typedef lass::util::Callback4< P1, P2, P3, P4 > TNonMultiCallback;
207 static PyObject* build(
const TCallback& callback)
209 return new lass::python::MultiCallback(callback);
211 static int get(PyObject* obj, TCallback& callback)
213 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
215 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
216 callback = *almost->get();
222 TNonMultiCallback tempCallback;
223 int rv = pyGetSimpleObject(obj, tempCallback);
227 callback.add(tempCallback);
234 typename P1,
typename P2,
typename P3,
typename P4,
typename P5
236struct PyExportTraits<lass::util::MultiCallback5< P1, P2, P3, P4, P5 > >
238 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4, P5], None]";
240 typedef lass::util::MultiCallback5< P1, P2, P3, P4, P5 > TCallback;
241 typedef lass::util::Callback5< P1, P2, P3, P4, P5 > TNonMultiCallback;
242 static PyObject* build(
const TCallback& callback)
244 return new lass::python::MultiCallback(callback);
246 static int get(PyObject* obj, TCallback& callback)
248 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
250 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
251 callback = *almost->get();
257 TNonMultiCallback tempCallback;
258 int rv = pyGetSimpleObject(obj, tempCallback);
262 callback.add(tempCallback);
269 typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6
271struct PyExportTraits<lass::util::MultiCallback6< P1, P2, P3, P4, P5, P6 > >
273 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4, P5, P6], None]";
275 typedef lass::util::MultiCallback6< P1, P2, P3, P4, P5, P6 > TCallback;
276 typedef lass::util::Callback6< P1, P2, P3, P4, P5, P6 > TNonMultiCallback;
277 static PyObject* build(
const TCallback& callback)
279 return new lass::python::MultiCallback(callback);
281 static int get(PyObject* obj, TCallback& callback)
283 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
285 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
286 callback = *almost->get();
292 TNonMultiCallback tempCallback;
293 int rv = pyGetSimpleObject(obj, tempCallback);
297 callback.add(tempCallback);
304 typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7
306struct PyExportTraits<lass::util::MultiCallback7< P1, P2, P3, P4, P5, P6, P7 > >
308 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4, P5, P6, P7], None]";
310 typedef lass::util::MultiCallback7< P1, P2, P3, P4, P5, P6, P7 > TCallback;
311 typedef lass::util::Callback7< P1, P2, P3, P4, P5, P6, P7 > TNonMultiCallback;
312 static PyObject* build(
const TCallback& callback)
314 return new lass::python::MultiCallback(callback);
316 static int get(PyObject* obj, TCallback& callback)
318 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
320 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
321 callback = *almost->get();
327 TNonMultiCallback tempCallback;
328 int rv = pyGetSimpleObject(obj, tempCallback);
332 callback.add(tempCallback);
339 typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8
341struct PyExportTraits<lass::util::MultiCallback8< P1, P2, P3, P4, P5, P6, P7, P8 > >
343 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4, P5, P6, P7, P8], None]";
345 typedef lass::util::MultiCallback8< P1, P2, P3, P4, P5, P6, P7, P8 > TCallback;
346 typedef lass::util::Callback8< P1, P2, P3, P4, P5, P6, P7, P8 > TNonMultiCallback;
347 static PyObject* build(
const TCallback& callback)
349 return new lass::python::MultiCallback(callback);
351 static int get(PyObject* obj, TCallback& callback)
353 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
355 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
356 callback = *almost->get();
362 TNonMultiCallback tempCallback;
363 int rv = pyGetSimpleObject(obj, tempCallback);
367 callback.add(tempCallback);
374 typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9
376struct PyExportTraits<lass::util::MultiCallback9< P1, P2, P3, P4, P5, P6, P7, P8, P9 > >
378 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4, P5, P6, P7, P8, P9], None]";
380 typedef lass::util::MultiCallback9< P1, P2, P3, P4, P5, P6, P7, P8, P9 > TCallback;
381 typedef lass::util::Callback9< P1, P2, P3, P4, P5, P6, P7, P8, P9 > TNonMultiCallback;
382 static PyObject* build(
const TCallback& callback)
384 return new lass::python::MultiCallback(callback);
386 static int get(PyObject* obj, TCallback& callback)
388 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
390 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
391 callback = *almost->get();
397 TNonMultiCallback tempCallback;
398 int rv = pyGetSimpleObject(obj, tempCallback);
402 callback.add(tempCallback);
409 typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9,
typename P10
411struct PyExportTraits<lass::util::MultiCallback10< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 > >
413 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4, P5, P6, P7, P8, P9, P10], None]";
415 typedef lass::util::MultiCallback10< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 > TCallback;
416 typedef lass::util::Callback10< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 > TNonMultiCallback;
417 static PyObject* build(
const TCallback& callback)
419 return new lass::python::MultiCallback(callback);
421 static int get(PyObject* obj, TCallback& callback)
423 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
425 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
426 callback = *almost->get();
432 TNonMultiCallback tempCallback;
433 int rv = pyGetSimpleObject(obj, tempCallback);
437 callback.add(tempCallback);
444 typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9,
typename P10,
typename P11
446struct PyExportTraits<lass::util::MultiCallback11< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 > >
448 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11], None]";
450 typedef lass::util::MultiCallback11< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 > TCallback;
451 typedef lass::util::Callback11< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 > TNonMultiCallback;
452 static PyObject* build(
const TCallback& callback)
454 return new lass::python::MultiCallback(callback);
456 static int get(PyObject* obj, TCallback& callback)
458 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
460 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
461 callback = *almost->get();
467 TNonMultiCallback tempCallback;
468 int rv = pyGetSimpleObject(obj, tempCallback);
472 callback.add(tempCallback);
479 typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7,
typename P8,
typename P9,
typename P10,
typename P11,
typename P12
481struct PyExportTraits<lass::util::MultiCallback12< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 > >
483 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12], None]";
485 typedef lass::util::MultiCallback12< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 > TCallback;
486 typedef lass::util::Callback12< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 > TNonMultiCallback;
487 static PyObject* build(
const TCallback& callback)
489 return new lass::python::MultiCallback(callback);
491 static int get(PyObject* obj, TCallback& callback)
493 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
495 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
496 callback = *almost->get();
502 TNonMultiCallback tempCallback;
503 int rv = pyGetSimpleObject(obj, tempCallback);
507 callback.add(tempCallback);
514 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
516struct PyExportTraits<lass::util::MultiCallback13< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 > >
518 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13], None]";
520 typedef lass::util::MultiCallback13< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 > TCallback;
521 typedef lass::util::Callback13< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 > TNonMultiCallback;
522 static PyObject* build(
const TCallback& callback)
524 return new lass::python::MultiCallback(callback);
526 static int get(PyObject* obj, TCallback& callback)
528 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
530 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
531 callback = *almost->get();
537 TNonMultiCallback tempCallback;
538 int rv = pyGetSimpleObject(obj, tempCallback);
542 callback.add(tempCallback);
549 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
551struct PyExportTraits<lass::util::MultiCallback14< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 > >
553 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14], None]";
555 typedef lass::util::MultiCallback14< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 > TCallback;
556 typedef lass::util::Callback14< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 > TNonMultiCallback;
557 static PyObject* build(
const TCallback& callback)
559 return new lass::python::MultiCallback(callback);
561 static int get(PyObject* obj, TCallback& callback)
563 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
565 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
566 callback = *almost->get();
572 TNonMultiCallback tempCallback;
573 int rv = pyGetSimpleObject(obj, tempCallback);
577 callback.add(tempCallback);
584 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
586struct PyExportTraits<lass::util::MultiCallback15< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > >
588 static constexpr const char* py_typing =
"Callable[[P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15], None]";
590 typedef lass::util::MultiCallback15< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > TCallback;
591 typedef lass::util::Callback15< P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 > TNonMultiCallback;
592 static PyObject* build(
const TCallback& callback)
594 return new lass::python::MultiCallback(callback);
596 static int get(PyObject* obj, TCallback& callback)
598 if (obj->ob_type == MultiCallback::_lassPyClassDef.type())
600 lass::util::SharedPtr<TCallback>* almost =
static_cast<lass::util::SharedPtr<TCallback>*
>(
static_cast<MultiCallback*
>(obj)->raw(
false));
601 callback = *almost->get();
607 TNonMultiCallback tempCallback;
608 int rv = pyGetSimpleObject(obj, tempCallback);
612 callback.add(tempCallback);
Comprehensive C++ to Python binding library.
Library for Assembled Shared Sources.
by copy, general case assumes shadow type or PyObjectPlus based type.