[magics] 04/07: refresh patches

Alastair McKinstry mckinstry at moszumanska.debian.org
Wed Jan 3 12:58:14 UTC 2018


This is an automated email from the git hooks/post-receive script.

mckinstry pushed a commit to branch debian/master
in repository magics.

commit e1d9d5a2f655fdf0737ac51afb222f03f336a615
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Wed Dec 27 09:58:32 2017 +0000

    refresh patches
---
 debian/patches/fix-warnings.patch    |    6 +-
 debian/patches/numpy-fixes.patch     | 2491 ----------------------------------
 debian/patches/python-type-fix.patch |   10 +-
 debian/patches/rm-ksh.patch          |   18 +-
 debian/patches/series                |    4 +-
 debian/patches/terralib.patch        |   47 +-
 debian/patches/unique-ptr.patch      |   92 +-
 7 files changed, 88 insertions(+), 2580 deletions(-)

diff --git a/debian/patches/fix-warnings.patch b/debian/patches/fix-warnings.patch
index c732d31..93a8166 100644
--- a/debian/patches/fix-warnings.patch
+++ b/debian/patches/fix-warnings.patch
@@ -1,7 +1,7 @@
-Index: magics++-2.33.0/src/magics_config.h.in
+Index: magics++-3.0.0/src/magics_config.h.in
 ===================================================================
---- magics++-2.33.0.orig/src/magics_config.h.in
-+++ magics++-2.33.0/src/magics_config.h.in
+--- magics++-3.0.0.orig/src/magics_config.h.in
++++ magics++-3.0.0/src/magics_config.h.in
 @@ -80,7 +80,9 @@
  #cmakedefine MAGICS_COPYRIGHT_PERIOD
  
diff --git a/debian/patches/numpy-fixes.patch b/debian/patches/numpy-fixes.patch
index ad29e71..bfacbde 100644
--- a/debian/patches/numpy-fixes.patch
+++ b/debian/patches/numpy-fixes.patch
@@ -4,2494 +4,3 @@ Description: Update the numpy.i from a copy in numpy.git to add
 Last-Updated: 2016-10-29
 Forwarded: no
 
