29#define SWIGLAL_MODULE_RENAME_CONSTANTS
30#define SWIGLAL_MODULE_RENAME_FUNCTIONS
31#define SWIGLAL_MODULE_RENAME_TDSTRUCTS
32#define SWIGLAL_MODULE_RENAME_VARIABLES
35%include <pycomplex.swg>
40#include <numpy/arrayobject.h>
48#if NPY_ABI_VERSION < 0x02000000
53 #define NPY_2_0_API_VERSION 0x00000012
59 #define PyArray_RUNTIME_VERSION NPY_FEATURE_VERSION
61 #define PyArray_DescrProto PyArray_Descr
70#define swiglal_not_empty(v) ((v) != NULL)
75#define swiglal_self() (self)
76#define swiglal_no_self() (NULL)
81#define swiglal_1starg() (obj0)
86SWIGINTERNINLINE PyObject* swiglal_get_reference(PyObject* v) { Py_XINCREF(v);
return v; }
92SWIGINTERN PyObject* swiglal_py_remove_first_output(PyObject *result) {
93 PySequence_DelItem(result, 0);
94 if (PySequence_Size(result) == 1) {
95 PyObject *obj = result;
96 result = PySequence_GetItem(obj, 0);
101#define swiglal_maybe_return_int() \
102 if (PySequence_Check(resultobj) && PySequence_Size(resultobj) > 1) resultobj = swiglal_py_remove_first_output(resultobj)
107#define swiglal_null_ptr(v) ((v) == Py_None)
112SWIGINTERN
int swiglal_output_stdouterr(
void) {
115 fflush(swiglal_tmp_stdout);
116 rewind(swiglal_tmp_stdout);
117 fflush(swiglal_tmp_stderr);
118 rewind(swiglal_tmp_stderr);
123 while (fgets(buf,
sizeof(buf), swiglal_tmp_stdout) != NULL) {
124 PySys_WriteStdout(
"%s", buf);
131 while (fgets(buf,
sizeof(buf), swiglal_tmp_stderr) != NULL) {
132 PySys_WriteStderr(
"%s", buf);
137 fclose(swiglal_tmp_stdout);
138 fclose(swiglal_tmp_stderr);
153%define %swiglal_py_ury_op(NAME, FUNCTYPE, SLOT)
154%pythonmaybecall *::__##NAME##__;
155%feature(
"python:slot", #SLOT, functype=#FUNCTYPE) *::__##NAME##__;
156%feature(
"kwargs", 0) *::__##NAME##__;
158%swiglal_py_ury_op(
float, unaryfunc, nb_float);
159%swiglal_py_ury_op(
hash, hashfunc, tp_hash);
160%swiglal_py_ury_op(
int, unaryfunc, nb_int);
161%swiglal_py_ury_op(
long, unaryfunc, nb_long);
162%swiglal_py_ury_op(nonzero, inquiry, nb_nonzero);
163%swiglal_py_ury_op(repr, reprfunc, tp_repr);
164%swiglal_py_ury_op(str, reprfunc, tp_str);
167%define %swiglal_py_urn_op(NAME, FUNCTYPE, SLOT)
168%newobject *::__##NAME##__;
169%pythonmaybecall *::__##NAME##__;
170%feature(
"python:slot", #SLOT, functype=#FUNCTYPE) *::__##NAME##__;
171%feature(
"kwargs", 0) *::__##NAME##__;
173%swiglal_py_urn_op(abs, unaryfunc, nb_absolute);
174%swiglal_py_urn_op(neg, unaryfunc, nb_negative);
175%swiglal_py_urn_op(pos, unaryfunc, nb_positive);
180%define %swiglal_py_bin_op(NAME, FUNCTYPE, SLOT)
181%newobject *::__##NAME##__;
182%pythonmaybecall *::__##NAME##__;
183%feature(
"python:slot", #SLOT, functype=#FUNCTYPE) *::__##NAME##__;
184%feature(
"kwargs", 0) *::__##NAME##__;
185%ignore *::__r##NAME##__;
187%swiglal_py_bin_op(add, binaryfunc, nb_add);
188%swiglal_py_bin_op(and, binaryfunc, nb_and);
189%swiglal_py_bin_op(div, binaryfunc, nb_divide);
190%swiglal_py_bin_op(lshift, binaryfunc, nb_lshift);
191%swiglal_py_bin_op(mod, binaryfunc, nb_remainder);
192%swiglal_py_bin_op(mul, binaryfunc, nb_multiply);
193%swiglal_py_bin_op(or, binaryfunc, nb_or);
194%swiglal_py_bin_op(pow, ternaryfunc, nb_power);
195%swiglal_py_bin_op(rshift, binaryfunc, nb_rshift);
196%swiglal_py_bin_op(sub, binaryfunc, nb_subtract);
197%swiglal_py_bin_op(xor, binaryfunc, nb_xor);
200%typemap(in)
void* SWIGLAL_OP_POW_3RDARG {
201 if ($input != Py_None) {
202 %argument_fail(SWIG_TypeError,
"$type", $symname, $argnum);
209%typemap(out, noblock=1) long __hash__ {
210 %set_output(PyLong_FromLong($1));
214%typemap(in, numinputs=0, noblock=1) int SWIGLAL_CMP_OP_RETN_HACK "";
215%define %swiglal_py_cmp_op(NAME, COMPTYPE)
216%pythonmaybecall *::__
##NAME##__;
217%feature(
"python:compare", #COMPTYPE) *::__##NAME##__;
218%feature(
"kwargs", 0) *::__##NAME##__;
219%feature(
"new", 1) *::__##NAME##__;
220%typemap(out, noblock=1, fragment=SWIG_From_frag(
bool))
bool __##NAME##__ {
221 return SWIG_From_bool($1);
223%typemap(freearg, noblock=1) int SWIGLAL_CMP_OP_RETN_HACK {
225 Py_INCREF(Py_NotImplemented);
226 return Py_NotImplemented;
229%swiglal_py_cmp_op(eq, Py_EQ);
230%swiglal_py_cmp_op(ge, Py_GE);
231%swiglal_py_cmp_op(gt, Py_GT);
232%swiglal_py_cmp_op(le, Py_LE);
233%swiglal_py_cmp_op(
lt, Py_LT);
234%swiglal_py_cmp_op(ne, Py_NE);
249%define %swiglal_struct_extend_specific(TAGNAME, OPAQUE, DTORFUNC)
255 struct TAGNAME *__copy__() {
256 return %swiglal_new_copy(*$self,
struct TAGNAME);
261 struct TAGNAME *__copy__() {
271#if !OPAQUE && #DTORFUNC == ""
273 %typemap(in, noblock=1) const
void *memo "";
274 struct TAGNAME *__deepcopy__(const
void *memo) {
275 return %swiglal_new_copy(*$self,
struct TAGNAME);
277 %clear
const void *memo;
281 %typemap(in, noblock=1) const
void *memo "";
282 struct TAGNAME *__deepcopy__(const
void *memo) {
286 %clear
const void *memo;
297%swig_cplxflt_convn(gsl_complex_float, gsl_complex_float_rect, GSL_REAL, GSL_IMAG);
298%swig_cplxdbl_convn(gsl_complex, gsl_complex_rect, GSL_REAL, GSL_IMAG);
299%typemaps_primitive(%checkcode(CPLXFLT), gsl_complex_float);
300%typemaps_primitive(%checkcode(CPLXDBL), gsl_complex);
305%typemaps_primitive(%checkcode(CPLXFLT),
COMPLEX8);
306%typemaps_primitive(%checkcode(CPLXDBL),
COMPLEX16);
314%fragment(SWIG_AsVal_frag(
long));
315%fragment(SWIG_AsVal_frag(
unsigned long));
316%fragment(SWIG_AsVal_frag(
float));
317%fragment(SWIG_AsVal_frag(
double));
318%fragment(SWIG_AsVal_frag(
COMPLEX8));
321SWIGINTERN
int swiglal_SWIG_AsVal_long(PyObject *obj,
long* val) {
322 if (PyArray_IsScalar(obj, Integer)) {
325 PyArray_Descr *longDescr = PyArray_DescrFromType(NPY_LONG);
326 PyArray_CastScalarToCtype(obj, (
void*)val, longDescr);
327 Py_DECREF(longDescr);
332 return SWIG_AsVal_long(obj, val);
334SWIGINTERN
int swiglal_SWIG_AsVal_unsigned_SS_long(PyObject *obj,
unsigned long *val) {
335 if (PyArray_IsScalar(obj, Integer)) {
338 PyArray_Descr *ulongDescr = PyArray_DescrFromType(NPY_ULONG);
339 PyArray_CastScalarToCtype(obj, (
void*)val, ulongDescr);
340 Py_DECREF(ulongDescr);
345 return SWIG_AsVal_unsigned_SS_long(obj, val);
347SWIGINTERN
int swiglal_SWIG_AsVal_float(PyObject *obj,
float* val) {
348 if (PyArray_IsScalar(obj, Integer) || PyArray_IsScalar(obj, Floating)) {
351 PyArray_Descr *floatDescr = PyArray_DescrFromType(NPY_FLOAT);
352 PyArray_CastScalarToCtype(obj, (
void*)val, floatDescr);
353 Py_DECREF(floatDescr);
358 return SWIG_AsVal_float(obj, val);
360SWIGINTERN
int swiglal_SWIG_AsVal_double(PyObject *obj,
double* val) {
361 if (PyArray_IsScalar(obj, Integer) || PyArray_IsScalar(obj, Floating)) {
364 PyArray_Descr *doubleDescr = PyArray_DescrFromType(NPY_DOUBLE);
365 PyArray_CastScalarToCtype(obj, (
void*)val, doubleDescr);
366 Py_DECREF(doubleDescr);
371 return SWIG_AsVal_double(obj, val);
373SWIGINTERN
int swiglal_SWIG_AsVal_COMPLEX8(PyObject *obj,
COMPLEX8* val) {
374 if (PyArray_IsScalar(obj, Integer) || PyArray_IsScalar(obj, Floating) || PyArray_IsScalar(obj, ComplexFloating)) {
377 PyArray_Descr *floatComplexDescr = PyArray_DescrFromType(NPY_COMPLEX64);
378 PyArray_CastScalarToCtype(obj, (
void*)val, floatComplexDescr);
379 Py_DECREF(floatComplexDescr);
384 return SWIG_AsVal_COMPLEX8(obj, val);
386SWIGINTERN
int swiglal_SWIG_AsVal_COMPLEX16(PyObject *obj,
COMPLEX16* val) {
387 if (PyArray_IsScalar(obj, Integer) || PyArray_IsScalar(obj, Floating) || PyArray_IsScalar(obj, ComplexFloating)) {
390 PyArray_Descr *doubleComplexDescr = PyArray_DescrFromType(NPY_COMPLEX128);
391 PyArray_CastScalarToCtype(obj, (
void*)val, doubleComplexDescr);
392 Py_DECREF(doubleComplexDescr);
397 return SWIG_AsVal_COMPLEX16(obj, val);
399#define SWIG_AsVal_long(obj, val) swiglal_SWIG_AsVal_long(obj, val)
400#define SWIG_AsVal_unsigned_SS_long(obj, val) swiglal_SWIG_AsVal_unsigned_SS_long(obj, val)
401#define SWIG_AsVal_float(obj, val) swiglal_SWIG_AsVal_float(obj, val)
402#define SWIG_AsVal_double(obj, val) swiglal_SWIG_AsVal_double(obj, val)
403#define SWIG_AsVal_COMPLEX8(obj, val) swiglal_SWIG_AsVal_COMPLEX8(obj, val)
404#define SWIG_AsVal_COMPLEX16(obj, val) swiglal_SWIG_AsVal_COMPLEX16(obj, val)
408%typemap(in)
struct tm* (
struct tm temptm) {
411 memset(&temptm, 0,
sizeof(temptm));
413 if ($input != NULL && $input != Py_None) {
416 if (!PySequence_Check($input)) {
417 %argument_fail(SWIG_ValueError,
"$type (not a sequence)", $symname, $argnum);
419 if (PySequence_Size($input) != 9) {
420 %argument_fail(SWIG_ValueError,
"$type (must have 9 elements)", $symname, $argnum);
422 PyObject *seq = PySequence_Fast($input,
"$type (not a sequence)");
423 temptm.tm_year = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 0)),
int);
424 temptm.tm_mon = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 1)),
int);
425 temptm.tm_mday = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 2)),
int);
426 temptm.tm_hour = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 3)),
int);
427 temptm.tm_min = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 4)),
int);
428 temptm.tm_sec = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 5)),
int);
429 temptm.tm_wday = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 6)),
int);
430 temptm.tm_yday = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 7)),
int);
431 temptm.tm_isdst = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 8)),
int);
433 if (PyErr_Occurred()) {
442 temptm.tm_year -= 1900;
444 temptm.tm_wday = (temptm.tm_wday + 8) % 7;
451%typemap(freearg)
struct tm*
"";
452%typemap(out)
struct tm* {
461 $1->tm_wday = ($1->tm_wday + 6) % 7;
465 $result = Py_BuildValue(
"(iiiiiiiii)",
466 $1->tm_year, $1->tm_mon, $1->tm_mday,
467 $1->tm_hour, $1->tm_min, $1->tm_sec,
468 $1->tm_wday, $1->tm_yday, $1->tm_isdst);
482static PyObject *parent_map = NULL;
486SWIGINTERN
void swiglal_store_parent(
void* ptr, PyObject* parent) {
487 PyObject *pyerr_type = NULL, *pyerr_value = NULL, *pyerr_traceback = NULL;
488 PyErr_Fetch(&pyerr_type, &pyerr_value, &pyerr_traceback);
491 assert(parent != NULL);
492 PyObject* key = PyLong_FromVoidPtr(ptr);
494 PyObject* parent_tuple = PyDict_GetItem(parent_map, key);
495 if (parent_tuple == NULL) {
496 const long ref_count = 1;
497 parent_tuple = Py_BuildValue(
"Ol", parent, ref_count);
498 assert(parent_tuple != NULL);
499 ecode = PyDict_SetItem(parent_map, key, parent_tuple);
501 Py_CLEAR(parent_tuple);
504 Py_INCREF(parent_tuple);
505 PyObject* stored_parent = NULL;
507 ecode = PyArg_ParseTuple(parent_tuple,
"Ol", &stored_parent, &ref_count);
510 Py_INCREF(stored_parent);
511 Py_CLEAR(parent_tuple);
512 parent_tuple = Py_BuildValue(
"Nl", stored_parent, ref_count);
513 assert(parent_tuple != NULL);
514 ecode = PyDict_SetItem(parent_map, key, parent_tuple);
516 Py_CLEAR(parent_tuple);
519 assert(PyErr_Occurred() == NULL);
520 PyErr_Restore(pyerr_type, pyerr_value, pyerr_traceback);
527SWIGINTERN
bool swiglal_release_parent(
void *ptr) {
528 PyObject *pyerr_type = NULL, *pyerr_value = NULL, *pyerr_traceback = NULL;
529 PyErr_Fetch(&pyerr_type, &pyerr_value, &pyerr_traceback);
533 PyObject* key = PyLong_FromVoidPtr(ptr);
535 PyObject* parent_tuple = PyDict_GetItem(parent_map, key);
536 if (parent_tuple != NULL) {
537 Py_INCREF(parent_tuple);
539 PyObject* stored_parent = NULL;
541 ecode = PyArg_ParseTuple(parent_tuple,
"Ol", &stored_parent, &ref_count);
543 Py_INCREF(stored_parent);
544 Py_CLEAR(parent_tuple);
545 if (--ref_count == 0) {
546 ecode = PyDict_DelItem(parent_map, key);
550 parent_tuple = Py_BuildValue(
"Ol", stored_parent, ref_count);
551 ecode = PyDict_SetItem(parent_map, key, parent_tuple);
553 Py_CLEAR(parent_tuple);
555 Py_CLEAR(stored_parent);
558 assert(PyErr_Occurred() == NULL);
559 PyErr_Restore(pyerr_type, pyerr_value, pyerr_traceback);
571 const char *
const module_name =
"swiglal_runtime_data";
572 const char *
const parent_map_name =
"parent_map";
573#if PY_VERSION_HEX >= 0x03000000
574 PyObject* module = PyImport_AddModule(module_name);
576 PyObject* module = Py_InitModule(module_name, NULL);
578 assert(module != NULL);
579 if (PyObject_HasAttrString(module, parent_map_name)) {
580 parent_map = PyObject_GetAttrString(module, parent_map_name);
583 parent_map = PyDict_New();
584 PyObject_SetAttrString(module, parent_map_name, parent_map);
586 assert(parent_map != NULL);
587 Py_INCREF(parent_map);
600%fragment(
"swiglal_py_array_helpers",
"header") {
603 void* swiglal_py_get_element_ptr(
void* ptr,
606 const size_t strides[],
610 for (
size_t j = 0; j < ndims; ++j) {
611 elemidx += ((size_t)idx[j]) * strides[j];
613 return %reinterpret_cast(%reinterpret_cast(ptr,
char*) + elemidx*esize,
void*);
617 void swiglal_py_increment_idx(
const size_t ndims,
621 for (
int j = ((
int)ndims) - 1; j >= 0; --j) {
622 if (++idx[j] < ((npy_intp)dims[j])) {
632%fragment(
"swiglal_py_array_objview",
"header") {
637 swig_type_info* tinfo;
638 PyArray_Descr* descr_noptr;
639 PyArray_Descr* descr_isptr;
640 } swiglal_py_array_type_pair;
646 static swiglal_py_array_type_pair swiglal_py_array_types[
sizeof(swig_types) /
sizeof(swig_types[0])];
650 SWIGINTERN PyArray_Descr** swiglal_py_array_descr_from_tinfo(
const bool isptr, swig_type_info* tinfo) {
652 while (swiglal_py_array_types[i].tinfo != NULL && swiglal_py_array_types[i].tinfo != tinfo)
654 if (swiglal_py_array_types[i].tinfo == NULL)
655 swiglal_py_array_types[i].tinfo = tinfo;
656 return isptr ? &swiglal_py_array_types[i].descr_isptr : &swiglal_py_array_types[i].descr_noptr;
661 SWIGINTERN
void swiglal_py_array_tinfo_from_descr(
bool *isptr, swig_type_info** tinfo, PyArray_Descr* descr) {
663 while ( ( swiglal_py_array_types[i].descr_noptr != NULL || swiglal_py_array_types[i].descr_isptr != NULL ) &&
664 ( swiglal_py_array_types[i].descr_noptr != descr && swiglal_py_array_types[i].descr_isptr != descr ) )
666 *isptr = (swiglal_py_array_types[i].descr_isptr == descr);
667 *tinfo = swiglal_py_array_types[i].tinfo;
671 static int swiglal_py_array_objview_copyswap_cancastto[2] = {NPY_OBJECT, NPY_NOTYPE};
674 static void swiglal_py_array_objview_copyswap(
void*
dst,
void*
src,
int swap,
void* arr) {
678 PyArrayObject* nparr = (PyArrayObject*)arr;
679 assert(PyArray_DESCR(nparr) != NULL);
683 memcpy(
dst,
src, PyArray_ITEMSIZE(nparr));
688 const size_t n = PyArray_ITEMSIZE(nparr) / 2;
691 b =
a + (PyArray_ITEMSIZE(nparr)-1);
692 for (
size_t i = 0; i < n; i++) {
704#define %swiglal_py_array_objview_frag(ACFTYPE) "swiglal_py_array_objview_" %str(ACFTYPE)
708#define %swiglal_py_array_objview_init_frag(ACFTYPE) "swiglal_py_array_objview_init_" %str(ACFTYPE)
712%define %swiglal_py_array_objview(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL)
715%fragment(%swiglal_py_array_objview_init_frag(ACFTYPE),
"init") {
716 swiglal_py_array_objview_##ACFTYPE##_arrfuncs.cast[NPY_OBJECT] =
717 (PyArray_VectorUnaryFunc*)swiglal_py_array_objview_##ACFTYPE##_cast_to_object;
721%fragment(%swiglal_py_array_objview_frag(ACFTYPE),
"header",
722 fragment=
"swiglal_py_array_objview",
723 fragment=%swiglal_py_array_objview_init_frag(ACFTYPE),
724 fragment=INFRAG, fragment=OUTFRAG)
728 static PyObject* swiglal_py_array_objview_##ACFTYPE##_getitem(
void* elemptr,
void* arr) {
731 assert(elemptr != NULL);
733 PyArrayObject* nparr = (PyArrayObject*)arr;
734 assert(PyArray_DESCR(nparr) != NULL);
738 swig_type_info* tinfo = NULL;
739 swiglal_py_array_tinfo_from_descr(&isptr, &tinfo, PyArray_DESCR(nparr));
740 assert(tinfo != NULL);
743 const bool copyobj =
false;
744 const size_t esize = PyArray_ITEMSIZE(nparr);
745 const int tflags = 0;
746 PyObject* parent = PyArray_BASE(nparr);
752 static int swiglal_py_array_objview_##ACFTYPE##_setitem(PyObject* objelem,
void* elemptr,
void* arr) {
755 assert(elemptr != NULL);
757 PyArrayObject* nparr = (PyArrayObject*)arr;
758 assert(PyArray_DESCR(nparr) != NULL);
762 swig_type_info* tinfo = NULL;
763 swiglal_py_array_tinfo_from_descr(&isptr, &tinfo, PyArray_DESCR(nparr));
764 assert(tinfo != NULL);
774 const int tflags = isptr ? SWIG_POINTER_DISOWN : 0;
777 const size_t esize = PyArray_ITEMSIZE(nparr);
778 PyObject* parent = PyArray_BASE(nparr);
780 int *pelemalloc = &elemalloc;
782 if (!SWIG_IsOK(res)) {
783 SWIG_Error(res,
"failure in swiglal_py_array_objview_" #ACFTYPE
"_setitem()");
791 static void swiglal_py_array_objview_##ACFTYPE##_cast_to_object(
void *from,
void *to, npy_intp n,
void *fromarr,
void *toarr) {
794 assert(fromarr != NULL);
795 PyArrayObject* npfromarr = (PyArrayObject*)fromarr;
796 assert(PyArray_DESCR(npfromarr) != NULL);
797 assert(toarr != NULL);
798 PyArrayObject* nptoarr = (PyArrayObject*)toarr;
799 assert(PyArray_DESCR(nptoarr) != NULL);
802 assert(PyArray_ITEMSIZE(nptoarr) ==
sizeof(PyObject*));
806 char* fromelem = (
void*)from;
807 PyObject** toelem = (PyObject**)to;
809 *toelem = swiglal_py_array_objview_##ACFTYPE##_getitem(fromelem, fromarr);
810 fromelem += PyArray_ITEMSIZE(npfromarr);
817 static PyArray_ArrFuncs swiglal_py_array_objview_##ACFTYPE##_arrfuncs = {
818 {(PyArray_VectorUnaryFunc*)NULL},
819 (PyArray_GetItemFunc*)&swiglal_py_array_objview_##ACFTYPE##_getitem,
820 (PyArray_SetItemFunc*)&swiglal_py_array_objview_##ACFTYPE##_setitem,
821 (PyArray_CopySwapNFunc*)NULL,
822 (PyArray_CopySwapFunc*)&swiglal_py_array_objview_copyswap,
823 (PyArray_CompareFunc*)NULL,
824 (PyArray_ArgFunc*)NULL,
825 (PyArray_DotFunc*)NULL,
826 (PyArray_ScanFunc*)NULL,
827 (PyArray_FromStrFunc*)NULL,
828 (PyArray_NonzeroFunc*)NULL,
829 (PyArray_FillFunc*)NULL,
830 (PyArray_FillWithScalarFunc*)NULL,
831 {(PyArray_SortFunc*)NULL},
832 {(PyArray_ArgSortFunc*)NULL},
834 (PyArray_ScalarKindFunc*)NULL,
836 (
int*)swiglal_py_array_objview_copyswap_cancastto,
847 SWIGINTERN PyArray_Descr* swiglal_py_array_objview_##ACFTYPE##_descr(
const bool isptr, swig_type_info* tinfo,
const int esize) {
850 PyArray_Descr* *pdescr = swiglal_py_array_descr_from_tinfo(isptr, tinfo);
851 if (*pdescr == NULL) {
857 PyArray_DescrProto *proto = PyObject_Malloc(
sizeof(PyArray_DescrProto));
861 PyArray_DescrProto
src = {
862 PyObject_HEAD_INIT(&PyArrayDescr_Type)
863 .typeobj = SwigPyObject_type(),
867 .flags = NPY_LIST_PICKLE | NPY_NEEDS_INIT | NPY_NEEDS_PYAPI | NPY_USE_GETITEM | NPY_USE_SETITEM,
870 .f = &swiglal_py_array_objview_##ACFTYPE##_arrfuncs,
875 int typenum = PyArray_RegisterDataType(proto);
879 if (typenum < 0 || PyArray_RUNTIME_VERSION >= NPY_2_0_API_VERSION) {
880 PyObject_Free(proto);
884 *pdescr = PyArray_DescrFromType(typenum);
906%define %swiglal_py_array_frags(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL, VIEWFRAG, NPYTYPE, NPYDESCR)
909%fragment(%swiglal_array_copyin_frag(ACFTYPE),
"header",
910 fragment=
"swiglal_py_array_helpers", fragment=INFRAG)
912 SWIGINTERN
int %swiglal_array_copyin_func(ACFTYPE)(PyObject* parent,
919 const size_t strides[],
921 swig_type_info *tinfo,
924 PyArrayObject* nparr = NULL;
930 return SWIG_MemoryError;
934 if (PyArray_Converter(obj, (PyObject**)&nparr) != NPY_SUCCEED) {
935 return SWIG_ValueError;
939 if (((
size_t)PyArray_NDIM(nparr)) != ndims) {
940 res = SWIG_ValueError;
944 for (
size_t i = 0; i < ndims; ++i) {
945 if (((
size_t)PyArray_DIM(nparr, i)) != dims[i]) {
946 res = SWIG_ValueError;
953 memset(idx, 0, ndims*
sizeof(npy_intp));
954 for (
size_t i = 0; i < nelem; ++i) {
957 void* elemptr = swiglal_py_get_element_ptr(ptr, esize, ndims, strides, idx);
960 PyObject* objelem = PyArray_GETITEM(nparr, PyArray_GetPtr((PyArrayObject*)nparr, idx));
962 if (!SWIG_IsOK(res)) {
968 swiglal_py_increment_idx(ndims, dims, idx);
982%fragment(%swiglal_array_copyout_frag(ACFTYPE),
"header",
983 fragment=
"swiglal_py_array_helpers", fragment=OUTFRAG)
985 SWIGINTERN PyObject* %swiglal_array_copyout_func(ACFTYPE)(PyObject* parent,
990 const size_t strides[],
992 swig_type_info *tinfo,
995 PyArrayObject* nparr = NULL;
996 npy_intp objdims[ndims];
1006 for (
size_t i = 0; i < ndims; ++i) {
1007 objdims[i] = dims[i];
1012 nparr = (PyArrayObject*)PyArray_EMPTY(ndims, objdims, NPYTYPE, 0);
1013 if (nparr == NULL) {
1018 memset(idx, 0, ndims*
sizeof(npy_intp));
1019 for (
size_t i = 0; i < nelem; ++i) {
1022 void* elemptr = swiglal_py_get_element_ptr(ptr, esize, ndims, strides, idx);
1025 const bool copyobj =
true;
1026 PyObject* objelem = OUTCALL;
1027 PyArray_SETITEM(nparr, PyArray_GetPtr((PyArrayObject*)nparr, idx), objelem);
1031 swiglal_py_increment_idx(ndims, dims, idx);
1035 return (PyObject*)nparr;
1046%fragment(%swiglal_array_viewin_frag(ACFTYPE),
"header",
1047 fragment=
"swiglal_py_array_helpers", fragment=INFRAG)
1049 SWIGINTERN
int %swiglal_array_viewin_func(ACFTYPE)(PyObject* parent,
1056 swig_type_info *tinfo,
1059 PyArrayObject* nparr = NULL;
1064 return SWIG_MemoryError;
1068 if (PyArray_Converter(obj, (PyObject**)&nparr) != NPY_SUCCEED) {
1069 return SWIG_ValueError;
1073 if (((
size_t)PyArray_NDIM(nparr)) != ndims) {
1074 res = SWIG_ValueError;
1079 for (
size_t i = 0; i < ndims; ++i) {
1080 dims[i] = PyArray_DIM(nparr, i);
1084 if (!PyArray_Check(obj)) {
1085 res = SWIG_TypeError;
1091 res = SWIG_TypeError;
1096 if (NPYTYPE == NPY_OBJECT) {
1097 res = SWIG_TypeError;
1102 if (!PyArray_ISCARRAY(nparr)) {
1103 res = SWIG_TypeError;
1108 if (PyArray_TYPE(nparr) != NPYTYPE) {
1109 res = SWIG_TypeError;
1114 if (((
size_t)PyArray_ITEMSIZE(nparr)) != esize) {
1115 res = SWIG_TypeError;
1120 *ptr = PyArray_DATA(nparr);
1122 res = SWIG_ValueError;
1136%fragment(%swiglal_array_viewout_frag(ACFTYPE),
"header",
1137 fragment=
"swiglal_py_array_helpers", fragment=VIEWFRAG, fragment=OUTFRAG)
1139 SWIGINTERN PyObject* %swiglal_array_viewout_func(ACFTYPE)(PyObject* parent,
1143 const size_t dims[],
1144 const size_t strides[],
1146 swig_type_info *tinfo,
1149 PyArrayObject* nparr = NULL;
1150 npy_intp objdims[ndims];
1151 npy_intp objstrides[ndims];
1159 for (
size_t i = 0; i < ndims; ++i) {
1160 objdims[i] = dims[i];
1161 objstrides[i] = strides[i] * esize;
1165 PyArray_Descr* descr = NPYDESCR;
1166 if (descr == NULL) {
1169 nparr = (PyArrayObject*)PyArray_NewFromDescr(&PyArray_Type, descr, ndims, objdims, objstrides, ptr, NPY_ARRAY_WRITEABLE, NULL);
1170 if (nparr == NULL) {
1177 PyArray_SetBaseObject(nparr, parent);
1180 return (PyObject*)nparr;
1194%define %swiglal_py_array_objview_frags(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL)
1195%swiglal_py_array_objview(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL);
1196%swiglal_py_array_frags(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL,
1197 %swiglal_py_array_objview_frag(ACFTYPE),
1198 NPY_OBJECT, %arg(swiglal_py_array_objview_##ACFTYPE##_descr(isptr, tinfo, esize)));
1202%swiglal_py_array_objview_frags(SWIGTYPE,
"swiglal_as_SWIGTYPE",
"swiglal_from_SWIGTYPE",
1203 %arg(swiglal_as_SWIGTYPE(parent, objelem, elemptr, esize, isptr, tinfo, tflags)),
1204 %arg(swiglal_from_SWIGTYPE(parent, copyobj, elemptr, esize, isptr, tinfo, tflags)));
1207%swiglal_py_array_objview_frags(LALchar,
"SWIG_AsLALcharPtrAndSize",
"SWIG_FromLALcharPtr",
1208 %arg(SWIG_AsLALcharPtrAndSize(objelem, %reinterpret_cast(elemptr,
char**), 0, pelemalloc)),
1209 %arg(SWIG_FromLALcharPtr(*%reinterpret_cast(elemptr,
char**))));
1213%define %swiglal_py_array_asvalfrom_frags(
TYPE, NPYTYPE)
1214%swiglal_py_array_frags(
TYPE, SWIG_AsVal_frag(
TYPE), SWIG_From_frag(
TYPE),
1215 %arg(SWIG_AsVal(
TYPE)(objelem, %reinterpret_cast(elemptr,
TYPE*))),
1216 %arg(SWIG_From(
TYPE)(*%reinterpret_cast(elemptr,
TYPE*))),
1217 "swiglal_empty_frag", NPYTYPE, PyArray_DescrFromType(NPYTYPE));
1221%swiglal_py_array_asvalfrom_frags(int8_t, NPY_INT8);
1222%swiglal_py_array_asvalfrom_frags(uint8_t, NPY_UINT8);
1223%swiglal_py_array_asvalfrom_frags(int16_t, NPY_INT16);
1224%swiglal_py_array_asvalfrom_frags(uint16_t, NPY_UINT16);
1225%swiglal_py_array_asvalfrom_frags(int32_t, NPY_INT32);
1226%swiglal_py_array_asvalfrom_frags(uint32_t, NPY_UINT32);
1227%swiglal_py_array_asvalfrom_frags(int64_t, NPY_INT64);
1228%swiglal_py_array_asvalfrom_frags(uint64_t, NPY_UINT64);
1231%swiglal_py_array_asvalfrom_frags(
float, NPY_FLOAT);
1232%swiglal_py_array_asvalfrom_frags(
double, NPY_DOUBLE);
1235%swiglal_py_array_asvalfrom_frags(gsl_complex_float, NPY_CFLOAT);
1236%swiglal_py_array_asvalfrom_frags(gsl_complex, NPY_CDOUBLE);
1237%swiglal_py_array_asvalfrom_frags(
COMPLEX8, NPY_CFLOAT);
1238%swiglal_py_array_asvalfrom_frags(
COMPLEX16, NPY_CDOUBLE);
static size_t hash(const char *s)
static _LAL_INLINE_ int lt(void *params, const void *a, const void *b, int(*compar)(void *, const void *, const void *))
#define crect(re, im)
Construct a COMPLEX16 from real and imaginary parts.
double complex COMPLEX16
Double-precision floating-point complex number (16 bytes total)
#define crectf(re, im)
Construct a COMPLEX8 from real and imaginary parts.
float complex COMPLEX8
Single-precision floating-point complex number (8 bytes total)
int XLALSetErrno(int errnum)
Sets the XLAL error number to errnum, returns the new value.
@ XLAL_ENOSYS
Function not implemented.