[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