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
65#if defined(import_array1)
74#define swiglal_not_empty(v) ((v) != NULL)
79#define swiglal_self() (self)
80#define swiglal_no_self() (NULL)
85#define swiglal_1starg() (obj0)
90SWIGINTERNINLINE PyObject* swiglal_get_reference(PyObject* v) { Py_XINCREF(v);
return v; }
96SWIGINTERN PyObject* swiglal_py_remove_first_output(PyObject *result) {
97 PySequence_DelItem(result, 0);
98 if (PySequence_Size(result) == 1) {
99 PyObject *obj = result;
100 result = PySequence_GetItem(obj, 0);
105#define swiglal_maybe_return_int() \
106 if (PySequence_Check(resultobj) && PySequence_Size(resultobj) > 1) resultobj = swiglal_py_remove_first_output(resultobj)
111#define swiglal_null_ptr(v) ((v) == Py_None)
116SWIGINTERN
int swiglal_output_stdouterr(
void) {
119 fflush(swiglal_tmp_stdout);
120 rewind(swiglal_tmp_stdout);
121 fflush(swiglal_tmp_stderr);
122 rewind(swiglal_tmp_stderr);
127 while (fgets(buf,
sizeof(buf), swiglal_tmp_stdout) != NULL) {
128 PySys_WriteStdout(
"%s", buf);
135 while (fgets(buf,
sizeof(buf), swiglal_tmp_stderr) != NULL) {
136 PySys_WriteStderr(
"%s", buf);
141 fclose(swiglal_tmp_stdout);
142 fclose(swiglal_tmp_stderr);
157%define %swiglal_py_ury_op(NAME, FUNCTYPE, SLOT)
158%pythonmaybecall *::__##NAME##__;
159%feature(
"python:slot", #SLOT, functype=#FUNCTYPE) *::__##NAME##__;
160%feature(
"kwargs", 0) *::__##NAME##__;
162%swiglal_py_ury_op(
float, unaryfunc, nb_float);
163%swiglal_py_ury_op(
hash, hashfunc, tp_hash);
164%swiglal_py_ury_op(
int, unaryfunc, nb_int);
165%swiglal_py_ury_op(
long, unaryfunc, nb_long);
166%swiglal_py_ury_op(nonzero, inquiry, nb_nonzero);
167%swiglal_py_ury_op(repr, reprfunc, tp_repr);
168%swiglal_py_ury_op(str, reprfunc, tp_str);
171%define %swiglal_py_urn_op(NAME, FUNCTYPE, SLOT)
172%newobject *::__##NAME##__;
173%pythonmaybecall *::__##NAME##__;
174%feature(
"python:slot", #SLOT, functype=#FUNCTYPE) *::__##NAME##__;
175%feature(
"kwargs", 0) *::__##NAME##__;
177%swiglal_py_urn_op(abs, unaryfunc, nb_absolute);
178%swiglal_py_urn_op(neg, unaryfunc, nb_negative);
179%swiglal_py_urn_op(pos, unaryfunc, nb_positive);
184%define %swiglal_py_bin_op(NAME, FUNCTYPE, SLOT)
185%newobject *::__##NAME##__;
186%pythonmaybecall *::__##NAME##__;
187%feature(
"python:slot", #SLOT, functype=#FUNCTYPE) *::__##NAME##__;
188%feature(
"kwargs", 0) *::__##NAME##__;
189%ignore *::__r##NAME##__;
191%swiglal_py_bin_op(add, binaryfunc, nb_add);
192%swiglal_py_bin_op(and, binaryfunc, nb_and);
193%swiglal_py_bin_op(div, binaryfunc, nb_divide);
194%swiglal_py_bin_op(lshift, binaryfunc, nb_lshift);
195%swiglal_py_bin_op(mod, binaryfunc, nb_remainder);
196%swiglal_py_bin_op(mul, binaryfunc, nb_multiply);
197%swiglal_py_bin_op(or, binaryfunc, nb_or);
198%swiglal_py_bin_op(pow, ternaryfunc, nb_power);
199%swiglal_py_bin_op(rshift, binaryfunc, nb_rshift);
200%swiglal_py_bin_op(sub, binaryfunc, nb_subtract);
201%swiglal_py_bin_op(xor, binaryfunc, nb_xor);
204%typemap(in)
void* SWIGLAL_OP_POW_3RDARG {
205 if ($input != Py_None) {
206 %argument_fail(SWIG_TypeError,
"$type", $symname, $argnum);
213%typemap(out, noblock=1) long __hash__ {
214 %set_output(PyLong_FromLong($1));
218%typemap(in, numinputs=0, noblock=1) int SWIGLAL_CMP_OP_RETN_HACK "";
219%define %swiglal_py_cmp_op(NAME, COMPTYPE)
220%pythonmaybecall *::__
##NAME##__;
221%feature(
"python:compare", #COMPTYPE) *::__##NAME##__;
222%feature(
"kwargs", 0) *::__##NAME##__;
223%feature(
"new", 1) *::__##NAME##__;
224%typemap(out, noblock=1, fragment=SWIG_From_frag(
bool))
bool __##NAME##__ {
225 return SWIG_From_bool($1);
227%typemap(freearg, noblock=1) int SWIGLAL_CMP_OP_RETN_HACK {
229 Py_INCREF(Py_NotImplemented);
230 return Py_NotImplemented;
233%swiglal_py_cmp_op(eq, Py_EQ);
234%swiglal_py_cmp_op(ge, Py_GE);
235%swiglal_py_cmp_op(gt, Py_GT);
236%swiglal_py_cmp_op(le, Py_LE);
237%swiglal_py_cmp_op(
lt, Py_LT);
238%swiglal_py_cmp_op(ne, Py_NE);
253%define %swiglal_struct_extend_specific(TAGNAME, OPAQUE, DTORFUNC)
259 struct TAGNAME *__copy__() {
260 return %swiglal_new_copy(*$self,
struct TAGNAME);
265 struct TAGNAME *__copy__() {
275#if !OPAQUE && #DTORFUNC == ""
277 %typemap(in, noblock=1) const
void *memo "";
278 struct TAGNAME *__deepcopy__(const
void *memo) {
279 return %swiglal_new_copy(*$self,
struct TAGNAME);
281 %clear
const void *memo;
285 %typemap(in, noblock=1) const
void *memo "";
286 struct TAGNAME *__deepcopy__(const
void *memo) {
290 %clear
const void *memo;
301%swig_cplxflt_convn(gsl_complex_float, gsl_complex_float_rect, GSL_REAL, GSL_IMAG);
302%swig_cplxdbl_convn(gsl_complex, gsl_complex_rect, GSL_REAL, GSL_IMAG);
303%typemaps_primitive(%checkcode(CPLXFLT), gsl_complex_float);
304%typemaps_primitive(%checkcode(CPLXDBL), gsl_complex);
309%typemaps_primitive(%checkcode(CPLXFLT),
COMPLEX8);
310%typemaps_primitive(%checkcode(CPLXDBL),
COMPLEX16);
318%fragment(SWIG_AsVal_frag(
long));
319%fragment(SWIG_AsVal_frag(
unsigned long));
320%fragment(SWIG_AsVal_frag(
float));
321%fragment(SWIG_AsVal_frag(
double));
322%fragment(SWIG_AsVal_frag(
COMPLEX8));
325SWIGINTERN
int swiglal_SWIG_AsVal_long(PyObject *obj,
long* val) {
326 if (PyArray_IsScalar(obj, Integer)) {
329 PyArray_Descr *longDescr = PyArray_DescrFromType(NPY_LONG);
330 PyArray_CastScalarToCtype(obj, (
void*)val, longDescr);
331 Py_DECREF(longDescr);
336 return SWIG_AsVal_long(obj, val);
338SWIGINTERN
int swiglal_SWIG_AsVal_unsigned_SS_long(PyObject *obj,
unsigned long *val) {
339 if (PyArray_IsScalar(obj, Integer)) {
342 PyArray_Descr *ulongDescr = PyArray_DescrFromType(NPY_ULONG);
343 PyArray_CastScalarToCtype(obj, (
void*)val, ulongDescr);
344 Py_DECREF(ulongDescr);
349 return SWIG_AsVal_unsigned_SS_long(obj, val);
351SWIGINTERN
int swiglal_SWIG_AsVal_float(PyObject *obj,
float* val) {
352 if (PyArray_IsScalar(obj, Integer) || PyArray_IsScalar(obj, Floating)) {
355 PyArray_Descr *floatDescr = PyArray_DescrFromType(NPY_FLOAT);
356 PyArray_CastScalarToCtype(obj, (
void*)val, floatDescr);
357 Py_DECREF(floatDescr);
362 return SWIG_AsVal_float(obj, val);
364SWIGINTERN
int swiglal_SWIG_AsVal_double(PyObject *obj,
double* val) {
365 if (PyArray_IsScalar(obj, Integer) || PyArray_IsScalar(obj, Floating)) {
368 PyArray_Descr *doubleDescr = PyArray_DescrFromType(NPY_DOUBLE);
369 PyArray_CastScalarToCtype(obj, (
void*)val, doubleDescr);
370 Py_DECREF(doubleDescr);
375 return SWIG_AsVal_double(obj, val);
377SWIGINTERN
int swiglal_SWIG_AsVal_COMPLEX8(PyObject *obj,
COMPLEX8* val) {
378 if (PyArray_IsScalar(obj, Integer) || PyArray_IsScalar(obj, Floating) || PyArray_IsScalar(obj, ComplexFloating)) {
381 PyArray_Descr *floatComplexDescr = PyArray_DescrFromType(NPY_COMPLEX64);
382 PyArray_CastScalarToCtype(obj, (
void*)val, floatComplexDescr);
383 Py_DECREF(floatComplexDescr);
388 return SWIG_AsVal_COMPLEX8(obj, val);
390SWIGINTERN
int swiglal_SWIG_AsVal_COMPLEX16(PyObject *obj,
COMPLEX16* val) {
391 if (PyArray_IsScalar(obj, Integer) || PyArray_IsScalar(obj, Floating) || PyArray_IsScalar(obj, ComplexFloating)) {
394 PyArray_Descr *doubleComplexDescr = PyArray_DescrFromType(NPY_COMPLEX128);
395 PyArray_CastScalarToCtype(obj, (
void*)val, doubleComplexDescr);
396 Py_DECREF(doubleComplexDescr);
401 return SWIG_AsVal_COMPLEX16(obj, val);
403#define SWIG_AsVal_long(obj, val) swiglal_SWIG_AsVal_long(obj, val)
404#define SWIG_AsVal_unsigned_SS_long(obj, val) swiglal_SWIG_AsVal_unsigned_SS_long(obj, val)
405#define SWIG_AsVal_float(obj, val) swiglal_SWIG_AsVal_float(obj, val)
406#define SWIG_AsVal_double(obj, val) swiglal_SWIG_AsVal_double(obj, val)
407#define SWIG_AsVal_COMPLEX8(obj, val) swiglal_SWIG_AsVal_COMPLEX8(obj, val)
408#define SWIG_AsVal_COMPLEX16(obj, val) swiglal_SWIG_AsVal_COMPLEX16(obj, val)
412%typemap(in)
struct tm* (
struct tm temptm) {
415 memset(&temptm, 0,
sizeof(temptm));
417 if ($input != NULL && $input != Py_None) {
420 if (!PySequence_Check($input)) {
421 %argument_fail(SWIG_ValueError,
"$type (not a sequence)", $symname, $argnum);
423 if (PySequence_Size($input) != 9) {
424 %argument_fail(SWIG_ValueError,
"$type (must have 9 elements)", $symname, $argnum);
426 PyObject *seq = PySequence_Fast($input,
"$type (not a sequence)");
427 temptm.tm_year = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 0)),
int);
428 temptm.tm_mon = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 1)),
int);
429 temptm.tm_mday = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 2)),
int);
430 temptm.tm_hour = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 3)),
int);
431 temptm.tm_min = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 4)),
int);
432 temptm.tm_sec = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 5)),
int);
433 temptm.tm_wday = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 6)),
int);
434 temptm.tm_yday = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 7)),
int);
435 temptm.tm_isdst = %static_cast(PyInt_AsLong(PySequence_Fast_GET_ITEM($input, 8)),
int);
437 if (PyErr_Occurred()) {
446 temptm.tm_year -= 1900;
448 temptm.tm_wday = (temptm.tm_wday + 8) % 7;
455%typemap(freearg)
struct tm*
"";
456%typemap(out)
struct tm* {
465 $1->tm_wday = ($1->tm_wday + 6) % 7;
469 $result = Py_BuildValue(
"(iiiiiiiii)",
470 $1->tm_year, $1->tm_mon, $1->tm_mday,
471 $1->tm_hour, $1->tm_min, $1->tm_sec,
472 $1->tm_wday, $1->tm_yday, $1->tm_isdst);
486static PyObject *parent_map = NULL;
490SWIGINTERN
void swiglal_store_parent(
void* ptr, PyObject* parent) {
491 PyObject *pyerr_type = NULL, *pyerr_value = NULL, *pyerr_traceback = NULL;
492 PyErr_Fetch(&pyerr_type, &pyerr_value, &pyerr_traceback);
495 assert(parent != NULL);
496 PyObject* key = PyLong_FromVoidPtr(ptr);
498 PyObject* parent_tuple = PyDict_GetItem(parent_map, key);
499 if (parent_tuple == NULL) {
500 const long ref_count = 1;
501 parent_tuple = Py_BuildValue(
"Ol", parent, ref_count);
502 assert(parent_tuple != NULL);
503 ecode = PyDict_SetItem(parent_map, key, parent_tuple);
505 Py_CLEAR(parent_tuple);
508 Py_INCREF(parent_tuple);
509 PyObject* stored_parent = NULL;
511 ecode = PyArg_ParseTuple(parent_tuple,
"Ol", &stored_parent, &ref_count);
514 Py_INCREF(stored_parent);
515 Py_CLEAR(parent_tuple);
516 parent_tuple = Py_BuildValue(
"Nl", stored_parent, ref_count);
517 assert(parent_tuple != NULL);
518 ecode = PyDict_SetItem(parent_map, key, parent_tuple);
520 Py_CLEAR(parent_tuple);
523 assert(PyErr_Occurred() == NULL);
524 PyErr_Restore(pyerr_type, pyerr_value, pyerr_traceback);
531SWIGINTERN
bool swiglal_release_parent(
void *ptr) {
532 PyObject *pyerr_type = NULL, *pyerr_value = NULL, *pyerr_traceback = NULL;
533 PyErr_Fetch(&pyerr_type, &pyerr_value, &pyerr_traceback);
537 PyObject* key = PyLong_FromVoidPtr(ptr);
539 PyObject* parent_tuple = PyDict_GetItem(parent_map, key);
540 if (parent_tuple != NULL) {
541 Py_INCREF(parent_tuple);
543 PyObject* stored_parent = NULL;
545 ecode = PyArg_ParseTuple(parent_tuple,
"Ol", &stored_parent, &ref_count);
547 Py_INCREF(stored_parent);
548 Py_CLEAR(parent_tuple);
549 if (--ref_count == 0) {
550 ecode = PyDict_DelItem(parent_map, key);
554 parent_tuple = Py_BuildValue(
"Ol", stored_parent, ref_count);
555 ecode = PyDict_SetItem(parent_map, key, parent_tuple);
557 Py_CLEAR(parent_tuple);
559 Py_CLEAR(stored_parent);
562 assert(PyErr_Occurred() == NULL);
563 PyErr_Restore(pyerr_type, pyerr_value, pyerr_traceback);
575 const char *
const module_name =
"swiglal_runtime_data";
576 const char *
const parent_map_name =
"parent_map";
577#if PY_VERSION_HEX >= 0x03000000
578 PyObject* module = PyImport_AddModule(module_name);
580 PyObject* module = Py_InitModule(module_name, NULL);
582 assert(module != NULL);
583 if (PyObject_HasAttrString(module, parent_map_name)) {
584 parent_map = PyObject_GetAttrString(module, parent_map_name);
587 parent_map = PyDict_New();
588 PyObject_SetAttrString(module, parent_map_name, parent_map);
590 assert(parent_map != NULL);
591 Py_INCREF(parent_map);
604%fragment(
"swiglal_py_array_helpers",
"header") {
607 void* swiglal_py_get_element_ptr(
void* ptr,
610 const size_t strides[],
614 for (
size_t j = 0; j < ndims; ++j) {
615 elemidx += ((size_t)idx[j]) * strides[j];
617 return %reinterpret_cast(%reinterpret_cast(ptr,
char*) + elemidx*esize,
void*);
621 void swiglal_py_increment_idx(
const size_t ndims,
625 for (
int j = ((
int)ndims) - 1; j >= 0; --j) {
626 if (++idx[j] < ((npy_intp)dims[j])) {
636%fragment(
"swiglal_py_array_objview",
"header") {
641 swig_type_info* tinfo;
642 PyArray_Descr* descr_noptr;
643 PyArray_Descr* descr_isptr;
644 } swiglal_py_array_type_pair;
650 static swiglal_py_array_type_pair swiglal_py_array_types[
sizeof(swig_types) /
sizeof(swig_types[0])];
654 SWIGINTERN PyArray_Descr** swiglal_py_array_descr_from_tinfo(
const bool isptr, swig_type_info* tinfo) {
656 while (swiglal_py_array_types[i].tinfo != NULL && swiglal_py_array_types[i].tinfo != tinfo)
658 if (swiglal_py_array_types[i].tinfo == NULL)
659 swiglal_py_array_types[i].tinfo = tinfo;
660 return isptr ? &swiglal_py_array_types[i].descr_isptr : &swiglal_py_array_types[i].descr_noptr;
665 SWIGINTERN
void swiglal_py_array_tinfo_from_descr(
bool *isptr, swig_type_info** tinfo, PyArray_Descr* descr) {
667 while ( ( swiglal_py_array_types[i].descr_noptr != NULL || swiglal_py_array_types[i].descr_isptr != NULL ) &&
668 ( swiglal_py_array_types[i].descr_noptr != descr && swiglal_py_array_types[i].descr_isptr != descr ) )
670 *isptr = (swiglal_py_array_types[i].descr_isptr == descr);
671 *tinfo = swiglal_py_array_types[i].tinfo;
675 static int swiglal_py_array_objview_copyswap_cancastto[2] = {NPY_OBJECT, NPY_NOTYPE};
678 static void swiglal_py_array_objview_copyswap(
void*
dst,
void*
src,
int swap,
void* arr) {
682 PyArrayObject* nparr = (PyArrayObject*)arr;
683 assert(PyArray_DESCR(nparr) != NULL);
687 memcpy(
dst,
src, PyArray_ITEMSIZE(nparr));
692 const size_t n = PyArray_ITEMSIZE(nparr) / 2;
695 b =
a + (PyArray_ITEMSIZE(nparr)-1);
696 for (
size_t i = 0; i < n; i++) {
708#define %swiglal_py_array_objview_frag(ACFTYPE) "swiglal_py_array_objview_" %str(ACFTYPE)
712#define %swiglal_py_array_objview_init_frag(ACFTYPE) "swiglal_py_array_objview_init_" %str(ACFTYPE)
716%define %swiglal_py_array_objview(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL)
719%fragment(%swiglal_py_array_objview_init_frag(ACFTYPE),
"init") {
720 swiglal_py_array_objview_##ACFTYPE##_arrfuncs.cast[NPY_OBJECT] =
721 (PyArray_VectorUnaryFunc*)swiglal_py_array_objview_##ACFTYPE##_cast_to_object;
725%fragment(%swiglal_py_array_objview_frag(ACFTYPE),
"header",
726 fragment=
"swiglal_py_array_objview",
727 fragment=%swiglal_py_array_objview_init_frag(ACFTYPE),
728 fragment=INFRAG, fragment=OUTFRAG)
732 static PyObject* swiglal_py_array_objview_##ACFTYPE##_getitem(
void* elemptr,
void* arr) {
735 assert(elemptr != NULL);
737 PyArrayObject* nparr = (PyArrayObject*)arr;
738 assert(PyArray_DESCR(nparr) != NULL);
742 swig_type_info* tinfo = NULL;
743 swiglal_py_array_tinfo_from_descr(&isptr, &tinfo, PyArray_DESCR(nparr));
744 assert(tinfo != NULL);
747 const bool copyobj =
false;
748 const size_t esize = PyArray_ITEMSIZE(nparr);
749 const int tflags = 0;
750 PyObject* parent = PyArray_BASE(nparr);
756 static int swiglal_py_array_objview_##ACFTYPE##_setitem(PyObject* objelem,
void* elemptr,
void* arr) {
759 assert(elemptr != NULL);
761 PyArrayObject* nparr = (PyArrayObject*)arr;
762 assert(PyArray_DESCR(nparr) != NULL);
766 swig_type_info* tinfo = NULL;
767 swiglal_py_array_tinfo_from_descr(&isptr, &tinfo, PyArray_DESCR(nparr));
768 assert(tinfo != NULL);
778 const int tflags = isptr ? SWIG_POINTER_DISOWN : 0;
781 const size_t esize = PyArray_ITEMSIZE(nparr);
782 PyObject* parent = PyArray_BASE(nparr);
784 int *pelemalloc = &elemalloc;
786 if (!SWIG_IsOK(res)) {
787 SWIG_Error(res,
"failure in swiglal_py_array_objview_" #ACFTYPE
"_setitem()");
795 static void swiglal_py_array_objview_##ACFTYPE##_cast_to_object(
void *from,
void *to, npy_intp n,
void *fromarr,
void *toarr) {
798 assert(fromarr != NULL);
799 PyArrayObject* npfromarr = (PyArrayObject*)fromarr;
800 assert(PyArray_DESCR(npfromarr) != NULL);
801 assert(toarr != NULL);
802 PyArrayObject* nptoarr = (PyArrayObject*)toarr;
803 assert(PyArray_DESCR(nptoarr) != NULL);
806 assert(PyArray_ITEMSIZE(nptoarr) ==
sizeof(PyObject*));
810 char* fromelem = (
void*)from;
811 PyObject** toelem = (PyObject**)to;
813 *toelem = swiglal_py_array_objview_##ACFTYPE##_getitem(fromelem, fromarr);
814 fromelem += PyArray_ITEMSIZE(npfromarr);
821 static PyArray_ArrFuncs swiglal_py_array_objview_##ACFTYPE##_arrfuncs = {
822 {(PyArray_VectorUnaryFunc*)NULL},
823 (PyArray_GetItemFunc*)&swiglal_py_array_objview_##ACFTYPE##_getitem,
824 (PyArray_SetItemFunc*)&swiglal_py_array_objview_##ACFTYPE##_setitem,
825 (PyArray_CopySwapNFunc*)NULL,
826 (PyArray_CopySwapFunc*)&swiglal_py_array_objview_copyswap,
827 (PyArray_CompareFunc*)NULL,
828 (PyArray_ArgFunc*)NULL,
829 (PyArray_DotFunc*)NULL,
830 (PyArray_ScanFunc*)NULL,
831 (PyArray_FromStrFunc*)NULL,
832 (PyArray_NonzeroFunc*)NULL,
833 (PyArray_FillFunc*)NULL,
834 (PyArray_FillWithScalarFunc*)NULL,
835 {(PyArray_SortFunc*)NULL},
836 {(PyArray_ArgSortFunc*)NULL},
838 (PyArray_ScalarKindFunc*)NULL,
840 (
int*)swiglal_py_array_objview_copyswap_cancastto,
851 SWIGINTERN PyArray_Descr* swiglal_py_array_objview_##ACFTYPE##_descr(
const bool isptr, swig_type_info* tinfo,
const int esize) {
854 PyArray_Descr* *pdescr = swiglal_py_array_descr_from_tinfo(isptr, tinfo);
855 if (*pdescr == NULL) {
861 PyArray_DescrProto *proto = PyObject_Malloc(
sizeof(PyArray_DescrProto));
865 PyArray_DescrProto
src = {
866 PyObject_HEAD_INIT(&PyArrayDescr_Type)
867#if SWIG_VERSION >= 0x040400
868 .typeobj = SwigPyObject_Type(),
870 .typeobj = SwigPyObject_type(),
875 .flags = NPY_LIST_PICKLE | NPY_NEEDS_INIT | NPY_NEEDS_PYAPI | NPY_USE_GETITEM | NPY_USE_SETITEM,
878 .f = &swiglal_py_array_objview_##ACFTYPE##_arrfuncs,
883 int typenum = PyArray_RegisterDataType(proto);
887 if (typenum < 0 || PyArray_RUNTIME_VERSION >= NPY_2_0_API_VERSION) {
888 PyObject_Free(proto);
892 *pdescr = PyArray_DescrFromType(typenum);
914%define %swiglal_py_array_frags(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL, VIEWFRAG, NPYTYPE, NPYDESCR)
917%fragment(%swiglal_array_copyin_frag(ACFTYPE),
"header",
918 fragment=
"swiglal_py_array_helpers", fragment=INFRAG)
920 SWIGINTERN
int %swiglal_array_copyin_func(ACFTYPE)(PyObject* parent,
927 const size_t strides[],
929 swig_type_info *tinfo,
932 PyArrayObject* nparr = NULL;
938 return SWIG_MemoryError;
942 if (PyArray_Converter(obj, (PyObject**)&nparr) != NPY_SUCCEED) {
943 return SWIG_ValueError;
947 if (((
size_t)PyArray_NDIM(nparr)) != ndims) {
948 res = SWIG_ValueError;
952 for (
size_t i = 0; i < ndims; ++i) {
953 if (((
size_t)PyArray_DIM(nparr, i)) != dims[i]) {
954 res = SWIG_ValueError;
961 memset(idx, 0, ndims*
sizeof(npy_intp));
962 for (
size_t i = 0; i < nelem; ++i) {
965 void* elemptr = swiglal_py_get_element_ptr(ptr, esize, ndims, strides, idx);
968 PyObject* objelem = PyArray_GETITEM(nparr, PyArray_GetPtr((PyArrayObject*)nparr, idx));
970 if (!SWIG_IsOK(res)) {
976 swiglal_py_increment_idx(ndims, dims, idx);
990%fragment(%swiglal_array_copyout_frag(ACFTYPE),
"header",
991 fragment=
"swiglal_py_array_helpers", fragment=OUTFRAG)
993 SWIGINTERN PyObject* %swiglal_array_copyout_func(ACFTYPE)(PyObject* parent,
998 const size_t strides[],
1000 swig_type_info *tinfo,
1003 PyArrayObject* nparr = NULL;
1004 npy_intp objdims[ndims];
1005 npy_intp idx[ndims];
1014 for (
size_t i = 0; i < ndims; ++i) {
1015 objdims[i] = dims[i];
1020 nparr = (PyArrayObject*)PyArray_EMPTY(ndims, objdims, NPYTYPE, 0);
1021 if (nparr == NULL) {
1026 memset(idx, 0, ndims*
sizeof(npy_intp));
1027 for (
size_t i = 0; i < nelem; ++i) {
1030 void* elemptr = swiglal_py_get_element_ptr(ptr, esize, ndims, strides, idx);
1033 const bool copyobj =
true;
1034 PyObject* objelem = OUTCALL;
1035 PyArray_SETITEM(nparr, PyArray_GetPtr((PyArrayObject*)nparr, idx), objelem);
1039 swiglal_py_increment_idx(ndims, dims, idx);
1043 return (PyObject*)nparr;
1054%fragment(%swiglal_array_viewin_frag(ACFTYPE),
"header",
1055 fragment=
"swiglal_py_array_helpers", fragment=INFRAG)
1057 SWIGINTERN
int %swiglal_array_viewin_func(ACFTYPE)(PyObject* parent,
1064 swig_type_info *tinfo,
1067 PyArrayObject* nparr = NULL;
1072 return SWIG_MemoryError;
1076 if (PyArray_Converter(obj, (PyObject**)&nparr) != NPY_SUCCEED) {
1077 return SWIG_ValueError;
1081 if (((
size_t)PyArray_NDIM(nparr)) != ndims) {
1082 res = SWIG_ValueError;
1087 for (
size_t i = 0; i < ndims; ++i) {
1088 dims[i] = PyArray_DIM(nparr, i);
1092 if (!PyArray_Check(obj)) {
1093 res = SWIG_TypeError;
1099 res = SWIG_TypeError;
1104 if (NPYTYPE == NPY_OBJECT) {
1105 res = SWIG_TypeError;
1110 if (!PyArray_ISCARRAY(nparr)) {
1111 res = SWIG_TypeError;
1116 if (PyArray_TYPE(nparr) != NPYTYPE) {
1117 res = SWIG_TypeError;
1122 if (((
size_t)PyArray_ITEMSIZE(nparr)) != esize) {
1123 res = SWIG_TypeError;
1128 *ptr = PyArray_DATA(nparr);
1130 res = SWIG_ValueError;
1144%fragment(%swiglal_array_viewout_frag(ACFTYPE),
"header",
1145 fragment=
"swiglal_py_array_helpers", fragment=VIEWFRAG, fragment=OUTFRAG)
1147 SWIGINTERN PyObject* %swiglal_array_viewout_func(ACFTYPE)(PyObject* parent,
1151 const size_t dims[],
1152 const size_t strides[],
1154 swig_type_info *tinfo,
1157 PyArrayObject* nparr = NULL;
1158 npy_intp objdims[ndims];
1159 npy_intp objstrides[ndims];
1167 for (
size_t i = 0; i < ndims; ++i) {
1168 objdims[i] = dims[i];
1169 objstrides[i] = strides[i] * esize;
1173 PyArray_Descr* descr = NPYDESCR;
1174 if (descr == NULL) {
1177 nparr = (PyArrayObject*)PyArray_NewFromDescr(&PyArray_Type, descr, ndims, objdims, objstrides, ptr, NPY_ARRAY_WRITEABLE, NULL);
1178 if (nparr == NULL) {
1185 PyArray_SetBaseObject(nparr, parent);
1188 return (PyObject*)nparr;
1202%define %swiglal_py_array_objview_frags(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL)
1203%swiglal_py_array_objview(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL);
1204%swiglal_py_array_frags(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL,
1205 %swiglal_py_array_objview_frag(ACFTYPE),
1206 NPY_OBJECT, %arg(swiglal_py_array_objview_##ACFTYPE##_descr(isptr, tinfo, esize)));
1210%swiglal_py_array_objview_frags(SWIGTYPE,
"swiglal_as_SWIGTYPE",
"swiglal_from_SWIGTYPE",
1211 %arg(swiglal_as_SWIGTYPE(parent, objelem, elemptr, esize, isptr, tinfo, tflags)),
1212 %arg(swiglal_from_SWIGTYPE(parent, copyobj, elemptr, esize, isptr, tinfo, tflags)));
1215%swiglal_py_array_objview_frags(LALchar,
"SWIG_AsLALcharPtrAndSize",
"SWIG_FromLALcharPtr",
1216 %arg(SWIG_AsLALcharPtrAndSize(objelem, %reinterpret_cast(elemptr,
char**), 0, pelemalloc)),
1217 %arg(SWIG_FromLALcharPtr(*%reinterpret_cast(elemptr,
char**))));
1221%define %swiglal_py_array_asvalfrom_frags(
TYPE, NPYTYPE)
1222%swiglal_py_array_frags(
TYPE, SWIG_AsVal_frag(
TYPE), SWIG_From_frag(
TYPE),
1223 %arg(SWIG_AsVal(
TYPE)(objelem, %reinterpret_cast(elemptr,
TYPE*))),
1224 %arg(SWIG_From(
TYPE)(*%reinterpret_cast(elemptr,
TYPE*))),
1225 "swiglal_empty_frag", NPYTYPE, PyArray_DescrFromType(NPYTYPE));
1229%swiglal_py_array_asvalfrom_frags(int8_t, NPY_INT8);
1230%swiglal_py_array_asvalfrom_frags(uint8_t, NPY_UINT8);
1231%swiglal_py_array_asvalfrom_frags(int16_t, NPY_INT16);
1232%swiglal_py_array_asvalfrom_frags(uint16_t, NPY_UINT16);
1233%swiglal_py_array_asvalfrom_frags(int32_t, NPY_INT32);
1234%swiglal_py_array_asvalfrom_frags(uint32_t, NPY_UINT32);
1235%swiglal_py_array_asvalfrom_frags(int64_t, NPY_INT64);
1236%swiglal_py_array_asvalfrom_frags(uint64_t, NPY_UINT64);
1239%swiglal_py_array_asvalfrom_frags(
float, NPY_FLOAT);
1240%swiglal_py_array_asvalfrom_frags(
double, NPY_DOUBLE);
1243%swiglal_py_array_asvalfrom_frags(gsl_complex_float, NPY_CFLOAT);
1244%swiglal_py_array_asvalfrom_frags(gsl_complex, NPY_CDOUBLE);
1245%swiglal_py_array_asvalfrom_frags(
COMPLEX8, NPY_CFLOAT);
1246%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.