-Index: magics++-2.33.0/python/numpy.i
-===================================================================
---- magics++-2.33.0.orig/python/numpy.i
-+++ magics++-2.33.0/python/numpy.i
-@@ -1,11 +1,46 @@
- /* -*- C -*-  (not really, but good for syntax highlighting) */
-+
-+/*
-+ * Copyright (c) 2005-2015, NumPy Developers.
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions are
-+ * met:
-+ *
-+ *     * Redistributions of source code must retain the above copyright
-+ *        notice, this list of conditions and the following disclaimer.
-+ *
-+ *     * Redistributions in binary form must reproduce the above
-+ *        copyright notice, this list of conditions and the following
-+ *        disclaimer in the documentation and/or other materials provided
-+ *        with the distribution.
-+ *
-+ *     * Neither the name of the NumPy Developers nor the names of any
-+ *        contributors may be used to endorse or promote products derived
-+ *        from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ */
-+
- #ifdef SWIGPYTHON
- 
- %{
- #ifndef SWIG_FILE_WITH_INIT
--#  define NO_IMPORT_ARRAY
-+#define NO_IMPORT_ARRAY
- #endif
- #include "stdio.h"
-+#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
- #include <numpy/arrayobject.h>
- %}
- 
-@@ -13,56 +48,10 @@
- 
- %fragment("NumPy_Backward_Compatibility", "header")
- {
--/* Support older NumPy data type names
--*/
--%#if NDARRAY_VERSION < 0x01000000
--%#define NPY_BOOL          PyArray_BOOL
--%#define NPY_BYTE          PyArray_BYTE
--%#define NPY_UBYTE         PyArray_UBYTE
--%#define NPY_SHORT         PyArray_SHORT
--%#define NPY_USHORT        PyArray_USHORT
--%#define NPY_INT           PyArray_INT
--%#define NPY_UINT          PyArray_UINT
--%#define NPY_LONG          PyArray_LONG
--%#define NPY_ULONG         PyArray_ULONG
--%#define NPY_LONGLONG      PyArray_LONGLONG
--%#define NPY_ULONGLONG     PyArray_ULONGLONG
--%#define NPY_FLOAT         PyArray_FLOAT
--%#define NPY_DOUBLE        PyArray_DOUBLE
--%#define NPY_LONGDOUBLE    PyArray_LONGDOUBLE
--%#define NPY_CFLOAT        PyArray_CFLOAT
--%#define NPY_CDOUBLE       PyArray_CDOUBLE
--%#define NPY_CLONGDOUBLE   PyArray_CLONGDOUBLE
--%#define NPY_OBJECT        PyArray_OBJECT
--%#define NPY_STRING        PyArray_STRING
--%#define NPY_UNICODE       PyArray_UNICODE
--%#define NPY_VOID          PyArray_VOID
--%#define NPY_NTYPES        PyArray_NTYPES
--%#define NPY_NOTYPE        PyArray_NOTYPE
--%#define NPY_CHAR          PyArray_CHAR
--%#define NPY_USERDEF       PyArray_USERDEF
--%#define npy_intp          intp
--
--%#define NPY_MAX_BYTE      MAX_BYTE
--%#define NPY_MIN_BYTE      MIN_BYTE
--%#define NPY_MAX_UBYTE     MAX_UBYTE
--%#define NPY_MAX_SHORT     MAX_SHORT
--%#define NPY_MIN_SHORT     MIN_SHORT
--%#define NPY_MAX_USHORT    MAX_USHORT
--%#define NPY_MAX_INT       MAX_INT
--%#define NPY_MIN_INT       MIN_INT
--%#define NPY_MAX_UINT      MAX_UINT
--%#define NPY_MAX_LONG      MAX_LONG
--%#define NPY_MIN_LONG      MIN_LONG
--%#define NPY_MAX_ULONG     MAX_ULONG
--%#define NPY_MAX_LONGLONG  MAX_LONGLONG
--%#define NPY_MIN_LONGLONG  MIN_LONGLONG
--%#define NPY_MAX_ULONGLONG MAX_ULONGLONG
--%#define NPY_MAX_INTP      MAX_INTP
--%#define NPY_MIN_INTP      MIN_INTP
--
--%#define NPY_FARRAY        FARRAY
--%#define NPY_F_CONTIGUOUS  F_CONTIGUOUS
-+%#if NPY_API_VERSION < 0x00000007
-+%#define NPY_ARRAY_DEFAULT NPY_DEFAULT
-+%#define NPY_ARRAY_FARRAY  NPY_FARRAY
-+%#define NPY_FORTRANORDER  NPY_FORTRAN
- %#endif
- }
- 
-@@ -80,24 +69,45 @@
- {
- /* Macros to extract array attributes.
-  */
--%#define is_array(a)            ((a) && PyArray_Check((PyArrayObject *)a))
--%#define array_type(a)          (int)(PyArray_TYPE(a))
--%#define array_numdims(a)       (((PyArrayObject *)a)->nd)
--%#define array_dimensions(a)    (((PyArrayObject *)a)->dimensions)
--%#define array_size(a,i)        (((PyArrayObject *)a)->dimensions[i])
--%#define array_data(a)          (((PyArrayObject *)a)->data)
--%#define array_is_contiguous(a) (PyArray_ISCONTIGUOUS(a))
--%#define array_is_native(a)     (PyArray_ISNOTSWAPPED(a))
--%#define array_is_fortran(a)    (PyArray_ISFORTRAN(a))
-+%#if NPY_API_VERSION < 0x00000007
-+%#define is_array(a)            ((a) && PyArray_Check((PyArrayObject*)a))
-+%#define array_type(a)          (int)(PyArray_TYPE((PyArrayObject*)a))
-+%#define array_numdims(a)       (((PyArrayObject*)a)->nd)
-+%#define array_dimensions(a)    (((PyArrayObject*)a)->dimensions)
-+%#define array_size(a,i)        (((PyArrayObject*)a)->dimensions[i])
-+%#define array_strides(a)       (((PyArrayObject*)a)->strides)
-+%#define array_stride(a,i)      (((PyArrayObject*)a)->strides[i])
-+%#define array_data(a)          (((PyArrayObject*)a)->data)
-+%#define array_descr(a)         (((PyArrayObject*)a)->descr)
-+%#define array_flags(a)         (((PyArrayObject*)a)->flags)
-+%#define array_enableflags(a,f) (((PyArrayObject*)a)->flags) = f
-+%#else
-+%#define is_array(a)            ((a) && PyArray_Check(a))
-+%#define array_type(a)          PyArray_TYPE((PyArrayObject*)a)
-+%#define array_numdims(a)       PyArray_NDIM((PyArrayObject*)a)
-+%#define array_dimensions(a)    PyArray_DIMS((PyArrayObject*)a)
-+%#define array_strides(a)       PyArray_STRIDES((PyArrayObject*)a)
-+%#define array_stride(a,i)      PyArray_STRIDE((PyArrayObject*)a,i)
-+%#define array_size(a,i)        PyArray_DIM((PyArrayObject*)a,i)
-+%#define array_data(a)          PyArray_DATA((PyArrayObject*)a)
-+%#define array_descr(a)         PyArray_DESCR((PyArrayObject*)a)
-+%#define array_flags(a)         PyArray_FLAGS((PyArrayObject*)a)
-+%#define array_enableflags(a,f) PyArray_ENABLEFLAGS((PyArrayObject*)a,f)
-+%#endif
-+%#define array_is_contiguous(a) (PyArray_ISCONTIGUOUS((PyArrayObject*)a))
-+%#define array_is_native(a)     (PyArray_ISNOTSWAPPED((PyArrayObject*)a))
-+%#define array_is_fortran(a)    (PyArray_IS_F_CONTIGUOUS((PyArrayObject*)a))
- }
- 
- /**********************************************************************/
- 
--%fragment("NumPy_Utilities", "header")
-+%fragment("NumPy_Utilities",
-+          "header")
- {
-   /* Given a PyObject, return a string describing its type.
-    */
--  const char* pytype_string(PyObject* py_obj) {
-+  const char* pytype_string(PyObject* py_obj)
-+  {
-     if (py_obj == NULL          ) return "C NULL value";
-     if (py_obj == Py_None       ) return "Python None" ;
-     if (PyCallable_Check(py_obj)) return "callable"    ;
-@@ -107,10 +117,11 @@
-     if (PyDict_Check(    py_obj)) return "dict"        ;
-     if (PyList_Check(    py_obj)) return "list"        ;
-     if (PyTuple_Check(   py_obj)) return "tuple"       ;
-+%#if PY_MAJOR_VERSION < 3
-     if (PyFile_Check(    py_obj)) return "file"        ;
-     if (PyModule_Check(  py_obj)) return "module"      ;
-     if (PyInstance_Check(py_obj)) return "instance"    ;
--
-+%#endif
-     return "unknown type";
-   }
- 
-@@ -149,7 +160,8 @@
-    * legal.  If not, set the python error string appropriately and
-    * return NULL.
-    */
--  PyArrayObject* obj_to_array_no_conversion(PyObject* input, int typecode)
-+  PyArrayObject* obj_to_array_no_conversion(PyObject* input,
-+                                            int        typecode)
-   {
-     PyArrayObject* ary = NULL;
-     if (is_array(input) && (typecode == NPY_NOTYPE ||
-@@ -168,11 +180,12 @@
-     }
-     else
-     {
--      const char * desired_type = typecode_string(typecode);
--      const char * actual_type  = pytype_string(input);
-+      const char* desired_type = typecode_string(typecode);
-+      const char* actual_type  = pytype_string(input);
-       PyErr_Format(PyExc_TypeError,
-                    "Array of type '%s' required.  A '%s' was given",
--                   desired_type, actual_type);
-+                   desired_type,
-+                   actual_type);
-       ary = NULL;
-     }
-     return ary;
-@@ -183,11 +196,12 @@
-    * correct type.  On failure, the python error string will be set and
-    * the routine returns NULL.
-    */
--  PyArrayObject* obj_to_array_allow_conversion(PyObject* input, int typecode,
--                                               int* is_new_object)
-+  PyArrayObject* obj_to_array_allow_conversion(PyObject* input,
-+                                               int       typecode,
-+                                               int*      is_new_object)
-   {
-     PyArrayObject* ary = NULL;
--    PyObject* py_obj;
-+    PyObject*      py_obj;
-     if (is_array(input) && (typecode == NPY_NOTYPE ||
-                             PyArray_EquivTypenums(array_type(input),typecode)))
-     {
-@@ -196,7 +210,7 @@
-     }
-     else
-     {
--      py_obj = PyArray_FROMANY(input, typecode, 0, 0, NPY_DEFAULT);
-+      py_obj = PyArray_FROMANY(input, typecode, 0, 0, NPY_ARRAY_DEFAULT);
-       /* If NULL, PyArray_FromObject will have set python error value.*/
-       ary = (PyArrayObject*) py_obj;
-       *is_new_object = 1;
-@@ -209,8 +223,10 @@
-    * not contiguous, create a new PyArrayObject using the original data,
-    * flag it as a new object and return the pointer.
-    */
--  PyArrayObject* make_contiguous(PyArrayObject* ary, int* is_new_object,
--                                 int min_dims, int max_dims)
-+  PyArrayObject* make_contiguous(PyArrayObject* ary,
-+                                 int*           is_new_object,
-+                                 int            min_dims,
-+                                 int            max_dims)
-   {
-     PyArrayObject* result;
-     if (array_is_contiguous(ary))
-@@ -221,9 +237,9 @@
-     else
-     {
-       result = (PyArrayObject*) PyArray_ContiguousFromObject((PyObject*)ary,
--                                                             array_type(ary),
--                                                             min_dims,
--                                                             max_dims);
-+                                                              array_type(ary),
-+                                                              min_dims,
-+                                                              max_dims);
-       *is_new_object = 1;
-     }
-     return result;
-@@ -235,8 +251,8 @@
-    * PyArrayObject using the original data, flag it as a new object
-    * and return the pointer.
-    */
--  PyArrayObject* make_fortran(PyArrayObject* ary, int* is_new_object,
--                              int min_dims, int max_dims)
-+  PyArrayObject* make_fortran(PyArrayObject* ary,
-+                              int*           is_new_object)
-   {
-     PyArrayObject* result;
-     if (array_is_fortran(ary))
-@@ -246,8 +262,10 @@
-     }
-     else
-     {
--      Py_INCREF(ary->descr);
--      result = (PyArrayObject*) PyArray_FromArray(ary, ary->descr, NPY_FORTRAN);
-+      Py_INCREF(array_descr(ary));
-+      result = (PyArrayObject*) PyArray_FromArray(ary,
-+                                                  array_descr(ary),
-+                                                  NPY_ARRAY_F_CONTIGUOUS);
-       *is_new_object = 1;
-     }
-     return result;
-@@ -259,13 +277,14 @@
-    * will be set.
-    */
-   PyArrayObject* obj_to_array_contiguous_allow_conversion(PyObject* input,
--                                                          int typecode,
--                                                          int* is_new_object)
-+                                                          int       typecode,
-+                                                          int*      is_new_object)
-   {
-     int is_new1 = 0;
-     int is_new2 = 0;
-     PyArrayObject* ary2;
--    PyArrayObject* ary1 = obj_to_array_allow_conversion(input, typecode,
-+    PyArrayObject* ary1 = obj_to_array_allow_conversion(input,
-+                                                        typecode,
-                                                         &is_new1);
-     if (ary1)
-     {
-@@ -286,17 +305,18 @@
-    * will be set.
-    */
-   PyArrayObject* obj_to_array_fortran_allow_conversion(PyObject* input,
--                                                       int typecode,
--                                                       int* is_new_object)
-+                                                       int       typecode,
-+                                                       int*      is_new_object)
-   {
-     int is_new1 = 0;
-     int is_new2 = 0;
-     PyArrayObject* ary2;
--    PyArrayObject* ary1 = obj_to_array_allow_conversion(input, typecode,
-+    PyArrayObject* ary1 = obj_to_array_allow_conversion(input,
-+                                                        typecode,
-                                                         &is_new1);
-     if (ary1)
-     {
--      ary2 = make_fortran(ary1, &is_new2, 0, 0);
-+      ary2 = make_fortran(ary1, &is_new2);
-       if (is_new1 && is_new2)
-       {
-         Py_DECREF(ary1);
-@@ -306,13 +326,12 @@
-     *is_new_object = is_new1 || is_new2;
-     return ary1;
-   }
--
- } /* end fragment */
- 
--
- /**********************************************************************/
- 
--%fragment("NumPy_Array_Requirements", "header",
-+%fragment("NumPy_Array_Requirements",
-+          "header",
-           fragment="NumPy_Backward_Compatibility",
-           fragment="NumPy_Macros")
- {
-@@ -332,6 +351,22 @@
-     return contiguous;
-   }
- 
-+  /* Test whether a python object is (C_ or F_) contiguous.  If array is
-+   * contiguous, return 1.  Otherwise, set the python error string and
-+   * return 0.
-+   */
-+  int require_c_or_f_contiguous(PyArrayObject* ary)
-+  {
-+    int contiguous = 1;
-+    if (!(array_is_contiguous(ary) || array_is_fortran(ary)))
-+    {
-+      PyErr_SetString(PyExc_TypeError,
-+                      "Array must be contiguous (C_ or F_).  A non-contiguous array was given");
-+      contiguous = 0;
-+    }
-+    return contiguous;
-+  }
-+
-   /* Require that a numpy array is not byte-swapped.  If the array is
-    * not byte-swapped, return 1.  Otherwise, set the python error string
-    * and return 0.
-@@ -353,14 +388,16 @@
-    * dimensions.  If the array has the specified number of dimensions,
-    * return 1.  Otherwise, set the python error string and return 0.
-    */
--  int require_dimensions(PyArrayObject* ary, int exact_dimensions)
-+  int require_dimensions(PyArrayObject* ary,
-+                         int            exact_dimensions)
-   {
-     int success = 1;
-     if (array_numdims(ary) != exact_dimensions)
-     {
-       PyErr_Format(PyExc_TypeError,
-                    "Array must have %d dimensions.  Given array has %d dimensions",
--                   exact_dimensions, array_numdims(ary));
-+                   exact_dimensions,
-+                   array_numdims(ary));
-       success = 0;
-     }
-     return success;
-@@ -371,7 +408,9 @@
-    * of dimensions, return 1.  Otherwise, set the python error string
-    * and return 0.
-    */
--  int require_dimensions_n(PyArrayObject* ary, int* exact_dimensions, int n)
-+  int require_dimensions_n(PyArrayObject* ary,
-+                           int*           exact_dimensions,
-+                           int            n)
-   {
-     int success = 0;
-     int i;
-@@ -395,7 +434,8 @@
-       strcat(dims_str,s);
-       PyErr_Format(PyExc_TypeError,
-                    "Array must have %s dimensions.  Given array has %d dimensions",
--                   dims_str, array_numdims(ary));
-+                   dims_str,
-+                   array_numdims(ary));
-     }
-     return success;
-   }
-@@ -404,7 +444,9 @@
-    * array has the specified shape, return 1.  Otherwise, set the python
-    * error string and return 0.
-    */
--  int require_size(PyArrayObject* ary, npy_intp* size, int n)
-+  int require_size(PyArrayObject* ary,
-+                   npy_intp*      size,
-+                   int            n)
-   {
-     int i;
-     int success = 1;
-@@ -444,104 +486,152 @@
-       actual_dims[len-1] = ']';
-       PyErr_Format(PyExc_TypeError,
-                    "Array must have shape of %s.  Given array has shape of %s",
--                   desired_dims, actual_dims);
-+                   desired_dims,
-+                   actual_dims);
-     }
-     return success;
-   }
- 
--  /* Require the given PyArrayObject to to be FORTRAN ordered.  If the
--   * the PyArrayObject is already FORTRAN ordered, do nothing.  Else,
--   * set the FORTRAN ordering flag and recompute the strides.
-+  /* Require the given PyArrayObject to to be Fortran ordered.  If the
-+   * the PyArrayObject is already Fortran ordered, do nothing.  Else,
-+   * set the Fortran ordering flag and recompute the strides.
-    */
-   int require_fortran(PyArrayObject* ary)
-   {
-     int success = 1;
-     int nd = array_numdims(ary);
-     int i;
-+    npy_intp * strides = array_strides(ary);
-     if (array_is_fortran(ary)) return success;
--    /* Set the FORTRAN ordered flag */
--    ary->flags = NPY_FARRAY;
-+    /* Set the Fortran ordered flag */
-+    array_enableflags(ary,NPY_ARRAY_FARRAY);
-     /* Recompute the strides */
--    ary->strides[0] = ary->strides[nd-1];
-+    strides[0] = strides[nd-1];
-     for (i=1; i < nd; ++i)
--      ary->strides[i] = ary->strides[i-1] * array_size(ary,i-1);
-+      strides[i] = strides[i-1] * array_size(ary,i-1);
-     return success;
-   }
- }
- 
- /* Combine all NumPy fragments into one for convenience */
--%fragment("NumPy_Fragments", "header",
-+%fragment("NumPy_Fragments",
-+          "header",
-           fragment="NumPy_Backward_Compatibility",
-           fragment="NumPy_Macros",
-           fragment="NumPy_Utilities",
-           fragment="NumPy_Object_to_Array",
--          fragment="NumPy_Array_Requirements") { }
-+          fragment="NumPy_Array_Requirements")
-+{
-+}
- 
- /* End John Hunter translation (with modifications by Bill Spotz)
-  */
- 
- /* %numpy_typemaps() macro
-  *
-- * This macro defines a family of 41 typemaps that allow C arguments
-+ * This macro defines a family of 75 typemaps that allow C arguments
-  * of the form
-  *
-- *     (DATA_TYPE IN_ARRAY1[ANY])
-- *     (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
-- *     (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
-- *
-- *     (DATA_TYPE IN_ARRAY2[ANY][ANY])
-- *     (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-- *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
-- *     (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-- *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
-- *
-- *     (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
-- *     (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-- *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
-- *     (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-- *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
-- *
-- *     (DATA_TYPE INPLACE_ARRAY1[ANY])
-- *     (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
-- *     (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
-- *
-- *     (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
-- *     (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-- *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
-- *     (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-- *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
-- *
-- *     (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
-- *     (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-- *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
-- *     (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-- *     (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
-- *
-- *     (DATA_TYPE ARGOUT_ARRAY1[ANY])
-- *     (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
-- *     (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
-- *
-- *     (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
-- *
-- *     (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
-- *
-- *     (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
-- *     (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
-- *
-- *     (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-- *     (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
-- *     (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-- *     (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
-- *
-- *     (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-- *     (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
-- *     (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-- *     (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
-+ *    1. (DATA_TYPE IN_ARRAY1[ANY])
-+ *    2. (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
-+ *    3. (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
-+ *
-+ *    4. (DATA_TYPE IN_ARRAY2[ANY][ANY])
-+ *    5. (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-+ *    6. (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
-+ *    7. (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-+ *    8. (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
-+ *
-+ *    9. (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
-+ *   10. (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+ *   11. (DATA_TYPE** IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+ *   12. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
-+ *   13. (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+ *   14. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
-+ *
-+ *   15. (DATA_TYPE IN_ARRAY4[ANY][ANY][ANY][ANY])
-+ *   16. (DATA_TYPE* IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ *   17. (DATA_TYPE** IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ *   18. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, , DIM_TYPE DIM4, DATA_TYPE* IN_ARRAY4)
-+ *   19. (DATA_TYPE* IN_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ *   20. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_FARRAY4)
-+ *
-+ *   21. (DATA_TYPE INPLACE_ARRAY1[ANY])
-+ *   22. (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
-+ *   23. (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
-+ *
-+ *   24. (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
-+ *   25. (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-+ *   26. (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
-+ *   27. (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-+ *   28. (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
-+ *
-+ *   29. (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
-+ *   30. (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+ *   31. (DATA_TYPE** INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+ *   32. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
-+ *   33. (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+ *   34. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
-+ *
-+ *   35. (DATA_TYPE INPLACE_ARRAY4[ANY][ANY][ANY][ANY])
-+ *   36. (DATA_TYPE* INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ *   37. (DATA_TYPE** INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ *   38. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_ARRAY4)
-+ *   39. (DATA_TYPE* INPLACE_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ *   40. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_FARRAY4)
-+ *
-+ *   41. (DATA_TYPE ARGOUT_ARRAY1[ANY])
-+ *   42. (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
-+ *   43. (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
-+ *
-+ *   44. (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
-+ *
-+ *   45. (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
-+ *
-+ *   46. (DATA_TYPE ARGOUT_ARRAY4[ANY][ANY][ANY][ANY])
-+ *
-+ *   47. (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
-+ *   48. (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
-+ *
-+ *   49. (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-+ *   50. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
-+ *   51. (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-+ *   52. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
-+ *
-+ *   53. (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-+ *   54. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
-+ *   55. (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-+ *   56. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
-+ *
-+ *   57. (DATA_TYPE** ARGOUTVIEW_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+ *   58. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEW_ARRAY4)
-+ *   59. (DATA_TYPE** ARGOUTVIEW_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+ *   60. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEW_FARRAY4)
-+ *
-+ *   61. (DATA_TYPE** ARGOUTVIEWM_ARRAY1, DIM_TYPE* DIM1)
-+ *   62. (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEWM_ARRAY1)
-+ *
-+ *   63. (DATA_TYPE** ARGOUTVIEWM_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-+ *   64. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_ARRAY2)
-+ *   65. (DATA_TYPE** ARGOUTVIEWM_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-+ *   66. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_FARRAY2)
-+ *
-+ *   67. (DATA_TYPE** ARGOUTVIEWM_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-+ *   68. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEWM_ARRAY3)
-+ *   69. (DATA_TYPE** ARGOUTVIEWM_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-+ *   70. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEWM_FARRAY3)
-+ *
-+ *   71. (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+ *   72. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_ARRAY4)
-+ *   73. (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+ *   74. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_FARRAY4)
-+ *
-+ *   75. (DATA_TYPE* INPLACE_ARRAY_FLAT, DIM_TYPE DIM_FLAT)
-  *
-  * where "DATA_TYPE" is any type supported by the NumPy module, and
-  * "DIM_TYPE" is any int-like type suitable for specifying dimensions.
-  * The difference between "ARRAY" typemaps and "FARRAY" typemaps is
-- * that the "FARRAY" typemaps expect FORTRAN ordering of
-+ * that the "FARRAY" typemaps expect Fortran ordering of
-  * multidimensional arrays.  In python, the dimensions will not need
-  * to be specified (except for the "DATA_TYPE* ARGOUT_ARRAY1"
-  * typemaps).  The IN_ARRAYs can be a numpy array or any sequence that
-@@ -601,7 +691,8 @@
-   (PyArrayObject* array=NULL, int is_new_object=0)
- {
-   npy_intp size[1] = { $1_dim0 };
--  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-+  array = obj_to_array_contiguous_allow_conversion($input,
-+                                                   DATA_TYPECODE,
-                                                    &is_new_object);
-   if (!array || !require_dimensions(array, 1) ||
-       !require_size(array, size, 1)) SWIG_fail;
-@@ -628,7 +719,8 @@
-   (PyArrayObject* array=NULL, int is_new_object=0)
- {
-   npy_intp size[1] = { -1 };
--  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-+  array = obj_to_array_contiguous_allow_conversion($input,
-+                                                   DATA_TYPECODE,
-                                                    &is_new_object);
-   if (!array || !require_dimensions(array, 1) ||
-       !require_size(array, size, 1)) SWIG_fail;
-@@ -656,7 +748,8 @@
-   (PyArrayObject* array=NULL, int is_new_object=0)
- {
-   npy_intp size[1] = {-1};
--  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-+  array = obj_to_array_contiguous_allow_conversion($input,
-+                                                   DATA_TYPECODE,
-                                                    &is_new_object);
-   if (!array || !require_dimensions(array, 1) ||
-       !require_size(array, size, 1)) SWIG_fail;
-@@ -684,7 +777,8 @@
-   (PyArrayObject* array=NULL, int is_new_object=0)
- {
-   npy_intp size[2] = { $1_dim0, $1_dim1 };
--  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-+  array = obj_to_array_contiguous_allow_conversion($input,
-+                                                   DATA_TYPECODE,
-                                                    &is_new_object);
-   if (!array || !require_dimensions(array, 2) ||
-       !require_size(array, size, 2)) SWIG_fail;
-@@ -740,7 +834,8 @@
-   (PyArrayObject* array=NULL, int is_new_object=0)
- {
-   npy_intp size[2] = { -1, -1 };
--  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-+  array = obj_to_array_contiguous_allow_conversion($input,
-+                                                   DATA_TYPECODE,
-                                                    &is_new_object);
-   if (!array || !require_dimensions(array, 2) ||
-       !require_size(array, size, 2)) SWIG_fail;
-@@ -769,7 +864,8 @@
-   (PyArrayObject* array=NULL, int is_new_object=0)
- {
-   npy_intp size[2] = { -1, -1 };
--  array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
-+  array = obj_to_array_fortran_allow_conversion($input,
-+                                                DATA_TYPECODE,
-                                                 &is_new_object);
-   if (!array || !require_dimensions(array, 2) ||
-       !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
-@@ -798,7 +894,8 @@
-   (PyArrayObject* array=NULL, int is_new_object=0)
- {
-   npy_intp size[2] = { -1, -1 };
--  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-+  array = obj_to_array_fortran_allow_conversion($input,
-+                                                   DATA_TYPECODE,
-                                                    &is_new_object);
-   if (!array || !require_dimensions(array, 2) ||
-       !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
-@@ -827,7 +924,8 @@
-   (PyArrayObject* array=NULL, int is_new_object=0)
- {
-   npy_intp size[3] = { $1_dim0, $1_dim1, $1_dim2 };
--  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-+  array = obj_to_array_contiguous_allow_conversion($input,
-+                                                   DATA_TYPECODE,
-                                                    &is_new_object);
-   if (!array || !require_dimensions(array, 3) ||
-       !require_size(array, size, 3)) SWIG_fail;
-@@ -871,6 +969,88 @@
-     { Py_DECREF(array$argnum); }
- }
- 
-+/* Typemap suite for (DATA_TYPE** IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
-+ *                    DIM_TYPE DIM3)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DATA_TYPE** IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+{
-+  /* for now, only concerned with lists */
-+  $1 = PySequence_Check($input);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DATA_TYPE** IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+  (DATA_TYPE** array=NULL, PyArrayObject** object_array=NULL, int* is_new_object_array=NULL)
-+{
-+  npy_intp size[2] = { -1, -1 };
-+  PyArrayObject* temp_array;
-+  Py_ssize_t i;
-+  int is_new_object;
-+
-+  /* length of the list */
-+  $2 = PyList_Size($input);
-+
-+  /* the arrays */
-+  array = (DATA_TYPE **)malloc($2*sizeof(DATA_TYPE *));
-+  object_array = (PyArrayObject **)calloc($2,sizeof(PyArrayObject *));
-+  is_new_object_array = (int *)calloc($2,sizeof(int));
-+
-+  if (array == NULL || object_array == NULL || is_new_object_array == NULL)
-+  {
-+    SWIG_fail;
-+  }
-+
-+  for (i=0; i<$2; i++)
-+  {
-+    temp_array = obj_to_array_contiguous_allow_conversion(PySequence_GetItem($input,i), DATA_TYPECODE, &is_new_object);
-+
-+    /* the new array must be stored so that it can be destroyed in freearg */
-+    object_array[i] = temp_array;
-+    is_new_object_array[i] = is_new_object;
-+
-+    if (!temp_array || !require_dimensions(temp_array, 2)) SWIG_fail;
-+
-+    /* store the size of the first array in the list, then use that for comparison. */
-+    if (i == 0)
-+    {
-+      size[0] = array_size(temp_array,0);
-+      size[1] = array_size(temp_array,1);
-+    }
-+
-+    if (!require_size(temp_array, size, 2)) SWIG_fail;
-+
-+    array[i] = (DATA_TYPE*) array_data(temp_array);
-+  }
-+
-+  $1 = (DATA_TYPE**) array;
-+  $3 = (DIM_TYPE) size[0];
-+  $4 = (DIM_TYPE) size[1];
-+}
-+%typemap(freearg)
-+  (DATA_TYPE** IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+{
-+  Py_ssize_t i;
-+
-+  if (array$argnum!=NULL) free(array$argnum);
-+
-+  /*freeing the individual arrays if needed */
-+  if (object_array$argnum!=NULL)
-+  {
-+    if (is_new_object_array$argnum!=NULL)
-+    {
-+      for (i=0; i<$2; i++)
-+      {
-+        if (object_array$argnum[i] != NULL && is_new_object_array$argnum[i])
-+        { Py_DECREF(object_array$argnum[i]); }
-+      }
-+      free(is_new_object_array$argnum);
-+    }
-+    free(object_array$argnum);
-+  }
-+}
-+
- /* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
-  *                    DATA_TYPE* IN_ARRAY3)
-  */
-@@ -948,7 +1128,8 @@
-   (PyArrayObject* array=NULL, int is_new_object=0)
- {
-   npy_intp size[3] = { -1, -1, -1 };
--  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-+  array = obj_to_array_fortran_allow_conversion($input,
-+                                                   DATA_TYPECODE,
-                                                    &is_new_object);
-   if (!array || !require_dimensions(array, 3) ||
-       !require_size(array, size, 3) || !require_fortran(array)) SWIG_fail;
-@@ -964,6 +1145,245 @@
-     { Py_DECREF(array$argnum); }
- }
- 
-+/* Typemap suite for (DATA_TYPE IN_ARRAY4[ANY][ANY][ANY][ANY])
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DATA_TYPE IN_ARRAY4[ANY][ANY][ANY][ANY])
-+{
-+  $1 = is_array($input) || PySequence_Check($input);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DATA_TYPE IN_ARRAY4[ANY][ANY][ANY][ANY])
-+  (PyArrayObject* array=NULL, int is_new_object=0)
-+{
-+  npy_intp size[4] = { $1_dim0, $1_dim1, $1_dim2 , $1_dim3};
-+  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-+                                                   &is_new_object);
-+  if (!array || !require_dimensions(array, 4) ||
-+      !require_size(array, size, 4)) SWIG_fail;
-+  $1 = ($1_ltype) array_data(array);
-+}
-+%typemap(freearg)
-+  (DATA_TYPE IN_ARRAY4[ANY][ANY][ANY][ANY])
-+{
-+  if (is_new_object$argnum && array$argnum)
-+    { Py_DECREF(array$argnum); }
-+}
-+
-+/* Typemap suite for (DATA_TYPE* IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
-+ *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DATA_TYPE* IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+{
-+  $1 = is_array($input) || PySequence_Check($input);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DATA_TYPE* IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+  (PyArrayObject* array=NULL, int is_new_object=0)
-+{
-+  npy_intp size[4] = { -1, -1, -1, -1 };
-+  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-+                                                   &is_new_object);
-+  if (!array || !require_dimensions(array, 4) ||
-+      !require_size(array, size, 4)) SWIG_fail;
-+  $1 = (DATA_TYPE*) array_data(array);
-+  $2 = (DIM_TYPE) array_size(array,0);
-+  $3 = (DIM_TYPE) array_size(array,1);
-+  $4 = (DIM_TYPE) array_size(array,2);
-+  $5 = (DIM_TYPE) array_size(array,3);
-+}
-+%typemap(freearg)
-+  (DATA_TYPE* IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+{
-+  if (is_new_object$argnum && array$argnum)
-+    { Py_DECREF(array$argnum); }
-+}
-+
-+/* Typemap suite for (DATA_TYPE** IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
-+ *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DATA_TYPE** IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+{
-+  /* for now, only concerned with lists */
-+  $1 = PySequence_Check($input);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DATA_TYPE** IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+  (DATA_TYPE** array=NULL, PyArrayObject** object_array=NULL, int* is_new_object_array=NULL)
-+{
-+  npy_intp size[3] = { -1, -1, -1 };
-+  PyArrayObject* temp_array;
-+  Py_ssize_t i;
-+  int is_new_object;
-+
-+  /* length of the list */
-+  $2 = PyList_Size($input);
-+
-+  /* the arrays */
-+  array = (DATA_TYPE **)malloc($2*sizeof(DATA_TYPE *));
-+  object_array = (PyArrayObject **)calloc($2,sizeof(PyArrayObject *));
-+  is_new_object_array = (int *)calloc($2,sizeof(int));
-+
-+  if (array == NULL || object_array == NULL || is_new_object_array == NULL)
-+  {
-+    SWIG_fail;
-+  }
-+
-+  for (i=0; i<$2; i++)
-+  {
-+    temp_array = obj_to_array_contiguous_allow_conversion(PySequence_GetItem($input,i), DATA_TYPECODE, &is_new_object);
-+
-+    /* the new array must be stored so that it can be destroyed in freearg */
-+    object_array[i] = temp_array;
-+    is_new_object_array[i] = is_new_object;
-+
-+    if (!temp_array || !require_dimensions(temp_array, 3)) SWIG_fail;
-+
-+    /* store the size of the first array in the list, then use that for comparison. */
-+    if (i == 0)
-+    {
-+      size[0] = array_size(temp_array,0);
-+      size[1] = array_size(temp_array,1);
-+      size[2] = array_size(temp_array,2);
-+    }
-+
-+    if (!require_size(temp_array, size, 3)) SWIG_fail;
-+
-+    array[i] = (DATA_TYPE*) array_data(temp_array);
-+  }
-+
-+  $1 = (DATA_TYPE**) array;
-+  $3 = (DIM_TYPE) size[0];
-+  $4 = (DIM_TYPE) size[1];
-+  $5 = (DIM_TYPE) size[2];
-+}
-+%typemap(freearg)
-+  (DATA_TYPE** IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+{
-+  Py_ssize_t i;
-+
-+  if (array$argnum!=NULL) free(array$argnum);
-+
-+  /*freeing the individual arrays if needed */
-+  if (object_array$argnum!=NULL)
-+  {
-+    if (is_new_object_array$argnum!=NULL)
-+    {
-+      for (i=0; i<$2; i++)
-+      {
-+        if (object_array$argnum[i] != NULL && is_new_object_array$argnum[i])
-+        { Py_DECREF(object_array$argnum[i]); }
-+      }
-+      free(is_new_object_array$argnum);
-+    }
-+    free(object_array$argnum);
-+  }
-+}
-+
-+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4,
-+ *                    DATA_TYPE* IN_ARRAY4)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_ARRAY4)
-+{
-+  $1 = is_array($input) || PySequence_Check($input);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_ARRAY4)
-+  (PyArrayObject* array=NULL, int is_new_object=0)
-+{
-+  npy_intp size[4] = { -1, -1, -1 , -1};
-+  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-+                                                   &is_new_object);
-+  if (!array || !require_dimensions(array, 4) ||
-+      !require_size(array, size, 4)) SWIG_fail;
-+  $1 = (DIM_TYPE) array_size(array,0);
-+  $2 = (DIM_TYPE) array_size(array,1);
-+  $3 = (DIM_TYPE) array_size(array,2);
-+  $4 = (DIM_TYPE) array_size(array,3);
-+  $5 = (DATA_TYPE*) array_data(array);
-+}
-+%typemap(freearg)
-+  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_ARRAY4)
-+{
-+  if (is_new_object$argnum && array$argnum)
-+    { Py_DECREF(array$argnum); }
-+}
-+
-+/* Typemap suite for (DATA_TYPE* IN_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
-+ *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DATA_TYPE* IN_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+{
-+  $1 = is_array($input) || PySequence_Check($input);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DATA_TYPE* IN_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+  (PyArrayObject* array=NULL, int is_new_object=0)
-+{
-+  npy_intp size[4] = { -1, -1, -1, -1 };
-+  array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
-+                                                &is_new_object);
-+  if (!array || !require_dimensions(array, 4) ||
-+      !require_size(array, size, 4) | !require_fortran(array)) SWIG_fail;
-+  $1 = (DATA_TYPE*) array_data(array);
-+  $2 = (DIM_TYPE) array_size(array,0);
-+  $3 = (DIM_TYPE) array_size(array,1);
-+  $4 = (DIM_TYPE) array_size(array,2);
-+  $5 = (DIM_TYPE) array_size(array,3);
-+}
-+%typemap(freearg)
-+  (DATA_TYPE* IN_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+{
-+  if (is_new_object$argnum && array$argnum)
-+    { Py_DECREF(array$argnum); }
-+}
-+
-+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4,
-+ *                    DATA_TYPE* IN_FARRAY4)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_FARRAY4)
-+{
-+  $1 = is_array($input) || PySequence_Check($input);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_FARRAY4)
-+  (PyArrayObject* array=NULL, int is_new_object=0)
-+{
-+  npy_intp size[4] = { -1, -1, -1 , -1 };
-+  array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
-+                                                   &is_new_object);
-+  if (!array || !require_dimensions(array, 4) ||
-+      !require_size(array, size, 4) || !require_fortran(array)) SWIG_fail;
-+  $1 = (DIM_TYPE) array_size(array,0);
-+  $2 = (DIM_TYPE) array_size(array,1);
-+  $3 = (DIM_TYPE) array_size(array,2);
-+  $4 = (DIM_TYPE) array_size(array,3);
-+  $5 = (DATA_TYPE*) array_data(array);
-+}
-+%typemap(freearg)
-+  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_FARRAY4)
-+{
-+  if (is_new_object$argnum && array$argnum)
-+    { Py_DECREF(array$argnum); }
-+}
-+
- /***************************/
- /* In-Place Array Typemaps */
- /***************************/
-@@ -1187,6 +1607,72 @@
-   $4 = (DIM_TYPE) array_size(array,2);
- }
- 
-+/* Typemap suite for (DATA_TYPE** INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
-+ *                    DIM_TYPE DIM3)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DATA_TYPE** INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+{
-+  $1 = PySequence_Check($input);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DATA_TYPE** INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+  (DATA_TYPE** array=NULL, PyArrayObject** object_array=NULL)
-+{
-+  npy_intp size[2] = { -1, -1 };
-+  PyArrayObject* temp_array;
-+  Py_ssize_t i;
-+
-+  /* length of the list */
-+  $2 = PyList_Size($input);
-+
-+  /* the arrays */
-+  array = (DATA_TYPE **)malloc($2*sizeof(DATA_TYPE *));
-+  object_array = (PyArrayObject **)calloc($2,sizeof(PyArrayObject *));
-+
-+  if (array == NULL || object_array == NULL)
-+  {
-+    SWIG_fail;
-+  }
-+
-+  for (i=0; i<$2; i++)
-+  {
-+    temp_array = obj_to_array_no_conversion(PySequence_GetItem($input,i), DATA_TYPECODE);
-+
-+    /* the new array must be stored so that it can be destroyed in freearg */
-+    object_array[i] = temp_array;
-+
-+    if ( !temp_array || !require_dimensions(temp_array, 2) ||
-+      !require_contiguous(temp_array) ||
-+      !require_native(temp_array) ||
-+      !PyArray_EquivTypenums(array_type(temp_array), DATA_TYPECODE)
-+    ) SWIG_fail;
-+
-+    /* store the size of the first array in the list, then use that for comparison. */
-+    if (i == 0)
-+    {
-+      size[0] = array_size(temp_array,0);
-+      size[1] = array_size(temp_array,1);
-+    }
-+
-+    if (!require_size(temp_array, size, 2)) SWIG_fail;
-+
-+    array[i] = (DATA_TYPE*) array_data(temp_array);
-+  }
-+
-+  $1 = (DATA_TYPE**) array;
-+  $3 = (DIM_TYPE) size[0];
-+  $4 = (DIM_TYPE) size[1];
-+}
-+%typemap(freearg)
-+  (DATA_TYPE** INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-+{
-+  if (array$argnum!=NULL) free(array$argnum);
-+  if (object_array$argnum!=NULL) free(object_array$argnum);
-+}
-+
- /* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
-  *                    DATA_TYPE* INPLACE_ARRAY3)
-  */
-@@ -1259,6 +1745,195 @@
-   $4 = (DATA_TYPE*) array_data(array);
- }
- 
-+/* Typemap suite for (DATA_TYPE INPLACE_ARRAY4[ANY][ANY][ANY][ANY])
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DATA_TYPE INPLACE_ARRAY4[ANY][ANY][ANY][ANY])
-+{
-+  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-+                                                 DATA_TYPECODE);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DATA_TYPE INPLACE_ARRAY4[ANY][ANY][ANY][ANY])
-+  (PyArrayObject* array=NULL)
-+{
-+  npy_intp size[4] = { $1_dim0, $1_dim1, $1_dim2 , $1_dim3 };
-+  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-+  if (!array || !require_dimensions(array,4) || !require_size(array, size, 4) ||
-+      !require_contiguous(array) || !require_native(array)) SWIG_fail;
-+  $1 = ($1_ltype) array_data(array);
-+}
-+
-+/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
-+ *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DATA_TYPE* INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+{
-+  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-+                                                 DATA_TYPECODE);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DATA_TYPE* INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+  (PyArrayObject* array=NULL)
-+{
-+  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-+  if (!array || !require_dimensions(array,4) || !require_contiguous(array) ||
-+      !require_native(array)) SWIG_fail;
-+  $1 = (DATA_TYPE*) array_data(array);
-+  $2 = (DIM_TYPE) array_size(array,0);
-+  $3 = (DIM_TYPE) array_size(array,1);
-+  $4 = (DIM_TYPE) array_size(array,2);
-+  $5 = (DIM_TYPE) array_size(array,3);
-+}
-+
-+/* Typemap suite for (DATA_TYPE** INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
-+ *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DATA_TYPE** INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+{
-+  $1 = PySequence_Check($input);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DATA_TYPE** INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+  (DATA_TYPE** array=NULL, PyArrayObject** object_array=NULL)
-+{
-+  npy_intp size[3] = { -1, -1, -1 };
-+  PyArrayObject* temp_array;
-+  Py_ssize_t i;
-+
-+  /* length of the list */
-+  $2 = PyList_Size($input);
-+
-+  /* the arrays */
-+  array = (DATA_TYPE **)malloc($2*sizeof(DATA_TYPE *));
-+  object_array = (PyArrayObject **)calloc($2,sizeof(PyArrayObject *));
-+
-+  if (array == NULL || object_array == NULL)
-+  {
-+    SWIG_fail;
-+  }
-+
-+  for (i=0; i<$2; i++)
-+  {
-+    temp_array = obj_to_array_no_conversion(PySequence_GetItem($input,i), DATA_TYPECODE);
-+
-+    /* the new array must be stored so that it can be destroyed in freearg */
-+    object_array[i] = temp_array;
-+
-+    if ( !temp_array || !require_dimensions(temp_array, 3) ||
-+      !require_contiguous(temp_array) ||
-+      !require_native(temp_array) ||
-+      !PyArray_EquivTypenums(array_type(temp_array), DATA_TYPECODE)
-+    ) SWIG_fail;
-+
-+    /* store the size of the first array in the list, then use that for comparison. */
-+    if (i == 0)
-+    {
-+      size[0] = array_size(temp_array,0);
-+      size[1] = array_size(temp_array,1);
-+      size[2] = array_size(temp_array,2);
-+    }
-+
-+    if (!require_size(temp_array, size, 3)) SWIG_fail;
-+
-+    array[i] = (DATA_TYPE*) array_data(temp_array);
-+  }
-+
-+  $1 = (DATA_TYPE**) array;
-+  $3 = (DIM_TYPE) size[0];
-+  $4 = (DIM_TYPE) size[1];
-+  $5 = (DIM_TYPE) size[2];
-+}
-+%typemap(freearg)
-+  (DATA_TYPE** INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+{
-+  if (array$argnum!=NULL) free(array$argnum);
-+  if (object_array$argnum!=NULL) free(object_array$argnum);
-+}
-+
-+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4,
-+ *                    DATA_TYPE* INPLACE_ARRAY4)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_ARRAY4)
-+{
-+  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-+                                                 DATA_TYPECODE);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_ARRAY4)
-+  (PyArrayObject* array=NULL)
-+{
-+  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-+  if (!array || !require_dimensions(array,4) || !require_contiguous(array)
-+      || !require_native(array)) SWIG_fail;
-+  $1 = (DIM_TYPE) array_size(array,0);
-+  $2 = (DIM_TYPE) array_size(array,1);
-+  $3 = (DIM_TYPE) array_size(array,2);
-+  $4 = (DIM_TYPE) array_size(array,3);
-+  $5 = (DATA_TYPE*) array_data(array);
-+}
-+
-+/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
-+ *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DATA_TYPE* INPLACE_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+{
-+  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-+                                                 DATA_TYPECODE);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DATA_TYPE* INPLACE_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-+  (PyArrayObject* array=NULL)
-+{
-+  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-+  if (!array || !require_dimensions(array,4) || !require_contiguous(array) ||
-+      !require_native(array) || !require_fortran(array)) SWIG_fail;
-+  $1 = (DATA_TYPE*) array_data(array);
-+  $2 = (DIM_TYPE) array_size(array,0);
-+  $3 = (DIM_TYPE) array_size(array,1);
-+  $4 = (DIM_TYPE) array_size(array,2);
-+  $5 = (DIM_TYPE) array_size(array,3);
-+}
-+
-+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
-+ *                    DATA_TYPE* INPLACE_FARRAY4)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_FARRAY4)
-+{
-+  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-+                                                 DATA_TYPECODE);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_FARRAY4)
-+  (PyArrayObject* array=NULL)
-+{
-+  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-+  if (!array || !require_dimensions(array,4) || !require_contiguous(array)
-+      || !require_native(array) || !require_fortran(array)) SWIG_fail;
-+  $1 = (DIM_TYPE) array_size(array,0);
-+  $2 = (DIM_TYPE) array_size(array,1);
-+  $3 = (DIM_TYPE) array_size(array,2);
-+  $4 = (DIM_TYPE) array_size(array,3);
-+  $5 = (DATA_TYPE*) array_data(array);
-+}
-+
- /*************************/
- /* Argout Array Typemaps */
- /*************************/
-@@ -1268,7 +1943,7 @@
- %typemap(in,numinputs=0,
-          fragment="NumPy_Backward_Compatibility,NumPy_Macros")
-   (DATA_TYPE ARGOUT_ARRAY1[ANY])
--  (PyObject * array = NULL)
-+  (PyObject* array = NULL)
- {
-   npy_intp dims[1] = { $1_dim0 };
-   array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
-@@ -1278,7 +1953,7 @@
- %typemap(argout)
-   (DATA_TYPE ARGOUT_ARRAY1[ANY])
- {
--  $result = SWIG_Python_AppendOutput($result,array$argnum);
-+  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
- }
- 
- /* Typemap suite for (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
-@@ -1286,7 +1961,7 @@
- %typemap(in,numinputs=1,
-          fragment="NumPy_Fragments")
-   (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
--  (PyObject * array = NULL)
-+  (PyObject* array = NULL)
- {
-   npy_intp dims[1];
-   if (!PyInt_Check($input))
-@@ -1306,7 +1981,7 @@
- %typemap(argout)
-   (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
- {
--  $result = SWIG_Python_AppendOutput($result,array$argnum);
-+  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
- }
- 
- /* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
-@@ -1314,7 +1989,7 @@
- %typemap(in,numinputs=1,
-          fragment="NumPy_Fragments")
-   (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
--  (PyObject * array = NULL)
-+  (PyObject* array = NULL)
- {
-   npy_intp dims[1];
-   if (!PyInt_Check($input))
-@@ -1334,7 +2009,7 @@
- %typemap(argout)
-   (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
- {
--  $result = SWIG_Python_AppendOutput($result,array$argnum);
-+  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
- }
- 
- /* Typemap suite for (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
-@@ -1342,7 +2017,7 @@
- %typemap(in,numinputs=0,
-          fragment="NumPy_Backward_Compatibility,NumPy_Macros")
-   (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
--  (PyObject * array = NULL)
-+  (PyObject* array = NULL)
- {
-   npy_intp dims[2] = { $1_dim0, $1_dim1 };
-   array = PyArray_SimpleNew(2, dims, DATA_TYPECODE);
-@@ -1352,7 +2027,7 @@
- %typemap(argout)
-   (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
- {
--  $result = SWIG_Python_AppendOutput($result,array$argnum);
-+  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
- }
- 
- /* Typemap suite for (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
-@@ -1360,7 +2035,7 @@
- %typemap(in,numinputs=0,
-          fragment="NumPy_Backward_Compatibility,NumPy_Macros")
-   (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
--  (PyObject * array = NULL)
-+  (PyObject* array = NULL)
- {
-   npy_intp dims[3] = { $1_dim0, $1_dim1, $1_dim2 };
-   array = PyArray_SimpleNew(3, dims, DATA_TYPECODE);
-@@ -1370,7 +2045,25 @@
- %typemap(argout)
-   (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
- {
--  $result = SWIG_Python_AppendOutput($result,array$argnum);
-+  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
-+}
-+
-+/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY4[ANY][ANY][ANY][ANY])
-+ */
-+%typemap(in,numinputs=0,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Macros")
-+  (DATA_TYPE ARGOUT_ARRAY4[ANY][ANY][ANY][ANY])
-+  (PyObject* array = NULL)
-+{
-+  npy_intp dims[4] = { $1_dim0, $1_dim1, $1_dim2, $1_dim3 };
-+  array = PyArray_SimpleNew(4, dims, DATA_TYPECODE);
-+  if (!array) SWIG_fail;
-+  $1 = ($1_ltype) array_data(array);
-+}
-+%typemap(argout)
-+  (DATA_TYPE ARGOUT_ARRAY4[ANY][ANY][ANY][ANY])
-+{
-+  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
- }
- 
- /*****************************/
-@@ -1381,7 +2074,7 @@
-  */
- %typemap(in,numinputs=0)
-   (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1    )
--  (DATA_TYPE*  data_temp        , DIM_TYPE  dim_temp)
-+  (DATA_TYPE*  data_temp = NULL , DIM_TYPE  dim_temp)
- {
-   $1 = &data_temp;
-   $2 = &dim_temp;
-@@ -1391,16 +2084,18 @@
-   (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
- {
-   npy_intp dims[1] = { *$2 };
--  PyObject * array = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyObject* obj = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-   if (!array) SWIG_fail;
--  $result = SWIG_Python_AppendOutput($result,array);
-+  $result = SWIG_Python_AppendOutput($result,obj);
- }
- 
- /* Typemap suite for (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
-  */
- %typemap(in,numinputs=0)
-   (DIM_TYPE* DIM1    , DATA_TYPE** ARGOUTVIEW_ARRAY1)
--  (DIM_TYPE  dim_temp, DATA_TYPE*  data_temp        )
-+  (DIM_TYPE  dim_temp, DATA_TYPE*  data_temp = NULL )
- {
-   $1 = &dim_temp;
-   $2 = &data_temp;
-@@ -1410,16 +2105,18 @@
-   (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
- {
-   npy_intp dims[1] = { *$1 };
--  PyObject * array = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$2));
-+  PyObject* obj = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$2));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-   if (!array) SWIG_fail;
--  $result = SWIG_Python_AppendOutput($result,array);
-+  $result = SWIG_Python_AppendOutput($result,obj);
- }
- 
- /* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-  */
- %typemap(in,numinputs=0)
-   (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1     , DIM_TYPE* DIM2     )
--  (DATA_TYPE*  data_temp        , DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp)
-+  (DATA_TYPE*  data_temp = NULL , DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp)
- {
-   $1 = &data_temp;
-   $2 = &dim1_temp;
-@@ -1430,16 +2127,18 @@
-   (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- {
-   npy_intp dims[2] = { *$2, *$3 };
--  PyObject * array = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-   if (!array) SWIG_fail;
--  $result = SWIG_Python_AppendOutput($result,array);
-+  $result = SWIG_Python_AppendOutput($result,obj);
- }
- 
- /* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
-  */
- %typemap(in,numinputs=0)
-   (DIM_TYPE* DIM1     , DIM_TYPE* DIM2     , DATA_TYPE** ARGOUTVIEW_ARRAY2)
--  (DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp, DATA_TYPE*  data_temp        )
-+  (DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp, DATA_TYPE*  data_temp = NULL )
- {
-   $1 = &dim1_temp;
-   $2 = &dim2_temp;
-@@ -1450,16 +2149,18 @@
-   (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
- {
-   npy_intp dims[2] = { *$1, *$2 };
--  PyObject * array = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
-+  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-   if (!array) SWIG_fail;
--  $result = SWIG_Python_AppendOutput($result,array);
-+  $result = SWIG_Python_AppendOutput($result,obj);
- }
- 
- /* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-  */
- %typemap(in,numinputs=0)
-   (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1     , DIM_TYPE* DIM2     )
--  (DATA_TYPE*  data_temp        , DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp)
-+  (DATA_TYPE*  data_temp = NULL  , DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp)
- {
-   $1 = &data_temp;
-   $2 = &dim1_temp;
-@@ -1470,8 +2171,9 @@
-   (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- {
-   npy_intp dims[2] = { *$2, *$3 };
--  PyObject * obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
--  PyArrayObject * array = (PyArrayObject*) obj;
-+  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-   if (!array || !require_fortran(array)) SWIG_fail;
-   $result = SWIG_Python_AppendOutput($result,obj);
- }
-@@ -1480,7 +2182,7 @@
-  */
- %typemap(in,numinputs=0)
-   (DIM_TYPE* DIM1     , DIM_TYPE* DIM2     , DATA_TYPE** ARGOUTVIEW_FARRAY2)
--  (DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp, DATA_TYPE*  data_temp        )
-+  (DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp, DATA_TYPE*  data_temp = NULL  )
- {
-   $1 = &dim1_temp;
-   $2 = &dim2_temp;
-@@ -1491,8 +2193,9 @@
-   (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
- {
-   npy_intp dims[2] = { *$1, *$2 };
--  PyObject * obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
--  PyArrayObject * array = (PyArrayObject*) obj;
-+  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-   if (!array || !require_fortran(array)) SWIG_fail;
-   $result = SWIG_Python_AppendOutput($result,obj);
- }
-@@ -1501,8 +2204,8 @@
-                       DIM_TYPE* DIM3)
-  */
- %typemap(in,numinputs=0)
--  (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
--  (DATA_TYPE* data_temp, DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-+  (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    )
-+  (DATA_TYPE* data_temp = NULL  , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
- {
-   $1 = &data_temp;
-   $2 = &dim1_temp;
-@@ -1514,9 +2217,11 @@
-   (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- {
-   npy_intp dims[3] = { *$2, *$3, *$4 };
--  PyObject * array = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-   if (!array) SWIG_fail;
--  $result = SWIG_Python_AppendOutput($result,array);
-+  $result = SWIG_Python_AppendOutput($result,obj);
- }
- 
- /* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
-@@ -1524,7 +2229,7 @@
-  */
- %typemap(in,numinputs=0)
-   (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
--  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp)
-+  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp = NULL)
- {
-   $1 = &dim1_temp;
-   $2 = &dim2_temp;
-@@ -1536,17 +2241,19 @@
-   (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
- {
-   npy_intp dims[3] = { *$1, *$2, *$3 };
--  PyObject * array = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$3));
-+  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$4));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-   if (!array) SWIG_fail;
--  $result = SWIG_Python_AppendOutput($result,array);
-+  $result = SWIG_Python_AppendOutput($result,obj);
- }
- 
- /* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-                       DIM_TYPE* DIM3)
-  */
- %typemap(in,numinputs=0)
--  (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
--  (DATA_TYPE* data_temp, DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-+  (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    )
-+  (DATA_TYPE* data_temp = NULL   , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
- {
-   $1 = &data_temp;
-   $2 = &dim1_temp;
-@@ -1558,9 +2265,10 @@
-   (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- {
-   npy_intp dims[3] = { *$2, *$3, *$4 };
--  PyObject * obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
--  PyArrayObject * array = (PyArrayObject*) obj;
--  if (!array || require_fortran(array)) SWIG_fail;
-+  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-   $result = SWIG_Python_AppendOutput($result,obj);
- }
- 
-@@ -1568,8 +2276,8 @@
-                       DATA_TYPE** ARGOUTVIEW_FARRAY3)
-  */
- %typemap(in,numinputs=0)
--  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
--  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp)
-+  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DATA_TYPE** ARGOUTVIEW_FARRAY3)
-+  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp = NULL   )
- {
-   $1 = &dim1_temp;
-   $2 = &dim2_temp;
-@@ -1581,12 +2289,803 @@
-   (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
- {
-   npy_intp dims[3] = { *$1, *$2, *$3 };
--  PyObject * obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$3));
--  PyArrayObject * array = (PyArrayObject*) obj;
--  if (!array || require_fortran(array)) SWIG_fail;
-+  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$4));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-+                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DATA_TYPE** ARGOUTVIEW_ARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-+  (DATA_TYPE* data_temp = NULL  , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-+{
-+  $1 = &data_temp;
-+  $2 = &dim1_temp;
-+  $3 = &dim2_temp;
-+  $4 = &dim3_temp;
-+  $5 = &dim4_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility")
-+  (DATA_TYPE** ARGOUTVIEW_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+{
-+  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-+                      DATA_TYPE** ARGOUTVIEW_ARRAY4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEW_ARRAY4)
-+  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL  )
-+{
-+  $1 = &dim1_temp;
-+  $2 = &dim2_temp;
-+  $3 = &dim3_temp;
-+  $4 = &dim4_temp;
-+  $5 = &data_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility")
-+  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEW_ARRAY4)
-+{
-+  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-+                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DATA_TYPE** ARGOUTVIEW_FARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-+  (DATA_TYPE* data_temp = NULL   , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-+{
-+  $1 = &data_temp;
-+  $2 = &dim1_temp;
-+  $3 = &dim2_temp;
-+  $4 = &dim3_temp;
-+  $5 = &dim4_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
-+  (DATA_TYPE** ARGOUTVIEW_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+{
-+  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-+                      DATA_TYPE** ARGOUTVIEW_FARRAY4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEW_FARRAY4)
-+  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL   )
-+{
-+  $1 = &dim1_temp;
-+  $2 = &dim2_temp;
-+  $3 = &dim3_temp;
-+  $4 = &dim4_temp;
-+  $5 = &data_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
-+  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEW_FARRAY4)
-+{
-+  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/*************************************/
-+/* Managed Argoutview Array Typemaps */
-+/*************************************/
-+
-+/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_ARRAY1, DIM_TYPE* DIM1)
-+ */
-+%typemap(in,numinputs=0)
-+  (DATA_TYPE** ARGOUTVIEWM_ARRAY1, DIM_TYPE* DIM1    )
-+  (DATA_TYPE*  data_temp = NULL  , DIM_TYPE  dim_temp)
-+{
-+  $1 = &data_temp;
-+  $2 = &dim_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-+  (DATA_TYPE** ARGOUTVIEWM_ARRAY1, DIM_TYPE* DIM1)
-+{
-+  npy_intp dims[1] = { *$2 };
-+  PyObject* obj = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEWM_ARRAY1)
-+ */
-+%typemap(in,numinputs=0)
-+  (DIM_TYPE* DIM1    , DATA_TYPE** ARGOUTVIEWM_ARRAY1)
-+  (DIM_TYPE  dim_temp, DATA_TYPE*  data_temp = NULL  )
-+{
-+  $1 = &dim_temp;
-+  $2 = &data_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-+  (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEWM_ARRAY1)
-+{
-+  npy_intp dims[1] = { *$1 };
-+  PyObject* obj = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$2));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-+ */
-+%typemap(in,numinputs=0)
-+  (DATA_TYPE** ARGOUTVIEWM_ARRAY2, DIM_TYPE* DIM1     , DIM_TYPE* DIM2     )
-+  (DATA_TYPE*  data_temp = NULL  , DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp)
-+{
-+  $1 = &data_temp;
-+  $2 = &dim1_temp;
-+  $3 = &dim2_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-+  (DATA_TYPE** ARGOUTVIEWM_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-+{
-+  npy_intp dims[2] = { *$2, *$3 };
-+  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_ARRAY2)
-+ */
-+%typemap(in,numinputs=0)
-+  (DIM_TYPE* DIM1     , DIM_TYPE* DIM2     , DATA_TYPE** ARGOUTVIEWM_ARRAY2)
-+  (DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp, DATA_TYPE*  data_temp = NULL  )
-+{
-+  $1 = &dim1_temp;
-+  $2 = &dim2_temp;
-+  $3 = &data_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-+  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_ARRAY2)
-+{
-+  npy_intp dims[2] = { *$1, *$2 };
-+  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-+ */
-+%typemap(in,numinputs=0)
-+  (DATA_TYPE** ARGOUTVIEWM_FARRAY2, DIM_TYPE* DIM1     , DIM_TYPE* DIM2     )
-+  (DATA_TYPE*  data_temp = NULL   , DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp)
-+{
-+  $1 = &data_temp;
-+  $2 = &dim1_temp;
-+  $3 = &dim2_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-+  (DATA_TYPE** ARGOUTVIEWM_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-+{
-+  npy_intp dims[2] = { *$2, *$3 };
-+  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_FARRAY2)
-+ */
-+%typemap(in,numinputs=0)
-+  (DIM_TYPE* DIM1     , DIM_TYPE* DIM2     , DATA_TYPE** ARGOUTVIEWM_FARRAY2)
-+  (DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp, DATA_TYPE*  data_temp = NULL   )
-+{
-+  $1 = &dim1_temp;
-+  $2 = &dim2_temp;
-+  $3 = &data_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-+  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_FARRAY2)
-+{
-+  npy_intp dims[2] = { *$1, *$2 };
-+  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-+                      DIM_TYPE* DIM3)
-+ */
-+%typemap(in,numinputs=0)
-+  (DATA_TYPE** ARGOUTVIEWM_ARRAY3, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    )
-+  (DATA_TYPE* data_temp = NULL   , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-+{
-+  $1 = &data_temp;
-+  $2 = &dim1_temp;
-+  $3 = &dim2_temp;
-+  $4 = &dim3_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-+  (DATA_TYPE** ARGOUTVIEWM_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-+{
-+  npy_intp dims[3] = { *$2, *$3, *$4 };
-+  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
-+                      DATA_TYPE** ARGOUTVIEWM_ARRAY3)
-+ */
-+%typemap(in,numinputs=0)
-+  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DATA_TYPE** ARGOUTVIEWM_ARRAY3)
-+  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp = NULL   )
-+{
-+  $1 = &dim1_temp;
-+  $2 = &dim2_temp;
-+  $3 = &dim3_temp;
-+  $4 = &data_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-+  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEWM_ARRAY3)
-+{
-+  npy_intp dims[3] = { *$1, *$2, *$3 };
-+  PyObject* obj= PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$4));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-+                      DIM_TYPE* DIM3)
-+ */
-+%typemap(in,numinputs=0)
-+  (DATA_TYPE** ARGOUTVIEWM_FARRAY3, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    )
-+  (DATA_TYPE* data_temp = NULL    , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-+{
-+  $1 = &data_temp;
-+  $2 = &dim1_temp;
-+  $3 = &dim2_temp;
-+  $4 = &dim3_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-+  (DATA_TYPE** ARGOUTVIEWM_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-+{
-+  npy_intp dims[3] = { *$2, *$3, *$4 };
-+  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
-+                      DATA_TYPE** ARGOUTVIEWM_FARRAY3)
-+ */
-+%typemap(in,numinputs=0)
-+  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DATA_TYPE** ARGOUTVIEWM_FARRAY3)
-+  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp = NULL    )
-+{
-+  $1 = &dim1_temp;
-+  $2 = &dim2_temp;
-+  $3 = &dim3_temp;
-+  $4 = &data_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-+  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEWM_FARRAY3)
-+{
-+  npy_intp dims[3] = { *$1, *$2, *$3 };
-+  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$4));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-+                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-+  (DATA_TYPE* data_temp = NULL   , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-+{
-+  $1 = &data_temp;
-+  $2 = &dim1_temp;
-+  $3 = &dim2_temp;
-+  $4 = &dim3_temp;
-+  $5 = &dim4_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-+  (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+{
-+  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-+                      DATA_TYPE** ARGOUTVIEWM_ARRAY4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEWM_ARRAY4)
-+  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL   )
-+{
-+  $1 = &dim1_temp;
-+  $2 = &dim2_temp;
-+  $3 = &dim3_temp;
-+  $4 = &dim4_temp;
-+  $5 = &data_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-+  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_ARRAY4)
-+{
-+  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-+                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-+  (DATA_TYPE* data_temp = NULL    , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-+{
-+  $1 = &data_temp;
-+  $2 = &dim1_temp;
-+  $3 = &dim2_temp;
-+  $4 = &dim3_temp;
-+  $5 = &dim4_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-+  (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-+{
-+  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-   $result = SWIG_Python_AppendOutput($result,obj);
- }
- 
-+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-+                      DATA_TYPE** ARGOUTVIEWM_FARRAY4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEWM_FARRAY4)
-+  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL    )
-+{
-+  $1 = &dim1_temp;
-+  $2 = &dim2_temp;
-+  $3 = &dim3_temp;
-+  $4 = &dim4_temp;
-+  $5 = &data_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-+  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_FARRAY4)
-+{
-+  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-+                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-+  (DATA_TYPE* data_temp = NULL   , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-+{
-+  $1 = &data_temp;
-+  $2 = &dim1_temp;
-+  $3 = &dim2_temp;
-+  $4 = &dim3_temp;
-+  $5 = &dim4_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-+  (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+{
-+  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-+                      DATA_TYPE** ARGOUTVIEWM_ARRAY4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEWM_ARRAY4)
-+  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL   )
-+{
-+  $1 = &dim1_temp;
-+  $2 = &dim2_temp;
-+  $3 = &dim3_temp;
-+  $4 = &dim4_temp;
-+  $5 = &data_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-+  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_ARRAY4)
-+{
-+  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-+                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-+  (DATA_TYPE* data_temp = NULL    , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-+{
-+  $1 = &data_temp;
-+  $2 = &dim1_temp;
-+  $3 = &dim2_temp;
-+  $4 = &dim3_temp;
-+  $5 = &dim4_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-+  (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-+{
-+  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-+                      DATA_TYPE** ARGOUTVIEWM_FARRAY4)
-+ */
-+%typemap(in,numinputs=0)
-+  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEWM_FARRAY4)
-+  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL    )
-+{
-+  $1 = &dim1_temp;
-+  $2 = &dim2_temp;
-+  $3 = &dim3_temp;
-+  $4 = &dim4_temp;
-+  $5 = &data_temp;
-+}
-+%typemap(argout,
-+         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-+  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_FARRAY4)
-+{
-+  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-+  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-+  PyArrayObject* array = (PyArrayObject*) obj;
-+
-+  if (!array || !require_fortran(array)) SWIG_fail;
-+
-+%#ifdef SWIGPY_USE_CAPSULE
-+    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-+%#else
-+    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-+%#endif
-+
-+%#if NPY_API_VERSION < 0x00000007
-+  PyArray_BASE(array) = cap;
-+%#else
-+  PyArray_SetBaseObject(array,cap);
-+%#endif
-+
-+  $result = SWIG_Python_AppendOutput($result,obj);
-+}
-+
-+/**************************************/
-+/* In-Place Array Typemap - flattened */
-+/**************************************/
-+
-+/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY_FLAT, DIM_TYPE DIM_FLAT)
-+ */
-+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-+           fragment="NumPy_Macros")
-+  (DATA_TYPE* INPLACE_ARRAY_FLAT, DIM_TYPE DIM_FLAT)
-+{
-+  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-+                                                 DATA_TYPECODE);
-+}
-+%typemap(in,
-+         fragment="NumPy_Fragments")
-+  (DATA_TYPE* INPLACE_ARRAY_FLAT, DIM_TYPE DIM_FLAT)
-+  (PyArrayObject* array=NULL, int i=1)
-+{
-+  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-+  if (!array || !require_c_or_f_contiguous(array)
-+      || !require_native(array)) SWIG_fail;
-+  $1 = (DATA_TYPE*) array_data(array);
-+  $2 = 1;
-+  for (i=0; i < array_numdims(array); ++i) $2 *= array_size(array,i);
-+}
-+
- %enddef    /* %numpy_typemaps() macro */
- /* *************************************************************** */
- 
-@@ -1620,15 +3119,13 @@
-  *    %numpy_typemaps(long double, NPY_LONGDOUBLE, int)
-  */
- 
--/* ***************************************************************
-- * Swig complains about a syntax error for the following macro
-- * expansions:
-- *
-- *    %numpy_typemaps(complex float,  NPY_CFLOAT , int)
-- *
-- *    %numpy_typemaps(complex double, NPY_CDOUBLE, int)
-- *
-- *    %numpy_typemaps(complex long double, NPY_CLONGDOUBLE, int)
-- */
-+#ifdef __cplusplus
-+
-+%include <std_complex.i>
-+
-+%numpy_typemaps(std::complex<float>,  NPY_CFLOAT , int)
-+%numpy_typemaps(std::complex<double>, NPY_CDOUBLE, int)
-+
-+#endif
- 
- #endif /* SWIGPYTHON */
-Index: magics++-2.33.0/python/Magics.i.in
-===================================================================
---- magics++-2.33.0.orig/python/Magics.i.in
-+++ magics++-2.33.0/python/Magics.i.in
-@@ -22,7 +22,7 @@
-     int i = 0;
-     $1 = (char **) malloc((size+1)*sizeof(char *));
-     $2 = size;
--%#IF PY_MAJOR_VERSION < 3
-+%#if PY_MAJOR_VERSION < 3
-     for (i = 0; i < size; i++) {
-       PyObject *o = PyList_GetItem($input,i);
-       if (PyString_Check(o))
diff --git a/debian/patches/python-type-fix.patch b/debian/patches/python-type-fix.patch
index 03ca762..75390d7 100644
--- a/debian/patches/python-type-fix.patch
+++ b/debian/patches/python-type-fix.patch
@@ -1,8 +1,8 @@
-Index: magics++-2.33.0/tools/xml2mv.py
+Index: magics++-3.0.0/tools/xml2mv.py
 ===================================================================
---- magics++-2.33.0.orig/tools/xml2mv.py
-+++ magics++-2.33.0/tools/xml2mv.py
-@@ -582,12 +582,12 @@ class ObjectHandler(ContentHandler):
+--- magics++-3.0.0.orig/tools/xml2mv.py
++++ magics++-3.0.0/tools/xml2mv.py
+@@ -581,12 +581,12 @@ class ObjectHandler(ContentHandler):
  				else:
  					paramclass = self.classname
  				self.addParameterToClass(self.param, paramclass)
@@ -11,7 +11,7 @@ Index: magics++-2.33.0/tools/xml2mv.py
  			metview_type = attrs.get("metview_interface")
  			if metview_type != None:
 -				type = metview_type
--			if (self.types.has_key(type)):
+-			if (type in self.types):
 -				f = self.types[type]
 +				typ = metview_type
 +			if (typ in self.types):
diff --git a/debian/patches/rm-ksh.patch b/debian/patches/rm-ksh.patch
index fac7a08..3c79fe0 100644
--- a/debian/patches/rm-ksh.patch
+++ b/debian/patches/rm-ksh.patch
@@ -3,30 +3,30 @@ Description: Remove ksh, as unsupported in Debian right now
 Last-Updated: 2016-11-13
 Forwarded: not-needed
 
-Index: magics++-2.33.0/apps/MagMLInterpretor/magjson-script.in
+Index: magics++-3.0.0/apps/MagMLInterpretor/magjson-script.in
 ===================================================================
---- magics++-2.33.0.orig/apps/MagMLInterpretor/magjson-script.in
-+++ magics++-2.33.0/apps/MagMLInterpretor/magjson-script.in
+--- magics++-3.0.0.orig/apps/MagMLInterpretor/magjson-script.in
++++ magics++-3.0.0/apps/MagMLInterpretor/magjson-script.in
 @@ -1,4 +1,4 @@
 -#!/bin/ksh
 +#!/bin/sh
  #set -x
  
  # Platform dependent variables
-Index: magics++-2.33.0/apps/MagMLInterpretor/magml-script.in
+Index: magics++-3.0.0/apps/MagMLInterpretor/magml-script.in
 ===================================================================
---- magics++-2.33.0.orig/apps/MagMLInterpretor/magml-script.in
-+++ magics++-2.33.0/apps/MagMLInterpretor/magml-script.in
+--- magics++-3.0.0.orig/apps/MagMLInterpretor/magml-script.in
++++ magics++-3.0.0/apps/MagMLInterpretor/magml-script.in
 @@ -1,4 +1,4 @@
 -#!/bin/ksh
 +#!/bin/sh
  #set -x
  
  # Platform dependent variables
-Index: magics++-2.33.0/apps/metgram/metgram-script.in
+Index: magics++-3.0.0/apps/metgram/metgram-script.in
 ===================================================================
---- magics++-2.33.0.orig/apps/metgram/metgram-script.in
-+++ magics++-2.33.0/apps/metgram/metgram-script.in
+--- magics++-3.0.0.orig/apps/metgram/metgram-script.in
++++ magics++-3.0.0/apps/metgram/metgram-script.in
 @@ -1,4 +1,4 @@
 -#!/bin/ksh
 +#!/bin/sh
diff --git a/debian/patches/series b/debian/patches/series
index 200b05d..2dafafd 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,11 +1,11 @@
 terralib.patch
-python3.patch
+# python3.patch
 soname-version.patch
 reproducibility.patch
 pkgconfig-fix.patch
 cmake-config.patch
 unique-ptr.patch
-numpy-fixes.patch
+#numpy-fixes.patch
 rm-ksh.patch
 fix-warnings.patch
 python-type-fix.patch
diff --git a/debian/patches/terralib.patch b/debian/patches/terralib.patch
index 7b5f0ee..a8bbd12 100644
--- a/debian/patches/terralib.patch
+++ b/debian/patches/terralib.patch
@@ -1,58 +1,57 @@
 Author: Alastair McKinstry <mckinstry at debian.org>
 Description: Add Debians libterralib, rather than built-in version
-Last-Updated: 2016-07-08
+Last-Updated: 2017-12-27
 Forwarded: not-needed
 
-Index: magics++-2.33.0/src/CMakeLists.txt
+Index: magics++-3.0.0/src/CMakeLists.txt
 ===================================================================
---- magics++-2.33.0.orig/src/CMakeLists.txt
-+++ magics++-2.33.0/src/CMakeLists.txt
+--- magics++-3.0.0.orig/src/CMakeLists.txt
++++ magics++-3.0.0/src/CMakeLists.txt
 @@ -92,7 +92,6 @@ add_subdirectory( web )
  add_subdirectory( visualisers )
  add_subdirectory( drivers )
  add_subdirectory( decoders )
 -add_subdirectory( terralib )
+ add_subdirectory( clipper )
  add_subdirectory( eckit_readers )
  
- if( metview )
-@@ -118,7 +117,6 @@ ecbuild_add_library( TARGET    MagPlus
-                         ${drivers_srcs}
+@@ -120,7 +119,6 @@ ecbuild_add_library( TARGET    MagPlus
                          ${qt_srcs}
                          ${decoders_srcs}
--                        ${terralib_srcs} 
+                         ${clipper_srcs}
+-                        ${terralib_srcs}
                          ${odb_srcs}
                       TEMPLATES
                          ${common_templates}
-@@ -152,7 +150,6 @@ ecbuild_add_library( TARGET    MagPlusSt
-                         ${drivers_srcs}
+@@ -155,7 +153,6 @@ ecbuild_add_library( TARGET    MagPlusSt
                          ${qt_srcs}
                          ${decoders_srcs}
--                        ${terralib_srcs} 
+                         ${clipper_srcs}
+-                        ${terralib_srcs}
                          ${odb_srcs}
                       TEMPLATES
                          ${common_templates}
-@@ -187,8 +184,6 @@ if( metview )
-                         ${CMAKE_CURRENT_SOURCE_DIR}/visualisers
+@@ -191,7 +188,6 @@ if( metview )
                          ${CMAKE_CURRENT_SOURCE_DIR}/drivers
                          ${CMAKE_CURRENT_SOURCE_DIR}/decoders
--                        ${CMAKE_CURRENT_SOURCE_DIR}/terralib
--                        ${CMAKE_CURRENT_SOURCE_DIR}/terralib/kernel 
+                         ${CMAKE_CURRENT_SOURCE_DIR}/clipper
+-                        ${CMAKE_CURRENT_SOURCE_DIR}/terralib/kernel
                          ${CMAKE_CURRENT_SOURCE_DIR}/libMagWrapper )
-   
  
-@@ -228,16 +223,6 @@ if( metview )
+ 
+@@ -231,16 +227,6 @@ if( metview )
                   QtDriverAttributes.h)
     endif()
  
 -   install( FILES terralib/kernel/TeProjection.h
--				   terralib/kernel/TeCoord2D.h 
--				   terralib/kernel/TeDefines.h 
--				   terralib/kernel/TePrecision.h 
--				   terralib/kernel/TeSingleton.h 
--				   terralib/kernel/TeDatum.h 
+-				   terralib/kernel/TeCoord2D.h
+-				   terralib/kernel/TeDefines.h
+-				   terralib/kernel/TePrecision.h
+-				   terralib/kernel/TeSingleton.h
+-				   terralib/kernel/TeDatum.h
 -				   terralib/kernel/TeUtils.h
--				   
--				   
+-
+-
 -				   DESTINATION ${INSTALL_INCLUDE_DIR})
     install( FILES VectorOfPointers.h  DESTINATION ${INSTALL_INCLUDE_DIR})
     foreach( file ${attributes_include} )
diff --git a/debian/patches/unique-ptr.patch b/debian/patches/unique-ptr.patch
index 7e2f1aa..7dc2f3c 100644
--- a/debian/patches/unique-ptr.patch
+++ b/debian/patches/unique-ptr.patch
@@ -4,10 +4,10 @@ Description: For G++ 6, we move to c++14, auto_ptr is deprecated.
 Last-Updated: 2016-11-01
 Forwarded: no
 
-Index: magics++-2.33.0/src/basic/ParameterSettings.cc
+Index: magics++-3.0.0/src/basic/ParameterSettings.cc
 ===================================================================
---- magics++-2.33.0.orig/src/basic/ParameterSettings.cc
-+++ magics++-2.33.0/src/basic/ParameterSettings.cc
+--- magics++-3.0.0.orig/src/basic/ParameterSettings.cc
++++ magics++-3.0.0/src/basic/ParameterSettings.cc
 @@ -51,7 +51,7 @@ void setAttribute(const vector<string>&
  	}
  }
@@ -26,10 +26,10 @@ Index: magics++-2.33.0/src/basic/ParameterSettings.cc
  	}
  }
  
-Index: magics++-2.33.0/src/basic/ParameterSettings.h
+Index: magics++-3.0.0/src/basic/ParameterSettings.h
 ===================================================================
---- magics++-2.33.0.orig/src/basic/ParameterSettings.h
-+++ magics++-2.33.0/src/basic/ParameterSettings.h
+--- magics++-3.0.0.orig/src/basic/ParameterSettings.h
++++ magics++-3.0.0/src/basic/ParameterSettings.h
 @@ -24,10 +24,10 @@
  #include <Colour.h>
  
@@ -79,10 +79,10 @@ Index: magics++-2.33.0/src/basic/ParameterSettings.h
  			MagLog::debug() << "Parameter [" << name << "] set to " << val->second << endl;
  		}
  		catch (...) {
-Index: magics++-2.33.0/src/decoders/GribDecoder.cc
+Index: magics++-3.0.0/src/decoders/GribDecoder.cc
 ===================================================================
---- magics++-2.33.0.orig/src/decoders/GribDecoder.cc
-+++ magics++-2.33.0/src/decoders/GribDecoder.cc
+--- magics++-3.0.0.orig/src/decoders/GribDecoder.cc
++++ magics++-3.0.0/src/decoders/GribDecoder.cc
 @@ -90,7 +90,7 @@ void GribDecoder::set(const GribLoop& lo
      index_           = loop.uniqueId_;
      interpolation_method_ = loop.interpolation_method_;
@@ -92,7 +92,7 @@ Index: magics++-2.33.0/src/decoders/GribDecoder.cc
      internalIndex_ = index;
  }
  
-@@ -1595,7 +1595,7 @@ void GribDecoder::visit(MetaDataCollecto
+@@ -1592,7 +1592,7 @@ void GribDecoder::visit(MetaDataCollecto
                      string representation = getString("typeOfGrid");
                      try
                      {
@@ -101,10 +101,10 @@ Index: magics++-2.33.0/src/decoders/GribDecoder.cc
                          interpretor_->scaling(*this, scaling, offset,oriUnits,derivedUnits);
                          if(scaling==1 && offset == 0)
                          {
-Index: magics++-2.33.0/src/decoders/TitleTemplate.cc
+Index: magics++-3.0.0/src/decoders/TitleTemplate.cc
 ===================================================================
---- magics++-2.33.0.orig/src/decoders/TitleTemplate.cc
-+++ magics++-2.33.0/src/decoders/TitleTemplate.cc
+--- magics++-3.0.0.orig/src/decoders/TitleTemplate.cc
++++ magics++-3.0.0/src/decoders/TitleTemplate.cc
 @@ -171,7 +171,7 @@ bool TitleTemplate::verify(const GribDec
  //#ifdef MAGICS_EXCEPTION
  		try{
@@ -114,10 +114,10 @@ Index: magics++-2.33.0/src/decoders/TitleTemplate.cc
  			MagLog::debug() << "Found the MatchCriteria for " << criter->first << "\n";
  			if (!(*object).verify(data, criter->first, criter->second)) return false;
  		}
-Index: magics++-2.33.0/src/decoders/TitleTemplate.h
+Index: magics++-3.0.0/src/decoders/TitleTemplate.h
 ===================================================================
---- magics++-2.33.0.orig/src/decoders/TitleTemplate.h
-+++ magics++-2.33.0/src/decoders/TitleTemplate.h
+--- magics++-3.0.0.orig/src/decoders/TitleTemplate.h
++++ magics++-3.0.0/src/decoders/TitleTemplate.h
 @@ -122,7 +122,7 @@ public:
  #ifdef MAGICS_EXCEPTION
  			try
@@ -127,11 +127,11 @@ Index: magics++-2.33.0/src/decoders/TitleTemplate.h
  				(*object)(*(*entry), lines, data);
  			}
  			catch (NoFactoryException& e)
-Index: magics++-2.33.0/src/libMagWrapper/MagPlus.cc
+Index: magics++-3.0.0/src/libMagWrapper/MagPlus.cc
 ===================================================================
---- magics++-2.33.0.orig/src/libMagWrapper/MagPlus.cc
-+++ magics++-2.33.0/src/libMagWrapper/MagPlus.cc
-@@ -558,7 +558,7 @@ bool MagPlus::cartesianGrid(magics::MagR
+--- magics++-3.0.0.orig/src/libMagWrapper/MagPlus.cc
++++ magics++-3.0.0/src/libMagWrapper/MagPlus.cc
+@@ -591,7 +591,7 @@ bool MagPlus::cartesianGrid(magics::MagR
  		haxis->icon("Horizontal Axis", "MAXIS");
  		haxis->label_type_ = xtype;
  
@@ -140,7 +140,7 @@ Index: magics++-2.33.0/src/libMagWrapper/MagPlus.cc
  		top()->push_back(haxis);
  	}
  
-@@ -594,7 +594,7 @@ bool MagPlus::cartesianGrid(magics::MagR
+@@ -627,7 +627,7 @@ bool MagPlus::cartesianGrid(magics::MagR
  		VerticalAxis* vaxis = new VerticalAxis();
  		vaxis->icon("Vertical Axis", "MAXIS");
  		vaxis->label_type_ = ytype;
@@ -149,7 +149,7 @@ Index: magics++-2.33.0/src/libMagWrapper/MagPlus.cc
  		top()->push_back(vaxis);
  
  	}
-@@ -1402,7 +1402,7 @@ bool MagPlus::symbol(magics::MagRequest&
+@@ -1439,7 +1439,7 @@ bool MagPlus::symbol(magics::MagRequest&
  
      FortranAutomaticLegendVisitor* node = new FortranAutomaticLegendVisitor();
      		LegendMethod* method = new ContinuousLegendMethod();
@@ -158,10 +158,10 @@ Index: magics++-2.33.0/src/libMagWrapper/MagPlus.cc
      		node->getReady();
      		//top()->legend(node);
  	if ( geographical_ ) {
-Index: magics++-2.33.0/src/magics.h
+Index: magics++-3.0.0/src/magics.h
 ===================================================================
---- magics++-2.33.0.orig/src/magics.h
-+++ magics++-2.33.0/src/magics.h
+--- magics++-3.0.0.orig/src/magics.h
++++ magics++-3.0.0/src/magics.h
 @@ -106,7 +106,7 @@ using std::pair;
  //using std::list;
  using std::map;
@@ -171,11 +171,11 @@ Index: magics++-2.33.0/src/magics.h
  
  #include <exception>
  
-Index: magics++-2.33.0/src/visualisers/AutomaticContourMethod.h
+Index: magics++-3.0.0/src/visualisers/AutomaticContourMethod.h
 ===================================================================
---- magics++-2.33.0.orig/src/visualisers/AutomaticContourMethod.h
-+++ magics++-2.33.0/src/visualisers/AutomaticContourMethod.h
-@@ -205,7 +205,7 @@ public:
+--- magics++-3.0.0.orig/src/visualisers/AutomaticContourMethod.h
++++ magics++-3.0.0/src/visualisers/AutomaticContourMethod.h
+@@ -202,7 +202,7 @@ public:
          // data, because the sub-sampling method (above) uses no interpolation.
          if ((nSampleX > 1) && (nSampleY > 1))   {
              ContourMethod* cm = MagTranslator<string, ContourMethod >()("linear");
@@ -184,7 +184,7 @@ Index: magics++-2.33.0/src/visualisers/AutomaticContourMethod.h
  
              pMatrixHandler = pContourMethod->handler(matrix, owner);
  
-@@ -215,7 +215,7 @@ public:
+@@ -212,7 +212,7 @@ public:
                   data.hasMissingValues())
          {
              ContourMethod* cm = MagTranslator<string, ContourMethod >()("linear");
@@ -193,7 +193,7 @@ Index: magics++-2.33.0/src/visualisers/AutomaticContourMethod.h
  
              pMatrixHandler = pContourMethod->handler(matrix, owner);
  
-@@ -226,7 +226,7 @@ public:
+@@ -223,7 +223,7 @@ public:
          else
          {
              Akima760Method *am = static_cast < Akima760Method *> (MagTranslator<string, ContourMethod >()("akima760"));
@@ -202,10 +202,10 @@ Index: magics++-2.33.0/src/visualisers/AutomaticContourMethod.h
  
              pAkima760Method->resolutionX_ = (fContourResolutionX);
              pAkima760Method->resolutionY_ =  (fContourResolutionY);
-Index: magics++-2.33.0/src/visualisers/CalculateColourTechnique.cc
+Index: magics++-3.0.0/src/visualisers/CalculateColourTechnique.cc
 ===================================================================
---- magics++-2.33.0.orig/src/visualisers/CalculateColourTechnique.cc
-+++ magics++-2.33.0/src/visualisers/CalculateColourTechnique.cc
+--- magics++-3.0.0.orig/src/visualisers/CalculateColourTechnique.cc
++++ magics++-3.0.0/src/visualisers/CalculateColourTechnique.cc
 @@ -51,8 +51,8 @@ void CalculateColourTechnique::print(ost
  
  void CalculateColourTechnique::set(const ColourTechniqueInterface& attributes)
@@ -217,10 +217,10 @@ Index: magics++-2.33.0/src/visualisers/CalculateColourTechnique.cc
  	direction_ = attributes.getDirection();
  }
  
-Index: magics++-2.33.0/src/visualisers/LabelPlotting.cc
+Index: magics++-3.0.0/src/visualisers/LabelPlotting.cc
 ===================================================================
---- magics++-2.33.0.orig/src/visualisers/LabelPlotting.cc
-+++ magics++-2.33.0/src/visualisers/LabelPlotting.cc
+--- magics++-3.0.0.orig/src/visualisers/LabelPlotting.cc
++++ magics++-3.0.0/src/visualisers/LabelPlotting.cc
 @@ -41,7 +41,7 @@ void LabelPlotting::prepare(NoGridPlotti
  	
  	if ( *colour_ == "UNDEFINED" ) {
@@ -230,10 +230,10 @@ Index: magics++-2.33.0/src/visualisers/LabelPlotting.cc
  	}
  	
  	if ( longitudes_.empty() )
-Index: magics++-2.33.0/tools/xml2cc.pl
+Index: magics++-3.0.0/tools/xml2cc.pl
 ===================================================================
---- magics++-2.33.0.orig/tools/xml2cc.pl
-+++ magics++-2.33.0/tools/xml2cc.pl
+--- magics++-3.0.0.orig/tools/xml2cc.pl
++++ magics++-3.0.0/tools/xml2cc.pl
 @@ -298,7 +298,7 @@ EOF
          }
          else 
@@ -252,10 +252,10 @@ Index: magics++-2.33.0/tools/xml2cc.pl
          }
         
          print "";
-Index: magics++-2.33.0/tools/xml2cc.pl.workshop
+Index: magics++-3.0.0/tools/xml2cc.pl.workshop
 ===================================================================
---- magics++-2.33.0.orig/tools/xml2cc.pl.workshop
-+++ magics++-2.33.0/tools/xml2cc.pl.workshop
+--- magics++-3.0.0.orig/tools/xml2cc.pl.workshop
++++ magics++-3.0.0/tools/xml2cc.pl.workshop
 @@ -315,7 +315,7 @@ EOF
      {
          print <<EOF;   
@@ -274,10 +274,10 @@ Index: magics++-2.33.0/tools/xml2cc.pl.workshop
          }
      }
  
-Index: magics++-2.33.0/tools/xml2mv.pl
+Index: magics++-3.0.0/tools/xml2mv.pl
 ===================================================================
---- magics++-2.33.0.orig/tools/xml2mv.pl
-+++ magics++-2.33.0/tools/xml2mv.pl
+--- magics++-3.0.0.orig/tools/xml2mv.pl
++++ magics++-3.0.0/tools/xml2mv.pl
 @@ -447,7 +447,7 @@ EOF
              {
  				

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/magics.git



More information about the debian-science-commits mailing list