[cig-commits] r9233 - in cs/spatialdata-0.1/trunk: . libsrc/spatialdb modulesrc/spatialdb modulesrc/utils

brad at geodynamics.org brad at geodynamics.org
Tue Feb 5 10:33:58 PST 2008


Author: brad
Date: 2008-02-05 10:33:58 -0800 (Tue, 05 Feb 2008)
New Revision: 9233

Modified:
   cs/spatialdata-0.1/trunk/configure.ac
   cs/spatialdata-0.1/trunk/libsrc/spatialdb/UniformDB.hh
   cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src
   cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe.src
Log:
Fixed some minor memory allocation/deallocation errors (need to use C++ allocator when creating SimpleCppArrays).

Modified: cs/spatialdata-0.1/trunk/configure.ac
===================================================================
--- cs/spatialdata-0.1/trunk/configure.ac	2008-02-05 15:47:54 UTC (rev 9232)
+++ cs/spatialdata-0.1/trunk/configure.ac	2008-02-05 18:33:58 UTC (rev 9233)
@@ -53,8 +53,6 @@
 AM_CONDITIONAL([NO_UNDEFINED], [test "$allow_undefined_flag" = unsupported])
 AC_SUBST(AM_LDFLAGS)
 
-AM_PATH_PYTHON([2.3])
-
 # ----------------------------------------------------------------------
 # PROJ4
 AC_CHECK_LIB(proj, pj_init_plus, [
@@ -111,6 +109,7 @@
   AC_ARG_VAR(PYTHONPATH, [Python module search path])
   CIT_PYTHON_SYSCONFIG
   CIT_PYTHON_EGG_SETUP
+  AM_PATH_PYTHON([2.3])
 
   # PYREX/PYREXEMBED
   AC_CHECK_PROG([have_pyrex],

Modified: cs/spatialdata-0.1/trunk/libsrc/spatialdb/UniformDB.hh
===================================================================
--- cs/spatialdata-0.1/trunk/libsrc/spatialdb/UniformDB.hh	2008-02-05 15:47:54 UTC (rev 9232)
+++ cs/spatialdata-0.1/trunk/libsrc/spatialdb/UniformDB.hh	2008-02-05 18:33:58 UTC (rev 9233)
@@ -61,10 +61,10 @@
 	       const int numValues);
 
   /// Open the database and prepare for querying.
-  inline void open(void);
+  void open(void);
 
   /// Close the database.
-  inline void close(void);
+  void close(void);
 
   /** Set values to be returned by queries.
    *

Modified: cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src	2008-02-05 15:47:54 UTC (rev 9232)
+++ cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src	2008-02-05 18:33:58 UTC (rev 9233)
@@ -45,6 +45,43 @@
   """
   return PyCObject_AsVoidPtr(obj.handle)
 
+cdef double* doubleArray(size):
+  """
+  Allocate C++ double array.
+  """
+  # create shim
+  #embed{ double* doubleArray_cpp(int size)
+  double* result = (size > 0) ? new double[size] : 0;
+  return result;
+  #}embed
+  return doubleArray_cpp(size)
+
+
+cdef float* floatArray(size):
+  """
+  Allocate C++ float array.
+  """
+  # create shim
+  #embed{ float* floatArray_cpp(int size)
+  float* result = (size > 0) ? new float[size] : 0;
+  return result;
+  #}embed
+  return floatArray_cpp(size)
+
+
+cdef int* intArray(size):
+  """
+  Allocate C++ int array.
+  """
+  # create shim
+  #embed{ int* intArray_cpp(int size)
+  int* result = (size > 0) ? new int[size] : 0;
+  return result;
+  #}embed
+  return intArray_cpp(size)
+
+
+# ----------------------------------------------------------------------
 cdef void SpatialDB_destructor(void* obj):
   """
   Destroy SpatialDB object.
@@ -58,21 +95,6 @@
   SpatialDB_destructor_cpp(obj)
   return
 
-cdef void SimpleIO_destructor(void* obj):
-  """
-  Destructor SimplIO object.
-  """
-  # create shim for destructor
-  #embed{ void SimpleIO_destructor_cpp(void* pObj)
-  spatialdata::spatialdb::SimpleIO* pIO =
-    (spatialdata::spatialdb::SimpleIO*) pObj;
-  delete pIO;
-  #}embed
-  SimpleIO_destructor_cpp(obj)
-  return
-
-
-# ----------------------------------------------------------------------
 cdef class SpatialDB:
 
   cdef void* thisptr # Pointer to C++ object
@@ -256,10 +278,10 @@
     pLocs = <double*> PyCObject_AsVoidPtr(locs.data)
 
     cdef double* pVals
-    pVals = <double*> malloc(nlocs*nvals*sizeof(double))
+    pVals = doubleArray(nlocs*nvals)
 
     cdef int* pErr
-    pErr = <int*> malloc(nlocs*sizeof(int))
+    pErr = <int*> intArray(nlocs)
 
     cdef double* valbuffer
     valbuffer = <double*> malloc(nvals*sizeof(double))
@@ -349,6 +371,20 @@
 
 
 # ----------------------------------------------------------------------
+cdef void SimpleIO_destructor(void* obj):
+  """
+  Destructor SimplIO object.
+  """
+  # create shim for destructor
+  #embed{ void SimpleIO_destructor_cpp(void* pObj)
+  spatialdata::spatialdb::SimpleIO* pIO =
+    (spatialdata::spatialdb::SimpleIO*) pObj;
+  delete pIO;
+  #}embed
+  SimpleIO_destructor_cpp(obj)
+  return
+
+
 cdef class SimpleIO:
 
   cdef void* thisptr # Pointer to C++ object
@@ -427,6 +463,8 @@
     spatialdata::geocoords::CoordSys* pCS =
       (spatialdata::geocoords::CoordSys*) pCSObj;  
     ((spatialdata::spatialdb::SimpleIOAscii*) pObj)->write(*pData, pCS);
+    delete[] pData->valNames;
+    delete[] pData->valUnits;
     delete pData; pData = 0;
     #}embed
 

Modified: cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe.src
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe.src	2008-02-05 15:47:54 UTC (rev 9232)
+++ cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe.src	2008-02-05 18:33:58 UTC (rev 9233)
@@ -222,8 +222,10 @@
 
 # ----------------------------------------------------------------------
 cdef class SimpleCppArray(SimpleArray):
-  """Implementation of generic multi-dimensional array created from C++
-  array."""
+  """
+  Implementation of generic multi-dimensional array created from C++
+  array.
+  """
   
   cdef void* arrayptr # Pointer to head of array
 
@@ -272,8 +274,10 @@
     
 
   property __array_struct__:
-    """Generic array structure property compatible with NumPy, Numeric,
-    and numarray."""
+    """
+    Generic array structure property compatible with NumPy, Numeric,
+    and numarray.
+    """
     def __get__(self):
       Py_INCREF(self)
       obj = PyCObject_FromVoidPtrAndDesc(<void*> self._interface, <void*> self,
@@ -384,8 +388,8 @@
                    'kind': 'f',
                    'type': "double"},
             'f4': {'size': sizeof(float),
-                      'kind': 'f',
-                      'type': "float"},
+                   'kind': 'f',
+                   'type': "float"},
             'i4': {'size': sizeof(int),
                    'kind': 'i',
                    'type': "int"}}
@@ -408,7 +412,4 @@
   return obj
 
 
-# version
-__id__ = "$Id$"
-
 # End of file



More information about the cig-commits mailing list