Commit 48d0f7f845aabf14786ea7563c180f6204bb48ba

Authored by Jürgen Knödlseder
1 parent ee567a31

Resolve more SWIG warnings

inst/cta/pyext/GCTAResponseTable.i
1 1 /***************************************************************************
2 2 * GCTAResponseTable.i - CTA response table class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2012-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2012-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -36,76 +36,6 @@
36 36  
37 37  
38 38 /***********************************************************************//**
39   - * @brief Tuple to index conversion to provide pixel access.
40   - *
41   - * The following function provides conversion between a Python tuple and
42   - * an integer array. This allows CTAResponseTable pixel access via tuples,
43   - * such as in a[3,5,10] = 10.0 or c = a[2,9].
44   - ***************************************************************************/
45   -%{
46   -static int rsp_table_tuple(PyObject *input, int *ptr) {
47   - if (PySequence_Check(input)) {
48   - int size = PyObject_Length(input);
49   - if (size > 2) {
50   - PyErr_SetString(PyExc_ValueError,"Too many arguments in tuple");
51   - return 0;
52   - }
53   - ptr[0] = size;
54   - for (int i = 0; i < size; i++) {
55   - PyObject *o = PySequence_GetItem(input,i);
56   - if (!PyInt_Check(o)) {
57   - Py_XDECREF(o);
58   - PyErr_SetString(PyExc_ValueError,"Expecting a tuple of integers");
59   - return 0;
60   - }
61   - ptr[i+1] = (int)PyInt_AsLong(o);
62   - Py_DECREF(o);
63   - }
64   - return 1;
65   - }
66   - else {
67   - ptr[0] = 1;
68   - if (!PyInt_Check(input)) {
69   - PyErr_SetString(PyExc_ValueError,"Expecting an integer");
70   - return 0;
71   - }
72   - ptr[1] = (int)PyInt_AsLong(input);
73   - return 1;
74   - }
75   -}
76   -%}
77   -
78   -// This is the typemap that makes use of the function defined above
79   -%typemap(in) int GCTAResponseTableInx[ANY](int temp[3]) {
80   - if (!rsp_table_tuple($input,temp)) {
81   - return NULL;
82   - }
83   - $1 = &temp[0];
84   -}
85   -
86   -// This typecheck verifies that all arguments are integers. The typecheck
87   -// is needed for using "int GCTAResponseTableInx" in overloaded methods.
88   -%typemap(typecheck) int GCTAResponseTableInx[ANY] {
89   - $1 = 1;
90   - if (PySequence_Check($input)) {
91   - int size = PyObject_Length($input);
92   - for (int i = 0; i < size; i++) {
93   - PyObject *o = PySequence_GetItem($input,i);
94   - if (!PyInt_Check(o)) {
95   - $1 = 0;
96   - break;
97   - }
98   - }
99   - }
100   - else {
101   - if (!PyInt_Check($input)) {
102   - $1 = 0;
103   - }
104   - }
105   -}
106   -
107   -
108   -/***********************************************************************//**
109 39 * @class GCTAResponseTable
110 40 *
111 41 * @brief Interface for the CTA response table class
... ... @@ -171,20 +101,20 @@ public:
171 101 * @brief GCTAResponse class extension
172 102 ***************************************************************************/
173 103 %extend GCTAResponseTable {
174   - double __getitem__(int GCTAResponseTableInx[]) {
175   - if (GCTAResponseTableInx[0] == 1) {
176   - return (*self)(GCTAResponseTableInx[1]);
  104 + double __getitem__(int GTuple1D2D[]) {
  105 + if (GTuple1D2D[0] == 1) {
  106 + return (*self)(GTuple1D2D[1]);
177 107 }
178 108 else {
179   - return (*self)(GCTAResponseTableInx[1], GCTAResponseTableInx[2]);
  109 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
180 110 }
181 111 }
182   - void __setitem__(int GCTAResponseTableInx[], double value) {
183   - if (GCTAResponseTableInx[0] == 1) {
184   - (*self)(GCTAResponseTableInx[1]) = value;
  112 + void __setitem__(int GTuple1D2D[], double value) {
  113 + if (GTuple1D2D[0] == 1) {
  114 + (*self)(GTuple1D2D[1]) = value;
185 115 }
186 116 else {
187   - (*self)(GCTAResponseTableInx[1], GCTAResponseTableInx[2]) = value;
  117 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
188 118 }
189 119 }
190 120 GCTAResponseTable copy() {
... ...
inst/cta/pyext/cta.i
... ... @@ -82,7 +82,9 @@
82 82 %include stl.i
83 83  
84 84 /* __ Include GammaLib typemaps __________________________________________ */
  85 +%include typemap_GChatter.i
85 86 %include typemap_GFilename.i
  87 +%include typemap_GTuple.i
86 88 %include typemap_slices.i
87 89  
88 90 /* __ Include interface classes __________________________________________ */
... ...
pyext/GCsv.i
1 1 /***************************************************************************
2 2 * GCsv.i - Comma-separated values table class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2016 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -31,53 +31,6 @@
31 31  
32 32  
33 33 /***********************************************************************//**
34   - * @brief Tuple to index conversion to provide element access.
35   - *
36   - * The following function provides conversion between a Python tuple and
37   - * an integer array. This allows table element access via tuples, such as in
38   - * a[3,5] = 10.0 or c = a[2,9]. Note that the typemap will be globally
39   - * defined after inclusing of this file.
40   - ***************************************************************************/
41   -%{
42   -static int csv_tuple(PyObject *input, int *ptr) {
43   - if (PySequence_Check(input)) {
44   - int size = PyObject_Length(input);
45   - if (size > 2) {
46   - PyErr_SetString(PyExc_ValueError,"Too many arguments in tuple");
47   - return 0;
48   - }
49   - for (int i = 0; i < size; i++) {
50   - PyObject *o = PySequence_GetItem(input,i);
51   - if (!PyInt_Check(o)) {
52   - Py_XDECREF(o);
53   - PyErr_SetString(PyExc_ValueError,"Expecting a tuple of integers");
54   - return 0;
55   - }
56   - ptr[i] = (int)PyInt_AsLong(o);
57   - Py_DECREF(o);
58   - }
59   - return 1;
60   - }
61   - else {
62   - ptr[0] = 1;
63   - if (!PyInt_Check(input)) {
64   - PyErr_SetString(PyExc_ValueError,"Expecting an integer");
65   - return 0;
66   - }
67   - ptr[1] = (int)PyInt_AsLong(input);
68   - return 1;
69   - }
70   -}
71   -%}
72   -%typemap(in) int GCsvInx[ANY](int temp[2]) {
73   - if (!csv_tuple($input,temp)) {
74   - return NULL;
75   - }
76   - $1 = &temp[0];
77   -}
78   -
79   -
80   -/***********************************************************************//**
81 34 * @class GCsv
82 35 *
83 36 * @brief Comma-separated values table class definition
... ... @@ -117,11 +70,11 @@ public:
117 70 * @brief GCsv class extension
118 71 ***************************************************************************/
119 72 %extend GCsv {
120   - std::string __getitem__(int GCsvInx[]) {
121   - return (*self)(GCsvInx[0], GCsvInx[1]);
  73 + std::string __getitem__(int GTuple2D[]) {
  74 + return (*self)(GTuple2D[0], GTuple2D[1]);
122 75 }
123   - void __setitem__(int GCsvInx[], std::string value) {
124   - (*self)(GCsvInx[0], GCsvInx[1]) = value;
  76 + void __setitem__(int GTuple2D[], std::string value) {
  77 + (*self)(GTuple2D[0], GTuple2D[1]) = value;
125 78 }
126 79 int __len__() {
127 80 return (self->size());
... ...
pyext/GFitsImageByte.i
1 1 /***************************************************************************
2 2 * GFitsImageByte.i - FITS Byte image class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -33,10 +33,10 @@
33 33 if (!PyList_Check($input)) {
34 34 SWIG_exception(SWIG_ValueError, "List expected");
35 35 }
36   - int num = PyList_Size($input);
  36 + Py_ssize_t num = PyList_Size($input);
37 37 if (num > 0) {
38 38 $1 = (unsigned char*)malloc(num*sizeof(unsigned char));
39   - for (int i = 0; i < num; i++) {
  39 + for (int i = 0; i < num; ++i) {
40 40 PyObject *s = PyList_GetItem($input,i);
41 41 if (!PyInt_Check(s)) {
42 42 free($1);
... ...
pyext/GFitsImageDouble.i
1 1 /***************************************************************************
2 2 * GFitsImageDouble.i - Double precision FITS image class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -33,10 +33,10 @@
33 33 if (!PyList_Check($input)) {
34 34 SWIG_exception(SWIG_ValueError, "List expected");
35 35 }
36   - int num = PyList_Size($input);
  36 + Py_ssize_t num = PyList_Size($input);
37 37 if (num > 0) {
38 38 $1 = (double*)malloc(num*sizeof(double));
39   - for (int i = 0; i < num; i++) {
  39 + for (int i = 0; i < num; ++i) {
40 40 PyObject *s = PyList_GetItem($input,i);
41 41 if (!PyFloat_Check(s)) {
42 42 free($1);
... ...
pyext/GFitsImageFloat.i
1 1 /***************************************************************************
2 2 * GFitsImageFloat.i - Single precision FITS image class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -33,7 +33,7 @@
33 33 if (!PyList_Check($input)) {
34 34 SWIG_exception(SWIG_ValueError, "List expected");
35 35 }
36   - int num = PyList_Size($input);
  36 + Py_ssize_t num = PyList_Size($input);
37 37 if (num > 0) {
38 38 $1 = (float*)malloc(num*sizeof(float));
39 39 for (int i = 0; i < num; ++i) {
... ...
pyext/GFitsImageLong.i
1 1 /***************************************************************************
2 2 * GFitsImageLong.i - Long integer FITS image class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -33,10 +33,10 @@
33 33 if (!PyList_Check($input)) {
34 34 SWIG_exception(SWIG_ValueError, "List expected");
35 35 }
36   - int num = PyList_Size($input);
  36 + Py_ssize_t num = PyList_Size($input);
37 37 if (num > 0) {
38 38 $1 = (long*)malloc(num*sizeof(long));
39   - for (int i = 0; i < num; i++) {
  39 + for (int i = 0; i < num; ++i) {
40 40 PyObject *s = PyList_GetItem($input,i);
41 41 if (!PyInt_Check(s)) {
42 42 free($1);
... ...
pyext/GFitsImageLongLong.i
1 1 /***************************************************************************
2 2 * GFitsImageLongLong.i - Long long integer FITS image class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -33,10 +33,10 @@
33 33 if (!PyList_Check($input)) {
34 34 SWIG_exception(SWIG_ValueError, "List expected");
35 35 }
36   - int num = PyList_Size($input);
  36 + Py_ssize_t num = PyList_Size($input);
37 37 if (num > 0) {
38 38 $1 = (long long*)malloc(num*sizeof(long long));
39   - for (int i = 0; i < num; i++) {
  39 + for (int i = 0; i < num; ++i) {
40 40 PyObject *s = PyList_GetItem($input,i);
41 41 if (!PyInt_Check(s)) {
42 42 free($1);
... ...
pyext/GFitsImageSByte.i
1 1 /***************************************************************************
2 2 * GFitsImageSByte.i - Signed Byte FITS image class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -33,10 +33,10 @@
33 33 if (!PyList_Check($input)) {
34 34 SWIG_exception(SWIG_ValueError, "List expected");
35 35 }
36   - int num = PyList_Size($input);
  36 + Py_ssize_t num = PyList_Size($input);
37 37 if (num > 0) {
38 38 $1 = (char*)malloc(num*sizeof(char));
39   - for (int i = 0; i < num; i++) {
  39 + for (int i = 0; i < num; ++i) {
40 40 PyObject *s = PyList_GetItem($input,i);
41 41 if (!PyInt_Check(s)) {
42 42 free($1);
... ...
pyext/GFitsImageShort.i
1 1 /***************************************************************************
2 2 * GFitsImageShort.i - Short integer FITS image class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -33,10 +33,10 @@
33 33 if (!PyList_Check($input)) {
34 34 SWIG_exception(SWIG_ValueError, "List expected");
35 35 }
36   - int num = PyList_Size($input);
  36 + Py_ssize_t num = PyList_Size($input);
37 37 if (num > 0) {
38 38 $1 = (short*)malloc(num*sizeof(short));
39   - for (int i = 0; i < num; i++) {
  39 + for (int i = 0; i < num; ++i) {
40 40 PyObject *s = PyList_GetItem($input,i);
41 41 if (!PyInt_Check(s)) {
42 42 free($1);
... ...
pyext/GFitsImageULong.i
1 1 /***************************************************************************
2 2 * GFitsImageULong.i - Unsigned long image FITS class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -33,10 +33,10 @@
33 33 if (!PyList_Check($input)) {
34 34 SWIG_exception(SWIG_ValueError, "List expected");
35 35 }
36   - int num = PyList_Size($input);
  36 + Py_ssize_t num = PyList_Size($input);
37 37 if (num > 0) {
38 38 $1 = (unsigned long*)malloc(num*sizeof(unsigned long));
39   - for (int i = 0; i < num; i++) {
  39 + for (int i = 0; i < num; ++i) {
40 40 PyObject *s = PyList_GetItem($input,i);
41 41 if (!PyInt_Check(s)) {
42 42 free($1);
... ...
pyext/GFitsImageUShort.i
1 1 /***************************************************************************
2 2 * GFitsImageUShort.i - Unsigned short FITS image class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -33,10 +33,10 @@
33 33 if (!PyList_Check($input)) {
34 34 SWIG_exception(SWIG_ValueError, "List expected");
35 35 }
36   - int num = PyList_Size($input);
  36 + Py_ssize_t num = PyList_Size($input);
37 37 if (num > 0) {
38 38 $1 = (unsigned short*)malloc(num*sizeof(unsigned short));
39   - for (int i = 0; i < num; i++) {
  39 + for (int i = 0; i < num; ++i) {
40 40 PyObject *s = PyList_GetItem($input,i);
41 41 if (!PyInt_Check(s)) {
42 42 free($1);
... ...
pyext/GFitsTable.i
1 1 /***************************************************************************
2 2 * GFitsTable.i - FITS abstract table base class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -28,77 +28,6 @@
28 28 #include "GFitsTable.hpp"
29 29 %}
30 30  
31   -/***********************************************************************//**
32   - * @brief Tuple to index conversion to provide column access.
33   - *
34   - * The following function provides conversion between a Python tuple and
35   - * an integer array. This allows table column access via tuples, such as in
36   - * a[(3,5,10)] = 10.0 or c = a[(2,9)]. Note that the typemap will be
37   - * globally defined after inclusing of this file, hence GFitsTable.i has
38   - * to be included before all table class swig files.
39   - ***************************************************************************/
40   -%{
41   -static int table_column_tuple(PyObject *input, int *ptr) {
42   - if (PySequence_Check(input)) {
43   - int size = PyObject_Length(input);
44   - if (size > 2) {
45   - PyErr_SetString(PyExc_ValueError,"Too many arguments in tuple");
46   - return 0;
47   - }
48   - ptr[0] = size;
49   - for (int i = 0; i < size; i++) {
50   - PyObject *o = PySequence_GetItem(input,i);
51   - if (!PyInt_Check(o)) {
52   - Py_XDECREF(o);
53   - PyErr_SetString(PyExc_ValueError,"Expecting a tuple of integers");
54   - return 0;
55   - }
56   - ptr[i+1] = (int)PyInt_AsLong(o);
57   - Py_DECREF(o);
58   - }
59   - return 1;
60   - }
61   - else {
62   - ptr[0] = 1;
63   - if (!PyInt_Check(input)) {
64   - PyErr_SetString(PyExc_ValueError,"Expecting an integer");
65   - return 0;
66   - }
67   - ptr[1] = (int)PyInt_AsLong(input);
68   - return 1;
69   - }
70   -}
71   -%}
72   -
73   -// This is the typemap that makes use of the function defined above
74   -%typemap(in) int GFitsTableColInx[ANY](int temp[3]) {
75   - if (!table_column_tuple($input,temp)) {
76   - return NULL;
77   - }
78   - $1 = &temp[0];
79   -}
80   -
81   -// This typecheck verifies that all arguments are integers. The typecheck
82   -// is needed for using "int GFitsTableColInx" in overloaded methods.
83   -%typemap(typecheck) int GFitsTableColInx[ANY] {
84   - $1 = 1;
85   - if (PySequence_Check($input)) {
86   - int size = PyObject_Length($input);
87   - for (int i = 0; i < size; i++) {
88   - PyObject *o = PySequence_GetItem($input,i);
89   - if (!PyInt_Check(o)) {
90   - $1 = 0;
91   - break;
92   - }
93   - }
94   - }
95   - else {
96   - if (!PyInt_Check($input)) {
97   - $1 = 0;
98   - }
99   - }
100   -}
101   -
102 31  
103 32 /***********************************************************************//**
104 33 * @class GFitsTable
... ...
pyext/GFitsTableBitCol.i
1 1 /***************************************************************************
2 2 * GFitsTableBitCol.i - FITS table bit column class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -70,43 +70,41 @@ public:
70 70 * find out how to implement this (e.g. via typemaps).
71 71 ***************************************************************************/
72 72 %extend GFitsTableBitCol {
73   - bool __getitem__(int GFitsTableColInx[]) {
74   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  73 + bool __getitem__(int GTuple1D2D[]) {
  74 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
75 75 throw GException::out_of_range("__getitem__()", "Row index",
76   - GFitsTableColInx[1], self->nrows());
  76 + GTuple1D2D[1], self->nrows());
77 77 }
78   - if (GFitsTableColInx[0] == 1) {
79   - return (*self)(GFitsTableColInx[1]);
  78 + if (GTuple1D2D[0] == 1) {
  79 + return (*self)(GTuple1D2D[1]);
80 80 }
81 81 else {
82   - if (GFitsTableColInx[2] >= 0 &&
83   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
84   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  82 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  83 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
85 84 }
86 85 else {
87 86 throw GException::out_of_range("__getitem__()", "Column index",
88   - GFitsTableColInx[2],
89   - self->elements(GFitsTableColInx[1]));
  87 + GTuple1D2D[2],
  88 + self->elements(GTuple1D2D[1]));
90 89 }
91 90 }
92 91 }
93   - void __setitem__(int GFitsTableColInx[], bool value) {
94   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  92 + void __setitem__(int GTuple1D2D[], bool value) {
  93 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
95 94 throw GException::out_of_range("__setitem__()", "Row index",
96   - GFitsTableColInx[1], self->nrows());
  95 + GTuple1D2D[1], self->nrows());
97 96 }
98   - if (GFitsTableColInx[0] == 1) {
99   - (*self)(GFitsTableColInx[1]) = value;
  97 + if (GTuple1D2D[0] == 1) {
  98 + (*self)(GTuple1D2D[1]) = value;
100 99 }
101 100 else {
102   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
103   - self->elements(GFitsTableColInx[1])) {
104   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  101 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  102 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
105 103 }
106 104 else {
107 105 throw GException::out_of_range("__setitem__()", "Column index",
108   - GFitsTableColInx[2],
109   - self->elements(GFitsTableColInx[1]));
  106 + GTuple1D2D[2],
  107 + self->elements(GTuple1D2D[1]));
110 108 }
111 109 }
112 110 }
... ...
pyext/GFitsTableBoolCol.i
1 1 /***************************************************************************
2 2 * GFitsTableBoolCol.i - FITS table boolean column class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -70,43 +70,41 @@ public:
70 70 * find out how to implement this (e.g. via typemaps).
71 71 ***************************************************************************/
72 72 %extend GFitsTableBoolCol {
73   - bool __getitem__(int GFitsTableColInx[]) {
74   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  73 + bool __getitem__(int GTuple1D2D[]) {
  74 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
75 75 throw GException::out_of_range("__getitem__()", "Row index",
76   - GFitsTableColInx[1], self->nrows());
  76 + GTuple1D2D[1], self->nrows());
77 77 }
78   - if (GFitsTableColInx[0] == 1) {
79   - return (*self)(GFitsTableColInx[1]);
  78 + if (GTuple1D2D[0] == 1) {
  79 + return (*self)(GTuple1D2D[1]);
80 80 }
81 81 else {
82   - if (GFitsTableColInx[2] >= 0 &&
83   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
84   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  82 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  83 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
85 84 }
86 85 else {
87 86 throw GException::out_of_range("__getitem__()", "Column index",
88   - GFitsTableColInx[2],
89   - self->elements(GFitsTableColInx[1]));
  87 + GTuple1D2D[2],
  88 + self->elements(GTuple1D2D[1]));
90 89 }
91 90 }
92 91 }
93   - void __setitem__(int GFitsTableColInx[], bool value) {
94   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  92 + void __setitem__(int GTuple1D2D[], bool value) {
  93 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
95 94 throw GException::out_of_range("__setitem__()", "Row index",
96   - GFitsTableColInx[1], self->nrows());
  95 + GTuple1D2D[1], self->nrows());
97 96 }
98   - if (GFitsTableColInx[0] == 1) {
99   - (*self)(GFitsTableColInx[1]) = value;
  97 + if (GTuple1D2D[0] == 1) {
  98 + (*self)(GTuple1D2D[1]) = value;
100 99 }
101 100 else {
102   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
103   - self->elements(GFitsTableColInx[1])) {
104   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  101 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  102 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
105 103 }
106 104 else {
107 105 throw GException::out_of_range("__setitem__()", "Column index",
108   - GFitsTableColInx[2],
109   - self->elements(GFitsTableColInx[1]));
  106 + GTuple1D2D[2],
  107 + self->elements(GTuple1D2D[1]));
110 108 }
111 109 }
112 110 }
... ...
pyext/GFitsTableByteCol.i
1 1 /***************************************************************************
2 2 * GFitsTableByteCol.i - FITS table Byte column class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -70,43 +70,41 @@ public:
70 70 * find out how to implement this (e.g. via typemaps).
71 71 ***************************************************************************/
72 72 %extend GFitsTableByteCol {
73   - unsigned char __getitem__(int GFitsTableColInx[]) {
74   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  73 + unsigned char __getitem__(int GTuple1D2D[]) {
  74 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
75 75 throw GException::out_of_range("__getitem__()", "Row index",
76   - GFitsTableColInx[1], self->nrows());
  76 + GTuple1D2D[1], self->nrows());
77 77 }
78   - if (GFitsTableColInx[0] == 1) {
79   - return (*self)(GFitsTableColInx[1]);
  78 + if (GTuple1D2D[0] == 1) {
  79 + return (*self)(GTuple1D2D[1]);
80 80 }
81 81 else {
82   - if (GFitsTableColInx[2] >= 0 &&
83   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
84   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  82 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  83 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
85 84 }
86 85 else {
87 86 throw GException::out_of_range("__getitem__()", "Column index",
88   - GFitsTableColInx[2],
89   - self->elements(GFitsTableColInx[1]));
  87 + GTuple1D2D[2],
  88 + self->elements(GTuple1D2D[1]));
90 89 }
91 90 }
92 91 }
93   - void __setitem__(int GFitsTableColInx[], unsigned char value) {
94   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  92 + void __setitem__(int GTuple1D2D[], unsigned char value) {
  93 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
95 94 throw GException::out_of_range("__setitem__()", "Row index",
96   - GFitsTableColInx[1], self->nrows());
  95 + GTuple1D2D[1], self->nrows());
97 96 }
98   - if (GFitsTableColInx[0] == 1) {
99   - (*self)(GFitsTableColInx[1]) = value;
  97 + if (GTuple1D2D[0] == 1) {
  98 + (*self)(GTuple1D2D[1]) = value;
100 99 }
101 100 else {
102   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
103   - self->elements(GFitsTableColInx[1])) {
104   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  101 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  102 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
105 103 }
106 104 else {
107 105 throw GException::out_of_range("__setitem__()", "Column index",
108   - GFitsTableColInx[2],
109   - self->elements(GFitsTableColInx[1]));
  106 + GTuple1D2D[2],
  107 + self->elements(GTuple1D2D[1]));
110 108 }
111 109 }
112 110 }
... ...
pyext/GFitsTableCDoubleCol.i
1 1 /***************************************************************************
2 2 * GFitsTableCDoubleCol.i - FITS table double precision complex column *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2017 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -74,44 +74,43 @@ public:
74 74 ***************************************************************************/
75 75 %extend GFitsTableCDoubleCol {
76 76 /*
77   - GFits::cdouble __getitem__(int GFitsTableColInx[]) {
78   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  77 + GFits::cdouble __getitem__(int GTuple1D2D[]) {
  78 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
79 79 throw GException::out_of_range("__getitem__()", "Row index",
80   - GFitsTableColInx[1], self->nrows());
  80 + GTuple1D2D[1], self->nrows());
81 81 }
82   - if (GFitsTableColInx[0] == 1) {
83   - return (*self)(GFitsTableColInx[1]);
  82 + if (GTuple1D2D[0] == 1) {
  83 + return (*self)(GTuple1D2D[1]);
84 84 }
85 85 else {
86   - if (GFitsTableColInx[2] >= 0 &&
87   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
88   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  86 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  87 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
89 88 }
90 89 else {
91 90 throw GException::out_of_range("__getitem__()", "Column index",
92   - GFitsTableColInx[2],
93   - self->elements(GFitsTableColInx[1]));
  91 + GTuple1D2D[2],
  92 + self->elements(GTuple1D2D[1]));
94 93 }
95 94 }
96 95 }
97 96 */
98   - void __setitem__(int GFitsTableColInx[], GFits::cdouble value) {
99   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  97 + void __setitem__(int GTuple1D2D[], GFits::cdouble value) {
  98 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
100 99 throw GException::out_of_range("__setitem__()", "Row index",
101   - GFitsTableColInx[1], self->nrows());
  100 + GTuple1D2D[1], self->nrows());
102 101 }
103   - if (GFitsTableColInx[0] == 1) {
104   - (*self)(GFitsTableColInx[1]) = value;
  102 + if (GTuple1D2D[0] == 1) {
  103 + (*self)(GTuple1D2D[1]) = value;
105 104 }
106 105 else {
107   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
108   - self->elements(GFitsTableColInx[1])) {
109   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  106 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] <
  107 + self->elements(GTuple1D2D[1])) {
  108 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
110 109 }
111 110 else {
112 111 throw GException::out_of_range("__setitem__()", "Column index",
113   - GFitsTableColInx[2],
114   - self->elements(GFitsTableColInx[1]));
  112 + GTuple1D2D[2],
  113 + self->elements(GTuple1D2D[1]));
115 114 }
116 115 }
117 116 }
... ...
pyext/GFitsTableCFloatCol.i
1 1 /***************************************************************************
2 2 * GFitsTableCFloatCol.i - FITS table single precision complex column *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2017 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -74,44 +74,42 @@ public:
74 74 ***************************************************************************/
75 75 %extend GFitsTableCFloatCol {
76 76 /*
77   - GFits::cfloat __getitem__(int GFitsTableColInx[]) {
78   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  77 + GFits::cfloat __getitem__(int GTuple1D2D[]) {
  78 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
79 79 throw GException::out_of_range("__getitem__()", "Row index",
80   - GFitsTableColInx[1], self->nrows());
  80 + GTuple1D2D[1], self->nrows());
81 81 }
82   - if (GFitsTableColInx[0] == 1) {
83   - return (*self)(GFitsTableColInx[1]);
  82 + if (GTuple1D2D[0] == 1) {
  83 + return (*self)(GTuple1D2D[1]);
84 84 }
85 85 else {
86   - if (GFitsTableColInx[2] >= 0 &&
87   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
88   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  86 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  87 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
89 88 }
90 89 else {
91 90 throw GException::out_of_range("__getitem__()", "Column index",
92   - GFitsTableColInx[2],
93   - self->elements(GFitsTableColInx[1]));
  91 + GTuple1D2D[2],
  92 + self->elements(GTuple1D2D[1]));
94 93 }
95 94 }
96 95 }
97 96 */
98   - void __setitem__(int GFitsTableColInx[], GFits::cfloat value) {
99   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  97 + void __setitem__(int GTuple1D2D[], GFits::cfloat value) {
  98 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
100 99 throw GException::out_of_range("__setitem__()", "Row index",
101   - GFitsTableColInx[1], self->nrows());
  100 + GTuple1D2D[1], self->nrows());
102 101 }
103   - if (GFitsTableColInx[0] == 1) {
104   - (*self)(GFitsTableColInx[1]) = value;
  102 + if (GTuple1D2D[0] == 1) {
  103 + (*self)(GTuple1D2D[1]) = value;
105 104 }
106 105 else {
107   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
108   - self->elements(GFitsTableColInx[1])) {
109   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  106 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  107 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
110 108 }
111 109 else {
112 110 throw GException::out_of_range("__setitem__()", "Column index",
113   - GFitsTableColInx[2],
114   - self->elements(GFitsTableColInx[1]));
  111 + GTuple1D2D[2],
  112 + self->elements(GTuple1D2D[1]));
115 113 }
116 114 }
117 115 }
... ...
pyext/GFitsTableCol.i
1 1 /***************************************************************************
2 2 * GFitsTableCol.i - FITS abstract table column base class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -42,27 +42,6 @@
42 42 %}
43 43 %include "std_vector.i"
44 44  
45   -// This typecheck verifies that all arguments are integers. The typecheck
46   -// is needed for using "int GFitsTableColInx" in overloaded methods.
47   -%typemap(typecheck, precedence=SWIG_TYPECHECK_INTEGER) int GFitsTableColInx[ANY] {
48   - $1 = 1;
49   - if (PySequence_Check($input)) {
50   - int size = PyObject_Length($input);
51   - for (int i = 0; i < size; i++) {
52   - PyObject *o = PySequence_GetItem($input,i);
53   - if (!PyInt_Check(o)) {
54   - $1 = 0;
55   - break;
56   - }
57   - }
58   - }
59   - else {
60   - if (!PyInt_Check($input)) {
61   - $1 = 0;
62   - }
63   - }
64   -}
65   -
66 45  
67 46 /***********************************************************************//**
68 47 * @class GFitsTableCol
... ... @@ -141,120 +120,120 @@ public:
141 120 * @todo Add range checking for type casting
142 121 ***************************************************************************/
143 122 %extend GFitsTableCol {
144   -
  123 +
145 124 // String setting
146   - void __setitem__(int GFitsTableColInx[], std::string value) {
  125 + void __setitem__(int GTuple1D2D[], std::string value) {
147 126 if (dynamic_cast<GFitsTableStringCol*>(self) != NULL) {
148 127 GFitsTableStringCol* col = dynamic_cast<GFitsTableStringCol*>(self);
149   - if (GFitsTableColInx[0] == 1)
150   - (*col)(GFitsTableColInx[1]) = value;
  128 + if (GTuple1D2D[0] == 1)
  129 + (*col)(GTuple1D2D[1]) = value;
151 130 else
152   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  131 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = value;
153 132 }
154 133 else {
155 134 throw GException::bad_type("GFitsTableCol::__setitem__",
156   - "Column type does not support string setting.");
  135 + "Column type does not support string setting.");
157 136 }
158 137 }
159   -
  138 +
160 139 // Integer setting
161   - void __setitem__(int GFitsTableColInx[], int value) {
  140 + void __setitem__(int GTuple1D2D[], int value) {
162 141 if (dynamic_cast<GFitsTableBitCol*>(self) != NULL) {
163 142 GFitsTableBitCol* col = dynamic_cast<GFitsTableBitCol*>(self);
164   - if (GFitsTableColInx[0] == 1)
165   - (*col)(GFitsTableColInx[1]) = (bool)value;
  143 + if (GTuple1D2D[0] == 1)
  144 + (*col)(GTuple1D2D[1]) = (bool)value;
166 145 else
167   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = (bool)value;
  146 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = (bool)value;
168 147 }
169 148 else if (dynamic_cast<GFitsTableBoolCol*>(self) != NULL) {
170 149 GFitsTableBoolCol* col = dynamic_cast<GFitsTableBoolCol*>(self);
171   - if (GFitsTableColInx[0] == 1)
172   - (*col)(GFitsTableColInx[1]) = (bool)value;
  150 + if (GTuple1D2D[0] == 1)
  151 + (*col)(GTuple1D2D[1]) = (bool)value;
173 152 else
174   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = (bool)value;
  153 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = (bool)value;
175 154 }
176 155 else if (dynamic_cast<GFitsTableByteCol*>(self) != NULL) {
177 156 GFitsTableByteCol* col = dynamic_cast<GFitsTableByteCol*>(self);
178   - if (GFitsTableColInx[0] == 1)
179   - (*col)(GFitsTableColInx[1]) = (unsigned char)value;
  157 + if (GTuple1D2D[0] == 1)
  158 + (*col)(GTuple1D2D[1]) = (unsigned char)value;
180 159 else
181   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = (unsigned char)value;
  160 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = (unsigned char)value;
182 161 }
183 162 else if (dynamic_cast<GFitsTableLongCol*>(self) != NULL) {
184 163 GFitsTableLongCol* col = dynamic_cast<GFitsTableLongCol*>(self);
185   - if (GFitsTableColInx[0] == 1)
186   - (*col)(GFitsTableColInx[1]) = (long)value;
  164 + if (GTuple1D2D[0] == 1)
  165 + (*col)(GTuple1D2D[1]) = (long)value;
187 166 else
188   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = (long)value;
  167 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = (long)value;
189 168 }
190 169 else if (dynamic_cast<GFitsTableLongLongCol*>(self) != NULL) {
191 170 GFitsTableLongLongCol* col = dynamic_cast<GFitsTableLongLongCol*>(self);
192   - if (GFitsTableColInx[0] == 1)
193   - (*col)(GFitsTableColInx[1]) = (long long)value;
  171 + if (GTuple1D2D[0] == 1)
  172 + (*col)(GTuple1D2D[1]) = (long long)value;
194 173 else
195   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = (long long)value;
  174 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = (long long)value;
196 175 }
197 176 else if (dynamic_cast<GFitsTableShortCol*>(self) != NULL) {
198 177 GFitsTableShortCol* col = dynamic_cast<GFitsTableShortCol*>(self);
199   - if (GFitsTableColInx[0] == 1)
200   - (*col)(GFitsTableColInx[1]) = (short)value;
  178 + if (GTuple1D2D[0] == 1)
  179 + (*col)(GTuple1D2D[1]) = (short)value;
201 180 else
202   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = (short)value;
  181 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = (short)value;
203 182 }
204 183 else if (dynamic_cast<GFitsTableULongCol*>(self) != NULL) {
205 184 GFitsTableULongCol* col = dynamic_cast<GFitsTableULongCol*>(self);
206   - if (GFitsTableColInx[0] == 1)
207   - (*col)(GFitsTableColInx[1]) = (unsigned long)value;
  185 + if (GTuple1D2D[0] == 1)
  186 + (*col)(GTuple1D2D[1]) = (unsigned long)value;
208 187 else
209   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = (unsigned long)value;
  188 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = (unsigned long)value;
210 189 }
211 190 else if (dynamic_cast<GFitsTableUShortCol*>(self) != NULL) {
212 191 GFitsTableUShortCol* col = dynamic_cast<GFitsTableUShortCol*>(self);
213   - if (GFitsTableColInx[0] == 1)
214   - (*col)(GFitsTableColInx[1]) = (unsigned short)value;
  192 + if (GTuple1D2D[0] == 1)
  193 + (*col)(GTuple1D2D[1]) = (unsigned short)value;
215 194 else
216   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = (unsigned short)value;
  195 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = (unsigned short)value;
217 196 }
218 197 else if (dynamic_cast<GFitsTableDoubleCol*>(self) != NULL) {
219 198 GFitsTableDoubleCol* col = dynamic_cast<GFitsTableDoubleCol*>(self);
220   - if (GFitsTableColInx[0] == 1)
221   - (*col)(GFitsTableColInx[1]) = (double)value;
  199 + if (GTuple1D2D[0] == 1)
  200 + (*col)(GTuple1D2D[1]) = (double)value;
222 201 else
223   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = (double)value;
  202 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = (double)value;
224 203 }
225 204 else if (dynamic_cast<GFitsTableFloatCol*>(self) != NULL) {
226 205 GFitsTableFloatCol* col = dynamic_cast<GFitsTableFloatCol*>(self);
227   - if (GFitsTableColInx[0] == 1)
228   - (*col)(GFitsTableColInx[1]) = (float)value;
  206 + if (GTuple1D2D[0] == 1)
  207 + (*col)(GTuple1D2D[1]) = (float)value;
229 208 else
230   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = (float)value;
  209 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = (float)value;
231 210 }
232 211 else {
233 212 throw GException::bad_type("GFitsTableCol::__setitem__",
234   - "Column type does not support integer setting.");
  213 + "Column type does not support integer setting.");
235 214 }
236 215 }
237   -
  216 +
238 217 // Floating point setting
239   - void __setitem__(int GFitsTableColInx[], double value) {
  218 + void __setitem__(int GTuple1D2D[], double value) {
240 219 if (dynamic_cast<GFitsTableDoubleCol*>(self) != NULL) {
241 220 GFitsTableDoubleCol* col = dynamic_cast<GFitsTableDoubleCol*>(self);
242   - if (GFitsTableColInx[0] == 1)
243   - (*col)(GFitsTableColInx[1]) = value;
  221 + if (GTuple1D2D[0] == 1)
  222 + (*col)(GTuple1D2D[1]) = value;
244 223 else
245   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  224 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = value;
246 225 }
247 226 else if (dynamic_cast<GFitsTableFloatCol*>(self) != NULL) {
248 227 GFitsTableFloatCol* col = dynamic_cast<GFitsTableFloatCol*>(self);
249   - if (GFitsTableColInx[0] == 1)
250   - (*col)(GFitsTableColInx[1]) = (float)value;
  228 + if (GTuple1D2D[0] == 1)
  229 + (*col)(GTuple1D2D[1]) = (float)value;
251 230 else
252   - (*col)(GFitsTableColInx[1], GFitsTableColInx[2]) = (float)value;
  231 + (*col)(GTuple1D2D[1], GTuple1D2D[2]) = (float)value;
253 232 }
254 233  
255 234 else {
256 235 throw GException::bad_type("GFitsTableCol::__setitem__",
257   - "Column type does not support floating point setting.");
  236 + "Column type does not support floating point setting.");
258 237 }
259 238 }
260 239 };
... ...
pyext/GFitsTableDoubleCol.i
1 1 /***************************************************************************
2 2 * GFitsTableDoubleCol.i - FITS table double precision column class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -70,43 +70,41 @@ public:
70 70 * find out how to implement this (e.g. via typemaps).
71 71 ***************************************************************************/
72 72 %extend GFitsTableDoubleCol {
73   - double __getitem__(int GFitsTableColInx[]) {
74   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  73 + double __getitem__(int GTuple1D2D[]) {
  74 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
75 75 throw GException::out_of_range("__getitem__()", "Row index",
76   - GFitsTableColInx[1], self->nrows());
  76 + GTuple1D2D[1], self->nrows());
77 77 }
78   - if (GFitsTableColInx[0] == 1) {
79   - return (*self)(GFitsTableColInx[1]);
  78 + if (GTuple1D2D[0] == 1) {
  79 + return (*self)(GTuple1D2D[1]);
80 80 }
81 81 else {
82   - if (GFitsTableColInx[2] >= 0 &&
83   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
84   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  82 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  83 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
85 84 }
86 85 else {
87 86 throw GException::out_of_range("__getitem__()", "Column index",
88   - GFitsTableColInx[2],
89   - self->elements(GFitsTableColInx[1]));
  87 + GTuple1D2D[2],
  88 + self->elements(GTuple1D2D[1]));
90 89 }
91 90 }
92 91 }
93   - void __setitem__(int GFitsTableColInx[], double value) {
94   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  92 + void __setitem__(int GTuple1D2D[], double value) {
  93 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
95 94 throw GException::out_of_range("__setitem__()", "Row index",
96   - GFitsTableColInx[1], self->nrows());
  95 + GTuple1D2D[1], self->nrows());
97 96 }
98   - if (GFitsTableColInx[0] == 1) {
99   - (*self)(GFitsTableColInx[1]) = value;
  97 + if (GTuple1D2D[0] == 1) {
  98 + (*self)(GTuple1D2D[1]) = value;
100 99 }
101 100 else {
102   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
103   - self->elements(GFitsTableColInx[1])) {
104   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  101 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  102 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
105 103 }
106 104 else {
107 105 throw GException::out_of_range("__setitem__()", "Column index",
108   - GFitsTableColInx[2],
109   - self->elements(GFitsTableColInx[1]));
  106 + GTuple1D2D[2],
  107 + self->elements(GTuple1D2D[1]));
110 108 }
111 109 }
112 110 }
... ...
pyext/GFitsTableFloatCol.i
1 1 /***************************************************************************
2 2 * GFitsTableFloatCol.i - FITS table single precision column class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -70,43 +70,41 @@ public:
70 70 * find out how to implement this (e.g. via typemaps).
71 71 ***************************************************************************/
72 72 %extend GFitsTableFloatCol {
73   - float __getitem__(int GFitsTableColInx[]) {
74   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  73 + float __getitem__(int GTuple1D2D[]) {
  74 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
75 75 throw GException::out_of_range("__getitem__()", "Row index",
76   - GFitsTableColInx[1], self->nrows());
  76 + GTuple1D2D[1], self->nrows());
77 77 }
78   - if (GFitsTableColInx[0] == 1) {
79   - return (*self)(GFitsTableColInx[1]);
  78 + if (GTuple1D2D[0] == 1) {
  79 + return (*self)(GTuple1D2D[1]);
80 80 }
81 81 else {
82   - if (GFitsTableColInx[2] >= 0 &&
83   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
84   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  82 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  83 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
85 84 }
86 85 else {
87 86 throw GException::out_of_range("__getitem__()", "Column index",
88   - GFitsTableColInx[2],
89   - self->elements(GFitsTableColInx[1]));
  87 + GTuple1D2D[2],
  88 + self->elements(GTuple1D2D[1]));
90 89 }
91 90 }
92 91 }
93   - void __setitem__(int GFitsTableColInx[], float value) {
94   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  92 + void __setitem__(int GTuple1D2D[], float value) {
  93 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
95 94 throw GException::out_of_range("__setitem__()", "Row index",
96   - GFitsTableColInx[1], self->nrows());
  95 + GTuple1D2D[1], self->nrows());
97 96 }
98   - if (GFitsTableColInx[0] == 1) {
99   - (*self)(GFitsTableColInx[1]) = value;
  97 + if (GTuple1D2D[0] == 1) {
  98 + (*self)(GTuple1D2D[1]) = value;
100 99 }
101 100 else {
102   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
103   - self->elements(GFitsTableColInx[1])) {
104   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  101 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  102 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
105 103 }
106 104 else {
107 105 throw GException::out_of_range("__setitem__()", "Column index",
108   - GFitsTableColInx[2],
109   - self->elements(GFitsTableColInx[1]));
  106 + GTuple1D2D[2],
  107 + self->elements(GTuple1D2D[1]));
110 108 }
111 109 }
112 110 }
... ...
pyext/GFitsTableLongCol.i
1 1 /***************************************************************************
2 2 * GFitsTableLongCol.i - FITS table long integer column class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -70,43 +70,41 @@ public:
70 70 * find out how to implement this (e.g. via typemaps).
71 71 ***************************************************************************/
72 72 %extend GFitsTableLongCol {
73   - long __getitem__(int GFitsTableColInx[]) {
74   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  73 + long __getitem__(int GTuple1D2D[]) {
  74 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
75 75 throw GException::out_of_range("__getitem__()", "Row index",
76   - GFitsTableColInx[1], self->nrows());
  76 + GTuple1D2D[1], self->nrows());
77 77 }
78   - if (GFitsTableColInx[0] == 1) {
79   - return (*self)(GFitsTableColInx[1]);
  78 + if (GTuple1D2D[0] == 1) {
  79 + return (*self)(GTuple1D2D[1]);
80 80 }
81 81 else {
82   - if (GFitsTableColInx[2] >= 0 &&
83   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
84   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  82 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  83 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
85 84 }
86 85 else {
87 86 throw GException::out_of_range("__getitem__()", "Column index",
88   - GFitsTableColInx[2],
89   - self->elements(GFitsTableColInx[1]));
  87 + GTuple1D2D[2],
  88 + self->elements(GTuple1D2D[1]));
90 89 }
91 90 }
92 91 }
93   - void __setitem__(int GFitsTableColInx[], long value) {
94   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  92 + void __setitem__(int GTuple1D2D[], long value) {
  93 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
95 94 throw GException::out_of_range("__setitem__()", "Row index",
96   - GFitsTableColInx[1], self->nrows());
  95 + GTuple1D2D[1], self->nrows());
97 96 }
98   - if (GFitsTableColInx[0] == 1) {
99   - (*self)(GFitsTableColInx[1]) = value;
  97 + if (GTuple1D2D[0] == 1) {
  98 + (*self)(GTuple1D2D[1]) = value;
100 99 }
101 100 else {
102   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
103   - self->elements(GFitsTableColInx[1])) {
104   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  101 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  102 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
105 103 }
106 104 else {
107 105 throw GException::out_of_range("__setitem__()", "Column index",
108   - GFitsTableColInx[2],
109   - self->elements(GFitsTableColInx[1]));
  106 + GTuple1D2D[2],
  107 + self->elements(GTuple1D2D[1]));
110 108 }
111 109 }
112 110 }
... ...
pyext/GFitsTableLongLongCol.i
1 1 /***************************************************************************
2 2 * GFitsTableLongLongCol.i - FITS table long long integer column class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -70,43 +70,41 @@ public:
70 70 * find out how to implement this (e.g. via typemaps).
71 71 ***************************************************************************/
72 72 %extend GFitsTableLongLongCol {
73   - long long __getitem__(int GFitsTableColInx[]) {
74   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  73 + long long __getitem__(int GTuple1D2D[]) {
  74 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
75 75 throw GException::out_of_range("__getitem__()", "Row index",
76   - GFitsTableColInx[1], self->nrows());
  76 + GTuple1D2D[1], self->nrows());
77 77 }
78   - if (GFitsTableColInx[0] == 1) {
79   - return (*self)(GFitsTableColInx[1]);
  78 + if (GTuple1D2D[0] == 1) {
  79 + return (*self)(GTuple1D2D[1]);
80 80 }
81 81 else {
82   - if (GFitsTableColInx[2] >= 0 &&
83   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
84   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  82 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  83 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
85 84 }
86 85 else {
87 86 throw GException::out_of_range("__getitem__()", "Column index",
88   - GFitsTableColInx[2],
89   - self->elements(GFitsTableColInx[1]));
  87 + GTuple1D2D[2],
  88 + self->elements(GTuple1D2D[1]));
90 89 }
91 90 }
92 91 }
93   - void __setitem__(int GFitsTableColInx[], long long value) {
94   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  92 + void __setitem__(int GTuple1D2D[], long long value) {
  93 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
95 94 throw GException::out_of_range("__setitem__()", "Row index",
96   - GFitsTableColInx[1], self->nrows());
  95 + GTuple1D2D[1], self->nrows());
97 96 }
98   - if (GFitsTableColInx[0] == 1) {
99   - (*self)(GFitsTableColInx[1]) = value;
  97 + if (GTuple1D2D[0] == 1) {
  98 + (*self)(GTuple1D2D[1]) = value;
100 99 }
101 100 else {
102   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
103   - self->elements(GFitsTableColInx[1])) {
104   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  101 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  102 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
105 103 }
106 104 else {
107 105 throw GException::out_of_range("__setitem__()", "Column index",
108   - GFitsTableColInx[2],
109   - self->elements(GFitsTableColInx[1]));
  106 + GTuple1D2D[2],
  107 + self->elements(GTuple1D2D[1]));
110 108 }
111 109 }
112 110 }
... ...
pyext/GFitsTableShortCol.i
1 1 /***************************************************************************
2 2 * GFitsTableShortCol.i - FITS table short integer column class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -70,43 +70,41 @@ public:
70 70 * find out how to implement this (e.g. via typemaps).
71 71 ***************************************************************************/
72 72 %extend GFitsTableShortCol {
73   - short __getitem__(int GFitsTableColInx[]) {
74   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  73 + short __getitem__(int GTuple1D2D[]) {
  74 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
75 75 throw GException::out_of_range("__getitem__()", "Row index",
76   - GFitsTableColInx[1], self->nrows());
  76 + GTuple1D2D[1], self->nrows());
77 77 }
78   - if (GFitsTableColInx[0] == 1) {
79   - return (*self)(GFitsTableColInx[1]);
  78 + if (GTuple1D2D[0] == 1) {
  79 + return (*self)(GTuple1D2D[1]);
80 80 }
81 81 else {
82   - if (GFitsTableColInx[2] >= 0 &&
83   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
84   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  82 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  83 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
85 84 }
86 85 else {
87 86 throw GException::out_of_range("__getitem__()", "Column index",
88   - GFitsTableColInx[2],
89   - self->elements(GFitsTableColInx[1]));
  87 + GTuple1D2D[2],
  88 + self->elements(GTuple1D2D[1]));
90 89 }
91 90 }
92 91 }
93   - void __setitem__(int GFitsTableColInx[], short value) {
94   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  92 + void __setitem__(int GTuple1D2D[], short value) {
  93 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
95 94 throw GException::out_of_range("__setitem__()", "Row index",
96   - GFitsTableColInx[1], self->nrows());
  95 + GTuple1D2D[1], self->nrows());
97 96 }
98   - if (GFitsTableColInx[0] == 1) {
99   - (*self)(GFitsTableColInx[1]) = value;
  97 + if (GTuple1D2D[0] == 1) {
  98 + (*self)(GTuple1D2D[1]) = value;
100 99 }
101 100 else {
102   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
103   - self->elements(GFitsTableColInx[1])) {
104   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  101 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  102 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
105 103 }
106 104 else {
107 105 throw GException::out_of_range("__setitem__()", "Column index",
108   - GFitsTableColInx[2],
109   - self->elements(GFitsTableColInx[1]));
  106 + GTuple1D2D[2],
  107 + self->elements(GTuple1D2D[1]));
110 108 }
111 109 }
112 110 }
... ...
pyext/GFitsTableStringCol.i
1 1 /***************************************************************************
2 2 * GFitsTableStringCol.i - FITS table string column class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -71,63 +71,60 @@ public:
71 71 * find out how to implement this (e.g. via typemaps).
72 72 ***************************************************************************/
73 73 %extend GFitsTableStringCol {
74   - std::string __getitem__(int GFitsTableColInx[]) {
75   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  74 + std::string __getitem__(int GTuple1D2D[]) {
  75 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
76 76 throw GException::out_of_range("__getitem__()", "Row index",
77   - GFitsTableColInx[1], self->nrows());
  77 + GTuple1D2D[1], self->nrows());
78 78 }
79   - if (GFitsTableColInx[0] == 1) {
80   - return (*self)(GFitsTableColInx[1]);
  79 + if (GTuple1D2D[0] == 1) {
  80 + return (*self)(GTuple1D2D[1]);
81 81 }
82 82 else {
83   - if (GFitsTableColInx[2] >= 0 &&
84   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
85   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  83 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  84 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
86 85 }
87 86 else {
88 87 throw GException::out_of_range("__getitem__()", "Column index",
89   - GFitsTableColInx[2],
90   - self->elements(GFitsTableColInx[1]));
  88 + GTuple1D2D[2],
  89 + self->elements(GTuple1D2D[1]));
91 90 }
92 91 }
93 92 }
94   - void __setitem__(int GFitsTableColInx[], std::string value) {
95   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  93 + void __setitem__(int GTuple1D2D[], std::string value) {
  94 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
96 95 throw GException::out_of_range("__setitem__()", "Row index",
97   - GFitsTableColInx[1], self->nrows());
  96 + GTuple1D2D[1], self->nrows());
98 97 }
99   - if (GFitsTableColInx[0] == 1) {
100   - (*self)(GFitsTableColInx[1]) = value;
  98 + if (GTuple1D2D[0] == 1) {
  99 + (*self)(GTuple1D2D[1]) = value;
101 100 }
102 101 else {
103   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
104   - self->elements(GFitsTableColInx[1])) {
105   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  102 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  103 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
106 104 }
107 105 else {
108 106 throw GException::out_of_range("__setitem__()", "Column index",
109   - GFitsTableColInx[2],
110   - self->elements(GFitsTableColInx[1]));
  107 + GTuple1D2D[2],
  108 + self->elements(GTuple1D2D[1]));
111 109 }
112 110 }
113 111 }
114   - void __setitem__(int GFitsTableColInx[], GFilename value) {
115   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  112 + void __setitem__(int GTuple1D2D[], GFilename value) {
  113 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
116 114 throw GException::out_of_range("__setitem__()", "Row index",
117   - GFitsTableColInx[1], self->nrows());
  115 + GTuple1D2D[1], self->nrows());
118 116 }
119   - if (GFitsTableColInx[0] == 1) {
120   - (*self)(GFitsTableColInx[1]) = std::string(value);
  117 + if (GTuple1D2D[0] == 1) {
  118 + (*self)(GTuple1D2D[1]) = std::string(value);
121 119 }
122 120 else {
123   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
124   - self->elements(GFitsTableColInx[1])) {
125   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = std::string(value);
  121 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  122 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = std::string(value);
126 123 }
127 124 else {
128 125 throw GException::out_of_range("__setitem__()", "Column index",
129   - GFitsTableColInx[2],
130   - self->elements(GFitsTableColInx[1]));
  126 + GTuple1D2D[2],
  127 + self->elements(GTuple1D2D[1]));
131 128 }
132 129 }
133 130 }
... ...
pyext/GFitsTableULongCol.i
1 1 /***************************************************************************
2 2 * GFitsTableULongCol.i - FITS table unsigned long integer column class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -70,43 +70,42 @@ public:
70 70 * find out how to implement this (e.g. via typemaps).
71 71 ***************************************************************************/
72 72 %extend GFitsTableULongCol {
73   - unsigned long __getitem__(int GFitsTableColInx[]) {
74   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  73 + unsigned long __getitem__(int GTuple1D2D[]) {
  74 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
75 75 throw GException::out_of_range("__getitem__()", "Row index",
76   - GFitsTableColInx[1], self->nrows());
  76 + GTuple1D2D[1], self->nrows());
77 77 }
78   - if (GFitsTableColInx[0] == 1) {
79   - return (*self)(GFitsTableColInx[1]);
  78 + if (GTuple1D2D[0] == 1) {
  79 + return (*self)(GTuple1D2D[1]);
80 80 }
81 81 else {
82   - if (GFitsTableColInx[2] >= 0 &&
83   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
84   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  82 + if (GTuple1D2D[2] >= 0 &&
  83 + GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  84 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
85 85 }
86 86 else {
87 87 throw GException::out_of_range("__getitem__()", "Column index",
88   - GFitsTableColInx[2],
89   - self->elements(GFitsTableColInx[1]));
  88 + GTuple1D2D[2],
  89 + self->elements(GTuple1D2D[1]));
90 90 }
91 91 }
92 92 }
93   - void __setitem__(int GFitsTableColInx[], unsigned long value) {
94   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  93 + void __setitem__(int GTuple1D2D[], unsigned long value) {
  94 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
95 95 throw GException::out_of_range("__setitem__()", "Row index",
96   - GFitsTableColInx[1], self->nrows());
  96 + GTuple1D2D[1], self->nrows());
97 97 }
98   - if (GFitsTableColInx[0] == 1) {
99   - (*self)(GFitsTableColInx[1]) = value;
  98 + if (GTuple1D2D[0] == 1) {
  99 + (*self)(GTuple1D2D[1]) = value;
100 100 }
101 101 else {
102   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
103   - self->elements(GFitsTableColInx[1])) {
104   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  102 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  103 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
105 104 }
106 105 else {
107 106 throw GException::out_of_range("__setitem__()", "Column index",
108   - GFitsTableColInx[2],
109   - self->elements(GFitsTableColInx[1]));
  107 + GTuple1D2D[2],
  108 + self->elements(GTuple1D2D[1]));
110 109 }
111 110 }
112 111 }
... ...
pyext/GFitsTableUShortCol.i
1 1 /***************************************************************************
2 2 * GFitsTableUShortCol.i - FITS table unsigned short integer column class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -70,43 +70,42 @@ public:
70 70 * find out how to implement this (e.g. via typemaps).
71 71 ***************************************************************************/
72 72 %extend GFitsTableUShortCol {
73   - unsigned short __getitem__(int GFitsTableColInx[]) {
74   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  73 + unsigned short __getitem__(int GTuple1D2D[]) {
  74 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
75 75 throw GException::out_of_range("__getitem__()", "Row index",
76   - GFitsTableColInx[1], self->nrows());
  76 + GTuple1D2D[1], self->nrows());
77 77 }
78   - if (GFitsTableColInx[0] == 1) {
79   - return (*self)(GFitsTableColInx[1]);
  78 + if (GTuple1D2D[0] == 1) {
  79 + return (*self)(GTuple1D2D[1]);
80 80 }
81 81 else {
82   - if (GFitsTableColInx[2] >= 0 &&
83   - GFitsTableColInx[2] < self->elements(GFitsTableColInx[1])) {
84   - return (*self)(GFitsTableColInx[1], GFitsTableColInx[2]);
  82 + if (GTuple1D2D[2] >= 0 &&
  83 + GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  84 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
85 85 }
86 86 else {
87 87 throw GException::out_of_range("__getitem__()", "Column index",
88   - GFitsTableColInx[2],
89   - self->elements(GFitsTableColInx[1]));
  88 + GTuple1D2D[2],
  89 + self->elements(GTuple1D2D[1]));
90 90 }
91 91 }
92 92 }
93   - void __setitem__(int GFitsTableColInx[], unsigned short value) {
94   - if (GFitsTableColInx[1] < 0 || GFitsTableColInx[1] >= self->nrows()) {
  93 + void __setitem__(int GTuple1D2D[], unsigned short value) {
  94 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->nrows()) {
95 95 throw GException::out_of_range("__setitem__()", "Row index",
96   - GFitsTableColInx[1], self->nrows());
  96 + GTuple1D2D[1], self->nrows());
97 97 }
98   - if (GFitsTableColInx[0] == 1) {
99   - (*self)(GFitsTableColInx[1]) = value;
  98 + if (GTuple1D2D[0] == 1) {
  99 + (*self)(GTuple1D2D[1]) = value;
100 100 }
101 101 else {
102   - if (GFitsTableColInx[2] >= 0 && GFitsTableColInx[2] <
103   - self->elements(GFitsTableColInx[1])) {
104   - (*self)(GFitsTableColInx[1], GFitsTableColInx[2]) = value;
  102 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->elements(GTuple1D2D[1])) {
  103 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
105 104 }
106 105 else {
107 106 throw GException::out_of_range("__setitem__()", "Column index",
108   - GFitsTableColInx[2],
109   - self->elements(GFitsTableColInx[1]));
  107 + GTuple1D2D[2],
  108 + self->elements(GTuple1D2D[1]));
110 109 }
111 110 }
112 111 }
... ...
pyext/GMatrix.i
1 1 /***************************************************************************
2 2 * GMatrix.i - General Matrix class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -94,11 +94,11 @@ public:
94 94 * @brief GMatrix class extension
95 95 ***************************************************************************/
96 96 %extend GMatrix {
97   - double __getitem__(int GTuple[2]) {
98   - return (*self)(GTuple[0], GTuple[1]);
  97 + double __getitem__(int GTuple2D[]) {
  98 + return (*self)(GTuple2D[0], GTuple2D[1]);
99 99 }
100   - void __setitem__(int GTuple[2], double value) {
101   - (*self)(GTuple[0], GTuple[1]) = value;
  100 + void __setitem__(int GTuple2D[], double value) {
  101 + (*self)(GTuple2D[0], GTuple2D[1]) = value;
102 102 }
103 103 GVector __mul__(const GVector& vector) {
104 104 return ((*self) * vector);
... ...
pyext/GMatrixSparse.i
1 1 /***************************************************************************
2 2 * GMatrixSparse.i - Sparse matrix class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -108,11 +108,11 @@ public:
108 108 * @brief GMatrixSparse class extension
109 109 ***************************************************************************/
110 110 %extend GMatrixSparse {
111   - double __getitem__(int GTuple[2]) {
112   - return (*self)(GTuple[0], GTuple[1]);
  111 + double __getitem__(int GTuple2D[]) {
  112 + return (*self)(GTuple2D[0], GTuple2D[1]);
113 113 }
114   - void __setitem__(int GTuple[2], double value) {
115   - (*self)(GTuple[0], GTuple[1]) = value;
  114 + void __setitem__(int GTuple2D[], double value) {
  115 + (*self)(GTuple2D[0], GTuple2D[1]) = value;
116 116 }
117 117 GVector __mul__(const GVector& vector) {
118 118 return ((*self) * vector);
... ...
pyext/GMatrixSymmetric.i
1 1 /***************************************************************************
2 2 * GMatrixSymmetric.i - Symmetric matrix class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2018 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2020 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -93,11 +93,11 @@ public:
93 93 * @brief GMatrixSymmetric class extension
94 94 ***************************************************************************/
95 95 %extend GMatrixSymmetric {
96   - double __getitem__(int GTuple[2]) {
97   - return (*self)(GTuple[0], GTuple[1]);
  96 + double __getitem__(int GTuple2D[]) {
  97 + return (*self)(GTuple2D[0], GTuple2D[1]);
98 98 }
99   - void __setitem__(int GTuple[2], double value) {
100   - (*self)(GTuple[0], GTuple[1]) = value;
  99 + void __setitem__(int GTuple2D[], double value) {
  100 + (*self)(GTuple2D[0], GTuple2D[1]) = value;
101 101 }
102 102 GVector __mul__(const GVector& vector) {
103 103 return ((*self) * vector);
... ...
pyext/GResponseVectorCache.i
... ... @@ -38,8 +38,9 @@
38 38 *
39 39 */
40 40 %include "typemaps.i"
41   -%apply GVector *OUTPUT { GVector* value };
42   -
  41 +%typemap(argout) GVector *OUTPUT {
  42 + $result = SWIG_NewPointerObj(SWIG_as_voidptr($1), SWIGTYPE_p_GVector, 0 | 0);
  43 +}
43 44  
44 45 /***********************************************************************//**
45 46 * @class GResponseVectorCache
... ...
pyext/GRmf.i
... ... @@ -85,11 +85,11 @@ public:
85 85 * @brief GRmf class extension
86 86 ***************************************************************************/
87 87 %extend GRmf {
88   - double __getitem__(int GTuple[2]) {
89   - return self->at(GTuple[0], GTuple[1]);
  88 + double __getitem__(int GTuple2D[]) {
  89 + return self->at(GTuple2D[0], GTuple2D[1]);
90 90 }
91   - void __setitem__(int GTuple[2], const double& value) {
92   - self->at(GTuple[0], GTuple[1]) = value;
  91 + void __setitem__(int GTuple2D[], const double& value) {
  92 + self->at(GTuple2D[0], GTuple2D[1]) = value;
93 93 }
94 94 int __len__() {
95 95 return (self->size());
... ...
pyext/GSkyMap.i
... ... @@ -31,76 +31,6 @@
31 31  
32 32  
33 33 /***********************************************************************//**
34   - * @brief Tuple to index conversion to provide pixel access.
35   - *
36   - * The following function provides conversion between a Python tuple and
37   - * an integer array. This allows skymap pixel access via tuples, such as in
38   - * a[3,5,10] = 10.0 or c = a[2,9].
39   - ***************************************************************************/
40   -%{
41   -static int skymap_tuple(PyObject *input, int *ptr) {
42   - if (PySequence_Check(input)) {
43   - int size = PyObject_Length(input);
44   - if (size > 2) {
45   - PyErr_SetString(PyExc_ValueError,"Too many arguments in tuple");
46   - return 0;
47   - }
48   - ptr[0] = size;
49   - for (int i = 0; i < size; i++) {
50   - PyObject *o = PySequence_GetItem(input,i);
51   - if (!PyInt_Check(o)) {
52   - Py_XDECREF(o);
53   - PyErr_SetString(PyExc_ValueError,"Expecting a tuple of integers");
54   - return 0;
55   - }
56   - ptr[i+1] = (int)PyInt_AsLong(o);
57   - Py_DECREF(o);
58   - }
59   - return 1;
60   - }
61   - else {
62   - ptr[0] = 1;
63   - if (!PyInt_Check(input)) {
64   - PyErr_SetString(PyExc_ValueError,"Expecting an integer");
65   - return 0;
66   - }
67   - ptr[1] = (int)PyInt_AsLong(input);
68   - return 1;
69   - }
70   -}
71   -%}
72   -
73   -// This is the typemap that makes use of the function defined above
74   -%typemap(in) int GSkyMapInx[ANY](int temp[3]) {
75   - if (!skymap_tuple($input,temp)) {
76   - return NULL;
77   - }
78   - $1 = &temp[0];
79   -}
80   -
81   -// This typecheck verifies that all arguments are integers. The typecheck
82   -// is needed for using "int GSkyMapInx" in overloaded methods.
83   -%typemap(typecheck) int GSkyMapInx[ANY] {
84   - $1 = 1;
85   - if (PySequence_Check($input)) {
86   - int size = PyObject_Length($input);
87   - for (int i = 0; i < size; i++) {
88   - PyObject *o = PySequence_GetItem($input,i);
89   - if (!PyInt_Check(o)) {
90   - $1 = 0;
91   - break;
92   - }
93   - }
94   - }
95   - else {
96   - if (!PyInt_Check($input)) {
97   - $1 = 0;
98   - }
99   - }
100   -}
101   -
102   -
103   -/***********************************************************************//**
104 34 * @class GSkyMap
105 35 *
106 36 * @brief GSkyMap class interface definition
... ... @@ -200,23 +130,23 @@ public:
200 130 * GSkyDir
201 131 ***************************************************************************/
202 132 %extend GSkyMap {
203   - double __getitem__(int GSkyMapInx[]) {
204   - if (GSkyMapInx[1] < 0 || GSkyMapInx[1] >= self->npix()) {
  133 + double __getitem__(int GTuple1D2D[]) {
  134 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->npix()) {
205 135 throw GException::out_of_range("GSkyMap::__getitem__(int*)",
206 136 "Sky map index",
207   - GSkyMapInx[1], self->npix());
  137 + GTuple1D2D[1], self->npix());
208 138 }
209   - if (GSkyMapInx[0] == 1) {
210   - return (*self)(GSkyMapInx[1]);
  139 + if (GTuple1D2D[0] == 1) {
  140 + return (*self)(GTuple1D2D[1]);
211 141 }
212 142 else {
213   - if (GSkyMapInx[2] >= 0 && GSkyMapInx[2] < self->nmaps()) {
214   - return (*self)(GSkyMapInx[1], GSkyMapInx[2]);
  143 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->nmaps()) {
  144 + return (*self)(GTuple1D2D[1], GTuple1D2D[2]);
215 145 }
216 146 else {
217 147 throw GException::out_of_range("GSkyMap::__getitem__(int*)",
218 148 "Sky map number",
219   - GSkyMapInx[2], self->nmaps());
  149 + GTuple1D2D[2], self->nmaps());
220 150 }
221 151 }
222 152 }
... ... @@ -225,23 +155,23 @@ public:
225 155 return (*self)(pixel);
226 156 }
227 157 */
228   - void __setitem__(int GSkyMapInx[], double value) {
229   - if (GSkyMapInx[1] < 0 || GSkyMapInx[1] >= self->npix()) {
  158 + void __setitem__(int GTuple1D2D[], double value) {
  159 + if (GTuple1D2D[1] < 0 || GTuple1D2D[1] >= self->npix()) {
230 160 throw GException::out_of_range("GSkyMap::__setitem__(int*,double&)",
231 161 "Sky map index",
232   - GSkyMapInx[1], self->npix());
  162 + GTuple1D2D[1], self->npix());
233 163 }
234   - if (GSkyMapInx[0] == 1) {
235   - (*self)(GSkyMapInx[1]) = value;
  164 + if (GTuple1D2D[0] == 1) {
  165 + (*self)(GTuple1D2D[1]) = value;
236 166 }
237 167 else {
238   - if (GSkyMapInx[2] >= 0 && GSkyMapInx[2] < self->nmaps()) {
239   - (*self)(GSkyMapInx[1], GSkyMapInx[2]) = value;
  168 + if (GTuple1D2D[2] >= 0 && GTuple1D2D[2] < self->nmaps()) {
  169 + (*self)(GTuple1D2D[1], GTuple1D2D[2]) = value;
240 170 }
241 171 else {
242 172 throw GException::out_of_range("GSkyMap::__setitem__(int*,double&)",
243 173 "Sky map number",
244   - GSkyMapInx[2], self->nmaps());
  174 + GTuple1D2D[2], self->nmaps());
245 175 }
246 176 }
247 177 }
... ...
pyext/gammalib/fits.i
... ... @@ -47,6 +47,7 @@ namespace std {
47 47 /* __ Include GammaLib typemaps __________________________________________ */
48 48 %include typemap_GChatter.i
49 49 %include typemap_GFilename.i
  50 +%include typemap_GTuple.i
50 51 %include typemap_slices.i
51 52  
52 53 /* __ Include interface classes __________________________________________ */
... ...
pyext/gammalib/obs.i
... ... @@ -216,22 +216,6 @@
216 216 $result = SWIG_NewPointerObj(SWIG_as_voidptr($1), myinfo, 0 | 0);
217 217 }
218 218 }
219   -%typemap(out) GVector* {
220   - char classname[80];
221   - strcpy(classname, "_p_");
222   - strcat(classname, result->classname().c_str());
223   - swig_type_info *myinfo = SWIGTYPE_p_GVector;
224   - swig_cast_info *mycast = 0;
225   - mycast = myinfo->cast;
226   - while (mycast != 0) {
227   - if (strcmp(classname, mycast->type->name) == 0) {
228   - myinfo = mycast->type;
229   - break;
230   - }
231   - mycast = mycast->next;
232   - }
233   - $result = SWIG_NewPointerObj(SWIG_as_voidptr($1), myinfo, 0 | 0);
234   -}
235 219  
236 220 /* __ Observation handling _______________________________________________ */
237 221 %include "GEnergy.i"
... ...
pyext/gammalib/sky.i
... ... @@ -49,6 +49,7 @@ namespace std {
49 49 /* __ Include GammaLib typemaps __________________________________________ */
50 50 %include typemap_GChatter.i
51 51 %include typemap_GFilename.i
  52 +%include typemap_GTuple.i
52 53 %include typemap_slices.i
53 54  
54 55 /* __ Include interface classes __________________________________________ */
... ...
pyext/gammalib/support.i
... ... @@ -46,6 +46,7 @@
46 46 /* __ Include GammaLib typemaps __________________________________________ */
47 47 %include typemap_GChatter.i
48 48 %include typemap_GFilename.i
  49 +%include typemap_GTuple.i
49 50 %include typemap_slices.i
50 51  
51 52 /* __ Include interface classes __________________________________________ */
... ...
pyext/typemap_GTuple.i
... ... @@ -36,7 +36,7 @@
36 36 * in a[3,5] = 10.0 or c = a[2,9]. A typecheck typemap is provided to allow
37 37 * overloading.
38 38 ***************************************************************************/
39   -%typemap(in) int GTuple[2] (int temp[2]) {
  39 +%typemap(in) int GTuple2D[] (int temp[2]) {
40 40 if (!PySequence_Check($input)) {
41 41 PyErr_SetString(PyExc_ValueError,"Expected a sequence");
42 42 return NULL;
... ... @@ -57,13 +57,70 @@
57 57 }
58 58 $1 = temp;
59 59 }
60   -%typemap(typecheck) int GTuple[2] {
  60 +%typemap(typecheck) int GTuple2D[] {
61 61 $1 = 1;
62 62 if (PySequence_Check($input)) {
63   - int size = PyObject_Length($input);
  63 + Py_ssize_t size = PyObject_Length($input);
  64 + for (int i = 0; i < size; ++i) {
  65 + PyObject *o = PySequence_GetItem($input,i);
  66 + if (!PyInt_Check(o)) {
  67 + $1 = 0;
  68 + break;
  69 + }
  70 + }
  71 + }
  72 + else {
  73 + if (!PyInt_Check($input)) {
  74 + $1 = 0;
  75 + }
  76 + }
  77 +}
  78 +
  79 +
  80 +/***********************************************************************//**
  81 + * @brief 1D or 2D tuple to index conversion
  82 + *
  83 + * The following typemap provides conversion between a 1-dimensional or
  84 + * or 2-dimensional Python tuple and an integer array. This allows index
  85 + * access via tuples, such as in a[3] = 10.0 or c = a[2,9]. A typecheck
  86 + * typemap is provided to allow overloading.
  87 + ***************************************************************************/
  88 +%typemap(in) int GTuple1D2D[] (int temp[3]) {
  89 + if (PySequence_Check($input)) {
  90 + Py_ssize_t size = PyObject_Length($input);
  91 + if (size > 2) {
  92 + PyErr_SetString(PyExc_ValueError,"Too many arguments in tuple");
  93 + return NULL;
  94 + }
  95 + temp[0] = size;
64 96 for (int i = 0; i < size; i++) {
65 97 PyObject *o = PySequence_GetItem($input,i);
66 98 if (!PyInt_Check(o)) {
  99 + Py_XDECREF(o);
  100 + PyErr_SetString(PyExc_ValueError,"Expecting a tuple of integers");
  101 + return NULL;
  102 + }
  103 + temp[i+1] = (int)PyInt_AsLong(o);
  104 + Py_DECREF(o);
  105 + }
  106 + }
  107 + else {
  108 + temp[0] = 1;
  109 + if (!PyInt_Check($input)) {
  110 + PyErr_SetString(PyExc_ValueError,"Expecting an integer");
  111 + return NULL;
  112 + }
  113 + temp[1] = (int)PyInt_AsLong($input);
  114 + }
  115 + $1 = temp;
  116 +}
  117 +%typemap(typecheck, precedence=SWIG_TYPECHECK_INTEGER) int GTuple1D2D[] {
  118 + $1 = 1;
  119 + if (PySequence_Check($input)) {
  120 + Py_ssize_t size = PyObject_Length($input);
  121 + for (int i = 0; i < size; ++i) {
  122 + PyObject *o = PySequence_GetItem($input,i);
  123 + if (!PyInt_Check(o)) {
67 124 $1 = 0;
68 125 break;
69 126 }
... ... @@ -86,13 +143,13 @@
86 143 ***************************************************************************/
87 144 %typemap(in) int GTuple[ANY] (int temp[11]) {
88 145 if (PySequence_Check($input)) {
89   - int size = PyObject_Length($input);
  146 + Py_ssize_t size = PyObject_Length($input);
90 147 if (size > 10) {
91 148 PyErr_SetString(PyExc_ValueError,"Too many arguments in tuple");
92 149 return NULL;
93 150 }
94 151 temp[0] = size;
95   - for (int i = 0; i < size; i++) {
  152 + for (int i = 0; i < size; ++i) {
96 153 PyObject *o = PySequence_GetItem($input,i);
97 154 if (!PyInt_Check(o)) {
98 155 Py_XDECREF(o);
... ... @@ -102,7 +159,6 @@
102 159 temp[i+1] = (int)PyInt_AsLong(o);
103 160 Py_DECREF(o);
104 161 }
105   - $1 = &temp[0];
106 162 }
107 163 else {
108 164 temp[0] = 1;
... ... @@ -111,14 +167,14 @@
111 167 return NULL;
112 168 }
113 169 temp[1] = (int)PyInt_AsLong($input);
114   - $1 = &temp[0];
115 170 }
  171 + $1 = temp;
116 172 }
117 173 %typemap(typecheck) int GTuple[ANY] {
118 174 $1 = 1;
119 175 if (PySequence_Check($input)) {
120   - int size = PyObject_Length($input);
121   - for (int i = 0; i < size; i++) {
  176 + Py_ssize_t size = PyObject_Length($input);
  177 + for (int i = 0; i < size; ++i) {
122 178 PyObject *o = PySequence_GetItem($input,i);
123 179 if (!PyInt_Check(o)) {
124 180 $1 = 0;
... ...