[cig-commits] r4109 - cs/spatialdata-0.1/trunk/modulesrc/utils

baagaard at geodynamics.org baagaard at geodynamics.org
Wed Jul 26 13:04:02 PDT 2006


Author: baagaard
Date: 2006-07-26 13:04:02 -0700 (Wed, 26 Jul 2006)
New Revision: 4109

Modified:
   cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe
Log:
Fixed memory problem with simplearray. Must use PyCObjects to pass around C stuff among routines instead of casting to PyObjects.

Modified: cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe	2006-07-26 03:58:56 UTC (rev 4108)
+++ cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe	2006-07-26 20:04:02 UTC (rev 4109)
@@ -19,6 +19,7 @@
   object PyCObject_FromVoidPtr(void*, void (*func)(void*))
   object PyCObject_FromVoidPtrAndDesc(void* cobj, void* desc,
                                       void (*func)(void*, void*))
+  void* PyCObject_AsVoidPtr(object)
 
 cdef extern from "stdlib.h":
   ctypedef int size_t
@@ -207,9 +208,8 @@
     """Constructor."""
     SimpleArray.__init__(self)
 
-
     nd = len(shape)
-    self.arrayptr = <void*> data
+    self.arrayptr = PyCObject_AsVoidPtr(data)
     self.nd = nd
     self._typeinfo = self._sizeandtype(valuetype)
   
@@ -359,7 +359,20 @@
                        % typestring)
     return info[typestring]
 
+# ----------------------------------------------------------------------
+def objAsSimpleArray(obj):
+  """
+  Test if object is a SimpleArray. If not try to convert it to a
+  SimpleArray. If can't convert throw ValueError exception.
+  """
+  try:
+    if not obj.name == "spatialdata_utils_SimpleArray":
+      obj = SimplePyArray(obj)
+  except AttributeError:
+    obj = SimplePyArray(obj)
+  return obj
 
+
 # version
 __id__ = "$Id$"
 



More information about the cig-commits mailing list