Commit 6b5dc974f7fb1a2293f889654ed4733ddfebf2e7
1 parent
6c98f13f
Correct container slicing code for Python >= 3.2
Showing
19 changed files
with
76 additions
and
0 deletions
inst/cta/pyext/GCTAEventList.i
| @@ -110,7 +110,11 @@ public: | @@ -110,7 +110,11 @@ public: | ||
| 110 | Py_ssize_t stop = 0; | 110 | Py_ssize_t stop = 0; |
| 111 | Py_ssize_t step = 0; | 111 | Py_ssize_t step = 0; |
| 112 | Py_ssize_t len = self->size(); | 112 | Py_ssize_t len = self->size(); |
| 113 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 114 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 115 | + #else | ||
| 113 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 116 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 117 | + #endif | ||
| 114 | GCTAEventList* list = new GCTAEventList; | 118 | GCTAEventList* list = new GCTAEventList; |
| 115 | if (step > 0) { | 119 | if (step > 0) { |
| 116 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 120 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
inst/lat/pyext/GLATEventList.i
| @@ -88,7 +88,11 @@ public: | @@ -88,7 +88,11 @@ public: | ||
| 88 | Py_ssize_t stop = 0; | 88 | Py_ssize_t stop = 0; |
| 89 | Py_ssize_t step = 0; | 89 | Py_ssize_t step = 0; |
| 90 | Py_ssize_t len = self->size(); | 90 | Py_ssize_t len = self->size(); |
| 91 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 92 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 93 | + #else | ||
| 91 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 94 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 95 | + #endif | ||
| 92 | GLATEventList* list = new GLATEventList; | 96 | GLATEventList* list = new GLATEventList; |
| 93 | if (step > 0) { | 97 | if (step > 0) { |
| 94 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 98 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GApplicationPars.i
| @@ -97,7 +97,11 @@ public: | @@ -97,7 +97,11 @@ public: | ||
| 97 | Py_ssize_t stop = 0; | 97 | Py_ssize_t stop = 0; |
| 98 | Py_ssize_t step = 0; | 98 | Py_ssize_t step = 0; |
| 99 | Py_ssize_t len = self->size(); | 99 | Py_ssize_t len = self->size(); |
| 100 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 101 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 102 | + #else | ||
| 100 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 103 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 104 | + #endif | ||
| 101 | GApplicationPars* pars = new GApplicationPars; | 105 | GApplicationPars* pars = new GApplicationPars; |
| 102 | if (step > 0) { | 106 | if (step > 0) { |
| 103 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 107 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GEbounds.i
| @@ -99,7 +99,11 @@ public: | @@ -99,7 +99,11 @@ public: | ||
| 99 | Py_ssize_t stop = 0; | 99 | Py_ssize_t stop = 0; |
| 100 | Py_ssize_t step = 0; | 100 | Py_ssize_t step = 0; |
| 101 | Py_ssize_t len = self->size(); | 101 | Py_ssize_t len = self->size(); |
| 102 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 103 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 104 | + #else | ||
| 102 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 105 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 106 | + #endif | ||
| 103 | GEbounds* ebounds = new GEbounds; | 107 | GEbounds* ebounds = new GEbounds; |
| 104 | if (step > 0) { | 108 | if (step > 0) { |
| 105 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 109 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GEnergies.i
| @@ -97,7 +97,11 @@ public: | @@ -97,7 +97,11 @@ public: | ||
| 97 | Py_ssize_t stop = 0; | 97 | Py_ssize_t stop = 0; |
| 98 | Py_ssize_t step = 0; | 98 | Py_ssize_t step = 0; |
| 99 | Py_ssize_t len = self->size(); | 99 | Py_ssize_t len = self->size(); |
| 100 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 101 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 102 | + #else | ||
| 100 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 103 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 104 | + #endif | ||
| 101 | GEnergies* energies = new GEnergies; | 105 | GEnergies* energies = new GEnergies; |
| 102 | if (step > 0) { | 106 | if (step > 0) { |
| 103 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 107 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GFits.i
| @@ -123,7 +123,11 @@ public: | @@ -123,7 +123,11 @@ public: | ||
| 123 | Py_ssize_t stop = 0; | 123 | Py_ssize_t stop = 0; |
| 124 | Py_ssize_t step = 0; | 124 | Py_ssize_t step = 0; |
| 125 | Py_ssize_t len = self->size(); | 125 | Py_ssize_t len = self->size(); |
| 126 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 127 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 128 | + #else | ||
| 126 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 129 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 130 | + #endif | ||
| 127 | GFits* fits = new GFits; | 131 | GFits* fits = new GFits; |
| 128 | if (step > 0) { | 132 | if (step > 0) { |
| 129 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 133 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GFitsHeader.i
| @@ -98,7 +98,11 @@ public: | @@ -98,7 +98,11 @@ public: | ||
| 98 | Py_ssize_t stop = 0; | 98 | Py_ssize_t stop = 0; |
| 99 | Py_ssize_t step = 0; | 99 | Py_ssize_t step = 0; |
| 100 | Py_ssize_t len = self->size(); | 100 | Py_ssize_t len = self->size(); |
| 101 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 102 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 103 | + #else | ||
| 101 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 104 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 105 | + #endif | ||
| 102 | GFitsHeader* header = new GFitsHeader; | 106 | GFitsHeader* header = new GFitsHeader; |
| 103 | if (step > 0) { | 107 | if (step > 0) { |
| 104 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 108 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GGti.i
| @@ -91,7 +91,11 @@ public: | @@ -91,7 +91,11 @@ public: | ||
| 91 | Py_ssize_t stop = 0; | 91 | Py_ssize_t stop = 0; |
| 92 | Py_ssize_t step = 0; | 92 | Py_ssize_t step = 0; |
| 93 | Py_ssize_t len = self->size(); | 93 | Py_ssize_t len = self->size(); |
| 94 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 95 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 96 | + #else | ||
| 94 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 97 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 98 | + #endif | ||
| 95 | GGti* gti = new GGti; | 99 | GGti* gti = new GGti; |
| 96 | if (step > 0) { | 100 | if (step > 0) { |
| 97 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 101 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GModels.i
| @@ -101,7 +101,11 @@ public: | @@ -101,7 +101,11 @@ public: | ||
| 101 | Py_ssize_t stop = 0; | 101 | Py_ssize_t stop = 0; |
| 102 | Py_ssize_t step = 0; | 102 | Py_ssize_t step = 0; |
| 103 | Py_ssize_t len = self->size(); | 103 | Py_ssize_t len = self->size(); |
| 104 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 105 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 106 | + #else | ||
| 104 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 107 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 108 | + #endif | ||
| 105 | GModels* models = new GModels; | 109 | GModels* models = new GModels; |
| 106 | if (step > 0) { | 110 | if (step > 0) { |
| 107 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 111 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GNodeArray.i
| @@ -104,7 +104,11 @@ public: | @@ -104,7 +104,11 @@ public: | ||
| 104 | Py_ssize_t stop = 0; | 104 | Py_ssize_t stop = 0; |
| 105 | Py_ssize_t step = 0; | 105 | Py_ssize_t step = 0; |
| 106 | Py_ssize_t len = self->size(); | 106 | Py_ssize_t len = self->size(); |
| 107 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 108 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 109 | + #else | ||
| 107 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 110 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 111 | + #endif | ||
| 108 | GNodeArray* nodes = new GNodeArray; | 112 | GNodeArray* nodes = new GNodeArray; |
| 109 | if (step > 0) { | 113 | if (step > 0) { |
| 110 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 114 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GObservations.i
| @@ -126,7 +126,11 @@ typedef GObservations::likelihood likelihood; | @@ -126,7 +126,11 @@ typedef GObservations::likelihood likelihood; | ||
| 126 | Py_ssize_t stop = 0; | 126 | Py_ssize_t stop = 0; |
| 127 | Py_ssize_t step = 0; | 127 | Py_ssize_t step = 0; |
| 128 | Py_ssize_t len = self->size(); | 128 | Py_ssize_t len = self->size(); |
| 129 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 130 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 131 | + #else | ||
| 129 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 132 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 133 | + #endif | ||
| 130 | GObservations* obs = new GObservations; | 134 | GObservations* obs = new GObservations; |
| 131 | obs->models(self->models()); // Copy over model container | 135 | obs->models(self->models()); // Copy over model container |
| 132 | if (step > 0) { | 136 | if (step > 0) { |
pyext/GOptimizerPars.i
| @@ -93,7 +93,11 @@ public: | @@ -93,7 +93,11 @@ public: | ||
| 93 | Py_ssize_t stop = 0; | 93 | Py_ssize_t stop = 0; |
| 94 | Py_ssize_t step = 0; | 94 | Py_ssize_t step = 0; |
| 95 | Py_ssize_t len = self->size(); | 95 | Py_ssize_t len = self->size(); |
| 96 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 97 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 98 | + #else | ||
| 96 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 99 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 100 | + #endif | ||
| 97 | GOptimizerPars* pars = new GOptimizerPars; | 101 | GOptimizerPars* pars = new GOptimizerPars; |
| 98 | if (step > 0) { | 102 | if (step > 0) { |
| 99 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 103 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GPhases.i
| @@ -69,7 +69,11 @@ public: | @@ -69,7 +69,11 @@ public: | ||
| 69 | Py_ssize_t stop = 0; | 69 | Py_ssize_t stop = 0; |
| 70 | Py_ssize_t step = 0; | 70 | Py_ssize_t step = 0; |
| 71 | Py_ssize_t len = self->size(); | 71 | Py_ssize_t len = self->size(); |
| 72 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 73 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 74 | + #else | ||
| 72 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 75 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 76 | + #endif | ||
| 73 | GPhases* phases = new GPhases; | 77 | GPhases* phases = new GPhases; |
| 74 | if (step > 0) { | 78 | if (step > 0) { |
| 75 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 79 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GPhotons.i
| @@ -78,7 +78,11 @@ public: | @@ -78,7 +78,11 @@ public: | ||
| 78 | Py_ssize_t stop = 0; | 78 | Py_ssize_t stop = 0; |
| 79 | Py_ssize_t step = 0; | 79 | Py_ssize_t step = 0; |
| 80 | Py_ssize_t len = self->size(); | 80 | Py_ssize_t len = self->size(); |
| 81 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 82 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 83 | + #else | ||
| 81 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 84 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 85 | + #endif | ||
| 82 | GPhotons* photons = new GPhotons; | 86 | GPhotons* photons = new GPhotons; |
| 83 | if (step > 0) { | 87 | if (step > 0) { |
| 84 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 88 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GSkyRegions.i
| @@ -86,7 +86,11 @@ public: | @@ -86,7 +86,11 @@ public: | ||
| 86 | Py_ssize_t stop = 0; | 86 | Py_ssize_t stop = 0; |
| 87 | Py_ssize_t step = 0; | 87 | Py_ssize_t step = 0; |
| 88 | Py_ssize_t len = self->size(); | 88 | Py_ssize_t len = self->size(); |
| 89 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 90 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 91 | + #else | ||
| 89 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 92 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 93 | + #endif | ||
| 90 | GSkyRegions* regions = new GSkyRegions; | 94 | GSkyRegions* regions = new GSkyRegions; |
| 91 | if (step > 0) { | 95 | if (step > 0) { |
| 92 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 96 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GTestSuites.i
| @@ -91,7 +91,11 @@ public: | @@ -91,7 +91,11 @@ public: | ||
| 91 | Py_ssize_t stop = 0; | 91 | Py_ssize_t stop = 0; |
| 92 | Py_ssize_t step = 0; | 92 | Py_ssize_t step = 0; |
| 93 | Py_ssize_t len = self->size(); | 93 | Py_ssize_t len = self->size(); |
| 94 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 95 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 96 | + #else | ||
| 94 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 97 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 98 | + #endif | ||
| 95 | GTestSuites* tests = new GTestSuites(self->name()); | 99 | GTestSuites* tests = new GTestSuites(self->name()); |
| 96 | if (step > 0) { | 100 | if (step > 0) { |
| 97 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 101 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GTimes.i
| @@ -80,7 +80,11 @@ public: | @@ -80,7 +80,11 @@ public: | ||
| 80 | Py_ssize_t stop = 0; | 80 | Py_ssize_t stop = 0; |
| 81 | Py_ssize_t step = 0; | 81 | Py_ssize_t step = 0; |
| 82 | Py_ssize_t len = self->size(); | 82 | Py_ssize_t len = self->size(); |
| 83 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 84 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 85 | + #else | ||
| 83 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 86 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 87 | + #endif | ||
| 84 | GTimes* times = new GTimes; | 88 | GTimes* times = new GTimes; |
| 85 | if (step > 0) { | 89 | if (step > 0) { |
| 86 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 90 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GXml.i
| @@ -92,7 +92,11 @@ public: | @@ -92,7 +92,11 @@ public: | ||
| 92 | Py_ssize_t stop = 0; | 92 | Py_ssize_t stop = 0; |
| 93 | Py_ssize_t step = 0; | 93 | Py_ssize_t step = 0; |
| 94 | Py_ssize_t len = self->size(); | 94 | Py_ssize_t len = self->size(); |
| 95 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 96 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 97 | + #else | ||
| 95 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 98 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 99 | + #endif | ||
| 96 | GXml* xml = new GXml; | 100 | GXml* xml = new GXml; |
| 97 | if (step > 0) { | 101 | if (step > 0) { |
| 98 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 102 | for (int i = (int)start; i < (int)stop; i += (int)step) { |
pyext/GXmlElement.i
| @@ -93,7 +93,11 @@ public: | @@ -93,7 +93,11 @@ public: | ||
| 93 | Py_ssize_t stop = 0; | 93 | Py_ssize_t stop = 0; |
| 94 | Py_ssize_t step = 0; | 94 | Py_ssize_t step = 0; |
| 95 | Py_ssize_t len = self->size(); | 95 | Py_ssize_t len = self->size(); |
| 96 | + #if PY_VERSION_HEX >= 0x03020000 | ||
| 97 | + if (PySlice_GetIndices(param, len, &start, &stop, &step) == 0) { | ||
| 98 | + #else | ||
| 96 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { | 99 | if (PySlice_GetIndices((PySliceObject*)param, len, &start, &stop, &step) == 0) { |
| 100 | + #endif | ||
| 97 | GXmlElement* element = new GXmlElement; | 101 | GXmlElement* element = new GXmlElement; |
| 98 | if (step > 0) { | 102 | if (step > 0) { |
| 99 | for (int i = (int)start; i < (int)stop; i += (int)step) { | 103 | for (int i = (int)start; i < (int)stop; i += (int)step) { |