[cig-commits] r5949 - in cs/spatialdata-0.1/trunk/modulesrc: geocoords spatialdb spatialdb/generator utils

brad at geodynamics.org brad at geodynamics.org
Thu Feb 1 13:25:44 PST 2007


Author: brad
Date: 2007-02-01 13:25:44 -0800 (Thu, 01 Feb 2007)
New Revision: 5949

Added:
   cs/spatialdata-0.1/trunk/modulesrc/geocoords/geocoords.pyxe.src
   cs/spatialdata-0.1/trunk/modulesrc/spatialdb/generator/generator.pyxe.src
   cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src
   cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe.src
   cs/spatialdata-0.1/trunk/modulesrc/utils/utils.pyxe.src
Removed:
   cs/spatialdata-0.1/trunk/modulesrc/geocoords/geocoords.pyxe
   cs/spatialdata-0.1/trunk/modulesrc/spatialdb/generator/generator.pyxe
   cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe
   cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe
   cs/spatialdata-0.1/trunk/modulesrc/utils/utils.pyxe
Modified:
   cs/spatialdata-0.1/trunk/modulesrc/geocoords/Makefile.am
   cs/spatialdata-0.1/trunk/modulesrc/spatialdb/Makefile.am
   cs/spatialdata-0.1/trunk/modulesrc/spatialdb/generator/Makefile.am
   cs/spatialdata-0.1/trunk/modulesrc/utils/Makefile.am
Log:
Fixed pyrexembed build rules to allow builds from outside the source tree.

Modified: cs/spatialdata-0.1/trunk/modulesrc/geocoords/Makefile.am
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/geocoords/Makefile.am	2007-02-01 20:26:35 UTC (rev 5948)
+++ cs/spatialdata-0.1/trunk/modulesrc/geocoords/Makefile.am	2007-02-01 21:25:44 UTC (rev 5949)
@@ -29,8 +29,8 @@
 
 geocoords.pyx geocoords_embed.cpp  geocoords_embed.h: geocoords.pyxe
 	pyrexembed geocoords.pyxe
-geocoords.pyxe: $(srcdir)/geocoords.pyxe
-	cp $(srcdir)/geocoords.pyxe $@
+geocoords.pyxe: $(srcdir)/geocoords.pyxe.src
+	cp $(srcdir)/geocoords.pyxe.src $@
 geocoords_embed.cpp: geocoords_embed.h
 geocoords_embed.h: geocoords.pyx
 

Deleted: cs/spatialdata-0.1/trunk/modulesrc/geocoords/geocoords.pyxe
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/geocoords/geocoords.pyxe	2007-02-01 20:26:35 UTC (rev 5948)
+++ cs/spatialdata-0.1/trunk/modulesrc/geocoords/geocoords.pyxe	2007-02-01 21:25:44 UTC (rev 5949)
@@ -1,482 +0,0 @@
-#!/usr/bin/env python
-#
-# ======================================================================
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# {LicenseText}
-#
-# ======================================================================
-#
-
-#header{
-#include "spatialdata/geocoords/CoordSys.hh"
-#include "spatialdata/geocoords/CSCart.hh"
-#include "spatialdata/geocoords/CSGeo.hh"
-#include "spatialdata/geocoords/CSGeoLocalCart.hh"
-#include "spatialdata/geocoords/CSGeoProj.hh"
-#include "spatialdata/geocoords/Projector.hh"
-#include "spatialdata/geocoords/Converter.hh"
-#}header
-
-# ----------------------------------------------------------------------
-cdef extern from "Python.h":
-  object PyCObject_FromVoidPtr(void*, void (*destruct)(void*))
-  void* PyCObject_AsVoidPtr(object)
-
-cdef void* ptrFromHandle(obj):
-  """Extract pointer from PyCObject."""
-  return PyCObject_AsVoidPtr(obj.handle)
-
-cdef extern from "stdlib.h":
-    ctypedef unsigned long size_t
-    void* malloc(size_t size)
-    void free(void* mem)
-
-# ----------------------------------------------------------------------
-cdef class CoordSys:
-
-  cdef void* thisptr # Pointer to C++ object
-  cdef readonly object handle # PyCObject holding pointer to C++ object
-  cdef readonly object name # Identifier for object base type
-
-  def __init__(self):
-    """Constructor."""
-    self.handle = None
-    self.thisptr = NULL
-    self.name = "spatialdata_geocoords_CoordSys"
-    return
-
-
-  def initialize(self):
-    """Initialize the coordinate system."""
-    # create shim for method 'initialize'
-    #embed{ void CoordSys_initialize(void* pObj)
-    ((spatialdata::geocoords::CoordSys*) pObj)->initialize();
-    #}embed
-
-    CoordSys_initialize(self.thisptr)
-    return
-
-
-  def _createHandle(self):
-    """Wrap pointer to C++ object in PyCObject."""
-    # create shim for destructor
-    #embed{ void CoordSys_destructor(void* pObj)
-    spatialdata::geocoords::CoordSys* pCS =
-      (spatialdata::geocoords::CoordSys*) pObj;
-    delete pCS;
-    #}embed
-    return PyCObject_FromVoidPtr(self.thisptr, CoordSys_destructor)
-
-
-  property spaceDim:
-    def __set__(self, ndims):
-      """Set number of dimensions for coordinates."""
-      # create shim for method 'spaceDim'
-      #embed{ void CoordSys_spaceDim_set(void* pObj, int ndims)
-      ((spatialdata::geocoords::CoordSys*) pObj)->setSpaceDim(ndims);
-      #}embed
-      CoordSys_spaceDim_set(self.thisptr, ndims)
-
-    def __get__(self):
-      """Get number of dimensions for coordinates."""
-      # create shim for method 'spaceDim'
-      #embed{ int CoordSys_spaceDim_get(void* pObj)
-      return ((spatialdata::geocoords::CoordSys*) pObj)->spaceDim();
-      #}embed
-      return CoordSys_spaceDim_get(self.thisptr)
-
-
-# ----------------------------------------------------------------------
-cdef class CSCart(CoordSys):
-
-  def __init__(self):
-    """Constructor."""
-    # create shim for constructor
-    #embed{ void* CSCart_constructor()
-      return (void*)(new spatialdata::geocoords::CSCart);
-    #}embed
-
-    CoordSys.__init__(self)
-    self.thisptr = CSCart_constructor()
-    self.handle = self._createHandle()
-    return
-
-
-  property toMeters:
-    def __set__(self, scale):
-      """Set scale factor for converting coordinates to SI units (meters)."""
-      # create shim for method 'toMeters'
-      #embed{ void CSCart_toMeters_set(void* pObj, double scale)
-      ((spatialdata::geocoords::CSCart*) pObj)->toMeters(scale);
-      #}embed
-      CSCart_toMeters_set(self.thisptr, scale)
-
-    def __get__(self):
-      """Get scale factor for converting coordinates to SI units (meters)."""
-      # create shim for method 'toMeters'
-      #embed{ double CSCart_toMeters_get(void* pObj)
-      return ((spatialdata::geocoords::CSCart*) pObj)->toMeters();
-      #}embed
-      return CSCart_toMeters_get(self.thisptr)
-
-
-# ----------------------------------------------------------------------
-cdef class CSGeo(CoordSys):
-
-  def __init__(self):
-    """Constructor."""
-    # create shim for constructor
-    #embed{ void* CSGeo_constructor()
-      return (void*)(new spatialdata::geocoords::CSGeo);
-    #}embed
-
-    CoordSys.__init__(self)
-    self.thisptr = CSGeo_constructor()
-    self.handle = self._createHandle()
-    return
-
-
-  property ellipsoid:
-    def __set__(self, name):
-      """Set reference ellipsoid."""
-      # create shim for method 'ellipsoid'
-      #embed{ void CSGeo_ellipsoid_set(void* pObj, char* name)
-        ((spatialdata::geocoords::CSGeo*) pObj)->ellipsoid(name);
-      #}embed
-      CSGeo_ellipsoid_set(self.thisptr, name)
-
-    def __get__(self):
-      """Fet reference ellipsoid."""
-      # create shim for method 'ellipsoid'
-      #embed{ char* CSGeo_ellipsoid_get(void* pObj)
-        return (char*) ((spatialdata::geocoords::CSGeo*) pObj)->ellipsoid();
-      #}embed
-      return CSGeo_ellipsoid_get(self.thisptr)
-
-
-  property datumHoriz:
-    def __set__(self, name):
-      """Set horizontal datum."""
-      # create shim for method 'datumHoriz'
-      #embed{ void CSGeo_datumHoriz_set(void* pObj, char* name)
-      ((spatialdata::geocoords::CSGeo*) pObj)->datumHoriz(name);
-      #}embed
-      CSGeo_datumHoriz_set(self.thisptr, name)
-      
-    def __get__(self):
-      """Get horizontal datum."""
-      # create shim for method 'datumHoriz'
-      #embed{ char* CSGeo_datumHoriz_get(void* pObj)
-        return (char*) ((spatialdata::geocoords::CSGeo*) pObj)->datumHoriz();
-      #}embed
-      return CSGeo_datumHoriz_get(self.thisptr)
-
-
-  property datumVert:
-    def __set__(self, name):
-      """Set vertical datum."""
-      # create shim for method 'datumVert'
-      #embed{ void CSGeo_datumVert_set(void* pObj, char* name)
-        ((spatialdata::geocoords::CSGeo*) pObj)->datumVert(name);
-      #}embed
-      CSGeo_datumVert_set(self.thisptr, name)
-
-    def __get__(self):
-      """Get vertical datum."""
-      # create shim for method 'datumVert'
-      #embed{ char* CSGeo_datumVert_get(void* pObj)
-        return (char*) ((spatialdata::geocoords::CSGeo*) pObj)->datumVert();
-      #}embed
-      return CSGeo_datumVert_get(self.thisptr)
-
-
-  property isGeocentric:
-    def __set__(self, flag):
-      """Set geocentric flag."""
-      # create shim for method 'isGeocentric'
-      #embed{ void CSGeo_isGeocentric_set(void* pObj, int flag)
-        ((spatialdata::geocoords::CSGeo*) pObj)->isGeocentric(flag);
-      #}embed
-      CSGeo_isGeocentric_set(self.thisptr, flag)
-
-    def __get__(self):
-      """Get geocentric flag."""
-      # create shim for method 'isGeocentric'
-      #embed{ int CSGeo_isGeocentric_get(void* pObj)
-        return ((spatialdata::geocoords::CSGeo*) pObj)->isGeocentric();
-      #}embed
-      return CSGeo_isGeocentric_get(self.thisptr)
-      
-
-  property toMeters:
-    def __set__(self, scale):
-      """Set factor to convert Cartesian coordinates to meters."""
-      # create shim for method 'toMeters'
-      #embed{ void CSGeo_toMeters_set(void* pObj, double scale)
-        ((spatialdata::geocoords::CSGeo*) pObj)->toMeters(scale);
-      #}embed
-      CSGeo_toMeters_set(self.thisptr, scale)
-
-    def __get__(self):
-      """Get factor to convert Cartesian coordinates to meters."""
-      # create shim for method 'toMeters'
-      #embed{ double CSGeo_toMeters_get(void* pObj)
-        return ((spatialdata::geocoords::CSGeo*) pObj)->toMeters();
-      #}embed
-      return CSGeo_toMeters_get(self.thisptr)
-
-
-# ----------------------------------------------------------------------
-cdef class CSGeoLocalCart(CSGeo):
-
-  def __init__(self):
-    """Constructor."""
-    # create shim for constructor
-    #embed{ void* CSGeoLocalCart_constructor()
-      return (void*)(new spatialdata::geocoords::CSGeoLocalCart);
-    #}embed
-
-    CSGeo.__init__(self)
-    self.thisptr = CSGeoLocalCart_constructor()
-    self.handle = self._createHandle()
-    return
-
-
-  def origin(self, lon, lat, elev):
-    """Set origin of local cartesian coordinate system."""
-    # create shim for method 'origin'
-    #embed{ void CSGeoLocalCart_origin(void* pObj, double lon, double lat, double elev)
-    ((spatialdata::geocoords::CSGeoLocalCart*) pObj)->origin(lon, lat, elev);
-    #}embed
-    CSGeoLocalCart_origin(self.thisptr, lon, lat, elev)
-
-
-  def getOrigin(self):
-    """Get origin of local cartesian coordinate system."""
-    # create shim for method 'origin'
-    #embed{ void CSGeoLocalCart_getOrigin(void* pObj, double* pLon, double* pLat, double* pElev)
-    ((spatialdata::geocoords::CSGeoLocalCart*) pObj)->origin(pLon, pLat, pElev);
-    #}embed
-    cdef double lon, lat, elev
-    CSGeoLocalCart_getOrigin(self.thisptr, &lon, &lat, &elev)
-    return (lon, lat, elev)
-
-
-# ----------------------------------------------------------------------
-cdef class CSGeoProj(CSGeo):
-
-  def __init__(self):
-    """Constructor."""
-    # create shim for constructor
-    #embed{ void* CSGeoProj_constructor()
-      return (void*)(new spatialdata::geocoords::CSGeoProj);
-    #}embed
-
-    CSGeo.__init__(self)
-    self.thisptr = CSGeoProj_constructor()
-    self.handle = self._createHandle()
-    return
-
-
-  property projector:
-    def __set__(self, proj):
-      """Set projector."""
-      # create shim for method 'projector'
-      #embed{ void CSGeoProj_projector(void* pObj, void* pProjObj)
-      const spatialdata::geocoords::Projector* pProj =
-        (spatialdata::geocoords::Projector*) pProjObj;
-        ((spatialdata::geocoords::CSGeoProj*) pObj)->projector(*pProj);
-      #}embed
-      if not proj.name == "spatialdata_geocoords_Projector":
-        raise TypeError, \
-              "Argument must be extension module type 'Projector'."
-      CSGeoProj_projector(self.thisptr, ptrFromHandle(proj))
-
-
-# ----------------------------------------------------------------------
-cdef class Projector:
-
-  cdef void* thisptr # Pointer to C++ object
-  cdef readonly object handle # PyCObject holding pointer to C++ object
-  cdef readonly object name # Identifier for type of object
-
-  def __init__(self):
-    """Constructor."""
-    # create shim for constructor
-    #embed{ void* Projector_constructor()
-    return (void*)(new spatialdata::geocoords::Projector);
-    #}embed
-
-    self.thisptr = Projector_constructor()
-    self.handle = self._createHandle()
-    self.name = "spatialdata_geocoords_Projector"
-    return
-
-
-  property projection:
-    def __set__(self, name):
-      """Set projection."""
-      # create shim for method 'projection'
-      #embed{ void Projector_projection_set(void* pObj, char* name)
-      ((spatialdata::geocoords::Projector*) pObj)->projection(name);
-      #}embed
-      Projector_projection_set(self.thisptr, name)
-
-    def __get__(self):
-      """Get projection."""
-      # create shim for method 'projection'
-      #embed{ char* Projector_projection_get(void* pObj)
-        return (char*) ((spatialdata::geocoords::Projector*) pObj)->projection();
-      #}embed
-      return Projector_projection_get(self.thisptr)
-
-
-  property units:
-    def __set__(self, name):
-      """Set units of projection."""
-      # create shim for method 'units'
-      #embed{ void Projector_units_set(void* pObj, char* name)
-      ((spatialdata::geocoords::Projector*) pObj)->units(name);
-      #}embed
-      Projector_units_set(self.thisptr, name)
-
-    def __get__(self):
-      """Get units of projection."""
-      # create shim for method 'units'
-      #embed{ char* Projector_units_get(void* pObj)
-        return (char*) ((spatialdata::geocoords::Projector*) pObj)->units();
-      #}embed
-      return Projector_units_get(self.thisptr)
-
-  property projOptions:
-    def __set__(self, options):
-      """Set proj.4 options for projector."""
-      # create shim for method 'projOptions'
-      #embed{ void Projector_projOptions_set(void* pObj, char* options)
-        ((spatialdata::geocoords::Projector*) pObj)->projOptions(options);
-      #}embed
-      Projector_projOptions_set(self.thisptr, options)
-
-    def __get__(self):
-      """Set proj.4 options for projector."""
-      # create shim for method 'projOptions'
-      #embed{ char* Projector_projOptions_get(void* pObj)
-        return (char*) ((spatialdata::geocoords::Projector*) pObj)->projOptions();
-      #}embed
-      return Projector_projOptions_get(self.thisptr)
-
-
-  def initialize(self, csGeo):
-    """Initialize projector."""
-    # create shim for method 'initialize'
-    #embed{ void Projector_initialize(void* pObj, void* pCSObj)
-    const spatialdata::geocoords::CoordSys* pCS =
-      (spatialdata::geocoords::CoordSys*) pCSObj;
-    const spatialdata::geocoords::CSGeo* pCSGeo =
-      dynamic_cast<const spatialdata::geocoords::CSGeo*>(pCS);
-    ((spatialdata::geocoords::Projector*) pObj)->initialize(*pCSGeo);
-    #}embed
-
-    if not csGeo.name == "spatialdata_geocoords_CoordSys":
-      raise TypeError, \
-            "Argument 'csGeo' must be extension module type 'CSGeo'."
-
-    Projector_initialize(self.thisptr, ptrFromHandle(csGeo))
-    return
-  
-
-  def project(self, lonlat):
-    """Project geographic coordinates."""
-    # create shim for method 'project'
-    #embed{ void Projector_project(void* pObj, double* pX, double* pY, double lon, double lat)
-    ((spatialdata::geocoords::Projector*) pObj)->project(pX, pY, lon, lat);
-    #}embed
-
-    cdef double x
-    cdef double y
-    npts = len(lonlat)
-    xy = []
-    for i from 0 <= i < npts:
-      lon = lonlat[i][0]
-      lat = lonlat[i][1]
-      Projector_project(self.thisptr, &x, &y, lon, lat)
-      xy.append([x, y])
-    return xy
-  
-
-  def invproject(self, xy):
-    """Get geographics coordinates for projected location."""
-    # create shim for method 'invproject'
-    #embed{ void Projector_invproject(void* pObj, double* pLon, double* pLat, double x, double y)
-    ((spatialdata::geocoords::Projector*) pObj)->invproject(pLon, pLat, x, y);
-    #}embed
-
-    cdef double lon
-    cdef double lat
-    npts = len(xy)
-    lonlat = []
-    for i from 0 <= i < npts:
-      x = xy[i][0]
-      y = xy[i][1]
-      Projector_invproject(self.thisptr, &lon, &lat, x, y)
-      lonlat.append([lon, lat])
-    return lonlat
-  
-
-  def _createHandle(self):
-    """Wrap pointer to C++ object in PyCObject."""
-    # create shim for destructor
-    #embed{ void Projector_destructor(void* pObj)
-    spatialdata::geocoords::Projector* pProj =
-      (spatialdata::geocoords::Projector*) pObj;
-    delete pProj;
-    #}embed
-    return PyCObject_FromVoidPtr(self.thisptr, Projector_destructor)
-
-
-# ----------------------------------------------------------------------
-# create shim for Converter method 'convert'
-#embed{ void CppConverter_convert(double* coords, int numLocs, int numDims, void* pCSDestObj, void* pCSSrcObj)
-spatialdata::geocoords::CoordSys* pCSDest =
-  (spatialdata::geocoords::CoordSys*) pCSDestObj;
-spatialdata::geocoords::CoordSys* pCSSrc =
-  (spatialdata::geocoords::CoordSys*) pCSSrcObj;
-spatialdata::geocoords::Converter::convert(coords, numLocs, numDims,
-                                           pCSDest, pCSSrc);
-#}embed
-
-def Converter_convert(coordsSrc, csDest, csSrc):
-  """Convert coordinates from source coordinate system 'csSrc' to
-  destination coordinate system 'csDest'."""
-
-  import spatialdata.utils.simplearray
-  coordsSrc = spatialdata.utils.simplearray.objAsSimpleArray(coordsSrc)
-  if not coordsSrc.isCompatible(nd=2,
-                                simpletype="double",
-                                writeable=True,
-                                contiguous=True,
-                                notswapped=True):
-    raise TypeError, \
-          "Argument 'coordsSrc' must be a contiguous, writeable, 2-D array " \
-          "of type double."
-
-  if not csDest.name == "spatialdata_geocoords_CoordSys":
-    raise TypeError, \
-          "Argument 'csDest' must be extension module type 'CSGeo'."
-  if not csSrc.name == "spatialdata_geocoords_CoordSys":
-    raise TypeError, \
-          "Argument 'csSrc' must be extension module type 'CSGeo'."
-
-  (numLocs, numDims) = coordsSrc.shape
-
-  cdef double* vals
-  vals = <double*> PyCObject_AsVoidPtr(coordsSrc.data)
-  CppConverter_convert(vals, numLocs, numDims,
-                       ptrFromHandle(csDest), ptrFromHandle(csSrc))
-  return
-
-
-# End of file 

Copied: cs/spatialdata-0.1/trunk/modulesrc/geocoords/geocoords.pyxe.src (from rev 5948, cs/spatialdata-0.1/trunk/modulesrc/geocoords/geocoords.pyxe)

Modified: cs/spatialdata-0.1/trunk/modulesrc/spatialdb/Makefile.am
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/spatialdb/Makefile.am	2007-02-01 20:26:35 UTC (rev 5948)
+++ cs/spatialdata-0.1/trunk/modulesrc/spatialdb/Makefile.am	2007-02-01 21:25:44 UTC (rev 5949)
@@ -31,8 +31,8 @@
 
 spatialdb.pyx spatialdb_embed.cpp  spatialdb_embed.h: spatialdb.pyxe
 	pyrexembed spatialdb.pyxe
-spacialdb.pyxe: $(srcdir)/spacialdb.pyxe
-	cp $(srcdir)/spacialdb.pyxe $@
+spatialdb.pyxe: $(srcdir)/spatialdb.pyxe.src
+	cp $(srcdir)/spatialdb.pyxe.src $@
 spatialdb_embed.cpp: spatialdb_embed.h
 spatialdb_embed.h: spatialdb.pyx
 

Modified: cs/spatialdata-0.1/trunk/modulesrc/spatialdb/generator/Makefile.am
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/spatialdb/generator/Makefile.am	2007-02-01 20:26:35 UTC (rev 5948)
+++ cs/spatialdata-0.1/trunk/modulesrc/spatialdb/generator/Makefile.am	2007-02-01 21:25:44 UTC (rev 5949)
@@ -29,8 +29,8 @@
 
 generator.pyx generator_embed.cpp  generator_embed.h: generator.pyxe
 	pyrexembed generator.pyxe
-generator.pyxe: $(srcdir)/generator.pyxe
-	cp $(srcdir)/generator.pyxe $@
+generator.pyxe: $(srcdir)/generator.pyxe.src
+	cp $(srcdir)/generator.pyxe.src $@
 generator_embed.cpp: generator_embed.h
 generator_embed.h: generator.pyx
 

Deleted: cs/spatialdata-0.1/trunk/modulesrc/spatialdb/generator/generator.pyxe
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/spatialdb/generator/generator.pyxe	2007-02-01 20:26:35 UTC (rev 5948)
+++ cs/spatialdata-0.1/trunk/modulesrc/spatialdb/generator/generator.pyxe	2007-02-01 21:25:44 UTC (rev 5949)
@@ -1,197 +0,0 @@
-#!/usr/bin/env python
-#
-# ======================================================================
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# {LicenseText}
-#
-# ======================================================================
-#
-
-# Ugly implementation of some routines used to generate SimpleDB
-# databases from other spatial databases.
-
-#header{
-#include "spatialdata/spatialdb/SpatialDB.hh"
-#include "spatialdata/spatialdb/SimpleDB.hh"
-#include "spatialdata/spatialdb/SimpleDBTypes.hh"
-#}header
-
-# ----------------------------------------------------------------------
-cdef extern from "Python.h":
-  object PyCObject_FromVoidPtr(void*, void (*destruct)(void*))
-  void* PyCObject_AsVoidPtr(object)
-
-
-cdef void* ptrFromHandle(obj):
-  """Extract pointer from PyCObject."""
-  return PyCObject_AsVoidPtr(obj.handle)
-
-cdef void deleteArray(void* p):
-  """Deallocate C array."""
-  free(p);
-  return
-
-
-cdef extern from "stdlib.h":
-    ctypedef unsigned long size_t
-    void* malloc(size_t size)
-    void free(void* mem)
-
-
-
-# ----------------------------------------------------------------------
-def create(coords, locCount, locDim, numValues, spaceDim, dataDim):
-  """Create structure for simple database."""
-  # create C++ shim
-  #embed{ void GenSimpleDB_tearDownData(void* pDataObj)
-  spatialdata::spatialdb::SimpleDB::DataStruct* pData =
-  (spatialdata::spatialdb::SimpleDB::DataStruct*) pDataObj;
-  if (0 != pData) {
-    delete[] pData->data;
-    delete[] pData->valNames;
-    delete[] pData->valUnits;
-    } // if
-  delete pData;
-  #}embed
-  
-  # create C++ shim
-  #embed{ void* GenSimpleDB_create(void* pCoordsObj, int locCount, int locDim, int numValues, int spaceDim, int dataDim)
-  spatialdata::spatialdb::SimpleDB::DataStruct* pData =
-  new spatialdata::spatialdb::SimpleDB::DataStruct;
-  const int totalNumValues = locDim + numValues;
-  const int size = locCount * totalNumValues;
-  if (size > 0) {
-    pData->data = new double[size];
-    std::fill(pData->data, pData->data+size, 0.0);
-    pData->numLocs = locCount;
-    pData->numVals = numValues;
-    pData->valNames = (numValues > 0) ? new std::string[numValues] : 0;
-    pData->valUnits = (numValues > 0) ? new std::string[numValues] : 0;
-    pData->spaceDim = spaceDim;
-    pData->dataDim = dataDim;
-  } // if
-  double* pCoords = (double*) pCoordsObj;
-  for (int iLoc=0; iLoc < locCount; ++iLoc) {
-    double* pDataCoords = 
-    spatialdata::spatialdb::SimpleDBTypes::dataCoords(*pData, iLoc);
-    for (int iDim=0; iDim < locDim; ++iDim)
-    pDataCoords[iDim] = pCoords[locDim*iLoc+iDim];
-  } // for
-  return (void*) pData;
-  #}embed
-
-  cdef void* pCoordsObj
-  pCoordsObj = PyCObject_AsVoidPtr(coords)
-
-  return PyCObject_FromVoidPtr(
-    GenSimpleDB_create(pCoordsObj,
-                       locCount, locDim, numValues, spaceDim, dataDim),
-    GenSimpleDB_tearDownData)
-
-
-def createValue(count):
-  """Create array of values, initialized to 0."""
-  cdef double* pVals
-  if count < 1:
-    raise ValueError, "Argument 'count' must be positive."
-  pVals = <double*> malloc(count*sizeof(double))
-  for i from 0 <= i < count:
-    pVals[i] = 0.0
-  return PyCObject_FromVoidPtr(pVals, deleteArray)
-
-
-def setValue(data, dataIndex, value, locCount, name, units):
-  """Set database value using array of values."""
-  # create C++ shim
-  #embed{ void GenSimpleDB_setValue(void* pDataObj, int dataIndex, void* pValueObj, int locCount, char* name, char* units)
-  spatialdata::spatialdb::SimpleDB::DataStruct* pData =
-  (spatialdata::spatialdb::SimpleDB::DataStruct*) pDataObj;
-  double* pValue = (double*) pValueObj;
-  
-  for (int iLoc=0; iLoc < locCount; ++iLoc) {
-    double* pDataVals = 
-    spatialdata::spatialdb::SimpleDBTypes::dataVals(*pData, iLoc);
-    pDataVals[dataIndex] = pValue[iLoc];
-  } // for
-  pData->valNames[dataIndex] = name;
-  pData->valUnits[dataIndex] = units;
-  #}embed
-
-  cdef void* pDataObj
-  cdef void* pValueObj
-
-  pDataObj = PyCObject_AsVoidPtr(data)
-  pValueObj = PyCObject_AsVoidPtr(value)
-
-  GenSimpleDB_setValue(pDataObj, dataIndex, pValueObj, locCount, name, units)
-  return
-
-
-def applyFilter(value, valueCount, locs, locCount, cs, db,
-                operand, defaultValue):
-  """Apply filter to value."""
-  # create C++ shim
-  #embed{ void GenSimpleDB_applyFilter(void* pValueObj, int valueCount, void* pLocsObj, int locCount, void* pCSObj, void* pDBObj, char* operand, double defaultValue)
-  
-  double* pValue = (double*) pValueObj;
-  double* pLocs = (double*) pLocsObj;
-  spatialdata::spatialdb::SpatialDB* pDB =
-    (spatialdata::spatialdb::SpatialDB*) pDBObj;
-  spatialdata::geocoords::CoordSys* pCS =
-    (spatialdata::geocoords::CoordSys*) pCSObj;
-    
-  double* pFilterData = (locCount > 0) ? new double[locCount] : 0;
-  double val = 0;
-  int err = 0;
-  for (int iLoc=0, index=0; iLoc < locCount; ++iLoc, index += 3) {
-    err = pDB->query(&val, 1, &pLocs[index], 3, pCS);
-    if (0 != err)
-      val = defaultValue;
-    pFilterData[iLoc] = val;
-  } // for
-  if (0 == strcasecmp("add", operand))
-    for (int iLoc=0; iLoc < locCount; ++iLoc)
-      pValue[iLoc] += pFilterData[iLoc];
-  else if (0 == strcasecmp("subtract", operand))
-    for (int iLoc=0; iLoc < locCount; ++iLoc)
-      pValue[iLoc] -= pFilterData[iLoc];
-  else if (0 == strcasecmp("multiply", operand))
-    for (int iLoc=0; iLoc < locCount; ++iLoc)
-      pValue[iLoc] *= pFilterData[iLoc];
-  else if (0 == strcasecmp("divide", operand))
-    for (int iLoc=0; iLoc < locCount; ++iLoc)
-      pValue[iLoc] /= pFilterData[iLoc];
-  delete[] pFilterData; pFilterData = 0;
-  #}embed
-
-  if not cs.name == "spatialdata_geocoords_CoordSys":
-    raise TypeError, \
-          "Arguement 'cs' must be an extensional module type 'CoordSys'."
-  if not db.name == "spatialdata_spatialdb_SpatialDB":
-    raise TypeError, \
-          "Argument 'db' must be an extension module type 'SpatialDB'."
-  if not (operand == "add" or
-          operand == "subtract" or
-          operand == "multiply" or
-          operand == "divide"):
-    raise ValueError, "Arguement operand must be 'add', 'subtract', " \
-          "'multiply', or 'divide'."
-  
-  cdef void* pValueObj
-  cdef void* pLocsObj
-  
-  pValueObj = PyCObject_AsVoidPtr(value)
-  pLocsObj = PyCObject_AsVoidPtr(locs)
-  GenSimpleDB_applyFilter(pValueObj, valueCount, pLocsObj, locCount,
-                          ptrFromHandle(cs), ptrFromHandle(db),
-                          operand, defaultValue)
-  return
-  
-
-# version
-__id__ = "$Id$"
-
-# End of file 

Copied: cs/spatialdata-0.1/trunk/modulesrc/spatialdb/generator/generator.pyxe.src (from rev 5948, cs/spatialdata-0.1/trunk/modulesrc/spatialdb/generator/generator.pyxe)

Deleted: cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe	2007-02-01 20:26:35 UTC (rev 5948)
+++ cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe	2007-02-01 21:25:44 UTC (rev 5949)
@@ -1,315 +0,0 @@
-#!/usr/bin/env python
-#
-# ======================================================================
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# {LicenseText}
-#
-# ======================================================================
-#
-
-#header{
-#include "spatialdata/spatialdb/SpatialDB.hh"
-#include "spatialdata/spatialdb/SimpleDB.hh"
-#include "spatialdata/spatialdb/SimpleIO.hh"
-#include "spatialdata/spatialdb/SimpleIOAscii.hh"
-
-#include "spatialdata/geocoords/CoordSys.hh"
-#}header
-
-# ----------------------------------------------------------------------
-cdef extern from "Python.h":
-  object PyCObject_FromVoidPtr(void*, void (*destruct)(void*))
-  void* PyCObject_AsVoidPtr(object)
-
-
-cdef void* ptrFromHandle(obj):
-  """Extract pointer from PyCObject."""
-  return PyCObject_AsVoidPtr(obj.handle)
-
-
-cdef extern from "stdlib.h":
-    ctypedef unsigned long size_t
-    void* malloc(size_t size)
-    void free(void* mem)
-    void strcpy(char*, char*)
-
-# ----------------------------------------------------------------------
-cdef class SpatialDB:
-
-  cdef void* thisptr # Pointer to C++ object
-  cdef readonly object handle # PyCObject holding pointer to C++ object
-  cdef readonly object name # Identifier for type of object
-
-  def __init__(self):
-    """Constructor."""
-    self.handle = None
-    self.thisptr = NULL
-    self.name = "spatialdata_spatialdb_SpatialDB"
-    return
-
-
-  property label:
-    def __set__(self, name):
-      """Set label of spatial database."""
-      # create shim for method 'label'
-      #embed{ void SpatialDB_label_set(void* pObj, char* name)
-      ((spatialdata::spatialdb::SpatialDB*) pObj)->label(name);
-      #}embed
-
-      SpatialDB_label_set(self.thisptr, name)
-
-    def __get__(self):
-      """Get label of spatial database."""
-      # create shim for method 'label'
-      #embed{ char* SpatialDB_label_get(void* pObj)
-      return (char*) ((spatialdata::spatialdb::SpatialDB*) pObj)->label();
-      #}embed
-
-      return SpatialDB_label_get(self.thisptr)
-
-      
-  def open(self):
-    """Open database and prepare for querying."""
-    # create shim for method 'open'
-    #embed{ void SpatialDB_open(void* pObj)
-    ((spatialdata::spatialdb::SpatialDB*) pObj)->open();
-    #}embed
-
-    SpatialDB_open(self.thisptr)
-    return
-
-
-  def close(self):
-    """Close the database."""
-    # create shim for method 'close'
-    #embed{ void SpatialDB_close(void* pObj)
-    ((spatialdata::spatialdb::SpatialDB*) pObj)->close();
-    #}embed
-
-    SpatialDB_close(self.thisptr)
-    return
-
-
-  def queryVals(self, names):
-    """Set values to be returned by queries."""
-    # create shim for method 'queryVals'
-    #embed{ void SpatialDB_queryVals(void* pObj, char** names, int numVals)
-    ((spatialdata::spatialdb::SpatialDB*) pObj)->queryVals((const char**) names, numVals);
-    #}embed
-
-    cdef char** pNames
-    numVals = len(names)
-    pNames = <char**> malloc(numVals*sizeof(char*))
-    for i from 0 <= i < numVals:
-      strsize = len(names[i])
-      pNames[i] = <char*> malloc(1+strsize*sizeof(char))
-      tmp = names[i]
-      strcpy(pNames[i], tmp)
-
-    SpatialDB_queryVals(self.thisptr, pNames, numVals)
-
-    # memory cleanup
-    for i from 0 <= i < numVals:
-      free(<void*> pNames[i])
-    free(<void*> pNames)
-    
-    return
-
-
-  def query(self, locs, cs, nvals):
-    """Query db to get values at locations."""
-    # create shim for method 'query'
-    #embed{ void SpatialDB_query(void* pObj, double* vals, int nvals, double* coords, int spaceDim, void* csObj)
-    spatialdata::geocoords::CoordSys* pCS =
-      (spatialdata::geocoords::CoordSys*) csObj;
-    ((spatialdata::spatialdb::SpatialDB*) pObj)->query(vals, nvals,
-                                                       coords, spaceDim,
-                                                       pCS);
-    #}embed
-
-    import spatialdata.utils.simplearray
-    locs = spatialdata.utils.simplearray.objAsSimpleArray(locs)
-    if not locs.isCompatible(nd=2,
-                             simpletype="double",
-                             contiguous=True,
-                             notswapped=True):
-      raise TypeError, \
-            "Argument 'locs' must be a contiguous, 2-D array of type double."
-
-    if not cs.name == "spatialdata_geocoords_CoordSys":
-      raise TypeError, \
-            "Argument 'cs' must be extension module type 'CoordSys'."
-    if nvals < 1:
-      raise TypeError, \
-              "Argument 'nvals' must be a positive integer."
-
-    (nlocs, spaceDim) = locs.shape
-    
-    cdef double* pLocs
-    pLocs = <double*> PyCObject_AsVoidPtr(locs.data)
-
-    cdef double* pVals
-    pVals = <double*> malloc(nlocs*nvals*sizeof(double))
-
-    cdef double* valbuffer
-    valbuffer = <double*> malloc(nvals*sizeof(double))
-
-    for iloc from 0 <= iloc < nlocs:
-      SpatialDB_query(self.thisptr, valbuffer, nvals,
-                      &pLocs[spaceDim*iloc], spaceDim,
-                      ptrFromHandle(cs))
-      for ival from 0 <= ival < nvals:
-        pVals[nvals*iloc+ival] = valbuffer[ival]
-    free(<void*> valbuffer)
-
-    dims = [nlocs, nvals]
-    import spatialdata.utils.simplearray
-    pValsObj = PyCObject_FromVoidPtr(pVals, NULL);
-    return spatialdata.utils.simplearray.SimpleCppArray(pValsObj,
-                                                        dims, "double")
-
-
-  def _createHandle(self):
-    """Wrap pointer to C++ object in PyCObject."""
-    # create shim for destructor
-    #embed{ void SpatialDB_destructor(void* pObj)
-    spatialdata::spatialdb::SpatialDB* pDB =
-      (spatialdata::spatialdb::SpatialDB*) pObj;
-    delete pDB;
-    #}embed
-    return PyCObject_FromVoidPtr(self.thisptr, SpatialDB_destructor)
-
-
-# ----------------------------------------------------------------------
-cdef class SimpleDB(SpatialDB):
-
-  def __init__(self):
-    """Constructor."""
-    # create shim for constructor
-    #embed{ void* SimpleDB_constructor()
-      return (void*)(new spatialdata::spatialdb::SimpleDB);
-    #}embed
-
-    SpatialDB.__init__(self)
-    self.thisptr = SimpleDB_constructor()
-    self.handle = self._createHandle()
-    return
-
-
-  def queryType(self, name):
-    """Set query type"""
-    # create shim for method 'queryType'
-    #embed{ void SimpleDB_queryType(void* pObj, char* name)
-    spatialdata::spatialdb::SimpleDB::QueryEnum queryType =
-      spatialdata::spatialdb::SimpleDB::NEAREST;
-    if (0 == strcasecmp(name, "nearest"))
-      queryType = spatialdata::spatialdb::SimpleDB::NEAREST;
-    else if (0 == strcasecmp(name, "linear"))
-      queryType = spatialdata::spatialdb::SimpleDB::LINEAR;
-    ((spatialdata::spatialdb::SimpleDB*) pObj)->queryType(queryType);
-    #}embed
-
-    if not (name.lower() == "nearest" or name.lower() == "linear"):
-      raise ValueError, "Couldn't parse query type '%s' into a known type" \
-            "type of query. Accepted values are 'nearest' and 'linear'." \
-            % name
-
-    SimpleDB_queryType(self.thisptr, name)
-    return
-
-
-  def ioHandler(self, handle):
-    """Set the I/O handler."""
-    # create shim for method 'ioHandler'
-    #embed{ void SimpleDB_ioHandler(void* pObj, void* pHandlerObj)
-    spatialdata::spatialdb::SimpleIO* pHandler =
-      (spatialdata::spatialdb::SimpleIO*) pHandlerObj;
-    ((spatialdata::spatialdb::SimpleDB*) pObj)->ioHandler(pHandler);
-    #}embed
-
-    if not handle.name == "spatialdata_spatialdb_SimpleIO":
-      raise TypeError, \
-            "Argument 'handle' must be extension module type 'SimpleIO'."
-
-    SimpleDB_ioHandler(self.thisptr, ptrFromHandle(handle))
-    return
-
-
-# ----------------------------------------------------------------------
-cdef class SimpleIO:
-
-  cdef void* thisptr # Pointer to C++ object
-  cdef readonly object handle # PyCObject holding pointer to C++ object
-  cdef readonly object name # Identifier for type of object
-
-  def __init__(self):
-    """Constructor."""
-    self.handle = None
-    self.thisptr = NULL
-    self.name = "spatialdata_spatialdb_SimpleIO"
-    return
-
-
-  def filename(self, name):
-    """Set filename for database"""
-    # create shim for method 'filename'
-    #embed{ void SimpleIO_filename(void* pObj, char* name)
-    ((spatialdata::spatialdb::SimpleIO*) pObj)->filename(name);
-    #}embed
-
-    SimpleIO_filename(self.thisptr, name)
-    return
-
-
-  def _createHandle(self):
-    """Wrap pointer to C++ object in PyCObject."""
-    # create shim for destructor
-    #embed{ void SimpleIO_destructor(void* pObj)
-    spatialdata::spatialdb::SimpleIO* pIO =
-      (spatialdata::spatialdb::SimpleIO*) pObj;
-    delete pIO;
-    #}embed
-    return PyCObject_FromVoidPtr(self.thisptr, SimpleIO_destructor)
-
-
-# ----------------------------------------------------------------------
-cdef class SimpleIOAscii(SimpleIO):
-
-  def __init__(self):
-    """Constructor."""
-    # create shim for constructor
-    #embed{ void* SimpleIOAscii_constructor()
-      return (void*)(new spatialdata::spatialdb::SimpleIOAscii);
-    #}embed
-
-    SimpleIO.__init__(self)
-    self.thisptr = SimpleIOAscii_constructor()
-    self.handle = self._createHandle()
-    return
-
-
-  def write(self, data, cs):
-    """Write the database."""
-    # create shim for method 'write'
-    #embed{ void SimpleIOAscii_write(void* pObj, void* pDataObj, void* pCSObj)
-    spatialdata::spatialdb::SimpleDB::DataStruct* pData =
-      (spatialdata::spatialdb::SimpleDB::DataStruct*) pDataObj;  
-    spatialdata::geocoords::CoordSys* pCS =
-      (spatialdata::geocoords::CoordSys*) pCSObj;  
-    ((spatialdata::spatialdb::SimpleIOAscii*) pObj)->write(*pData, pCS);
-    #}embed
-
-    cdef void* pDataObj
-    pDataObj = PyCObject_AsVoidPtr(data)
-
-    SimpleIOAscii_write(self.thisptr, pDataObj, ptrFromHandle(cs))
-    return
-
-
-# version
-__id__ = "$Id$"
-
-# End of file 

Copied: cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src (from rev 5948, cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe)

Modified: cs/spatialdata-0.1/trunk/modulesrc/utils/Makefile.am
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/utils/Makefile.am	2007-02-01 20:26:35 UTC (rev 5948)
+++ cs/spatialdata-0.1/trunk/modulesrc/utils/Makefile.am	2007-02-01 21:25:44 UTC (rev 5949)
@@ -36,16 +36,16 @@
 # simple array targets
 simplearray.pyx simplearray_embed.cpp  simplearray_embed.h: simplearray.pyxe
 	pyrexembed simplearray.pyxe
-simplearray.pyxe: $(srcdir)/simplearray.pyxe
-	cp $(srcdir)/simplearray.pyxe $@
+simplearray.pyxe: $(srcdir)/simplearray.pyxe.src
+	cp $(srcdir)/simplearray.pyxe.src $@
 simplearray_embed.cpp: simplearray_embed.h
 simplearray_embed.h: simplearray.pyx
 
 # utils targets
 utils.pyx utils_embed.cpp  utils_embed.h: utils.pyxe
 	pyrexembed utils.pyxe
-utils.pyxe: $(srcdir)/utils.pyxe
-	cp $(srcdir)/utils.pyxe $@
+utils.pyxe: $(srcdir)/utils.pyxe.src
+	cp $(srcdir)/utils.pyxe.src $@
 utils_embed.cpp: utils_embed.h
 utils_embed.h: utils.pyx
 

Deleted: cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe	2007-02-01 20:26:35 UTC (rev 5948)
+++ cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe	2007-02-01 21:25:44 UTC (rev 5949)
@@ -1,414 +0,0 @@
-#!/usr/bin/env python
-#
-# ======================================================================
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# {LicenseText}
-#
-# ======================================================================
-
-
-# ----------------------------------------------------------------------
-cdef extern from "Python.h":
-  ctypedef int Py_intptr_t
-  void Py_INCREF(object)
-  void Py_DECREF(object)
-  long PyInt_AsLong(object)
-  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
-  ctypedef long intptr_t
-  void* malloc(size_t size)
-  void free(void* ptr)
-
-ctypedef struct PyArrayInterface:
-  int version
-  int nd
-  char typekind
-  int itemsize
-  int flags
-  Py_intptr_t* shape
-  Py_intptr_t* strides
-  void* data
-
-CONTIGUOUS = 0x01
-FORTRAN = 0x02
-ALIGNED = 0x100
-NOTSWAPPED = 0x200
-WRITEABLE = 0x400
-
-# Byte order used in PyArrayInterface
-byteorder = {'<': "little",
-             '>': "big"}
-import sys
-
-# ----------------------------------------------------------------------
-cdef void interface_destructor(void* ptr, void* array):
-  Py_DECREF(<object> array)
-
-# ----------------------------------------------------------------------
-cdef int _sanitylevel
-_sanitylevel = 2
-def sanitylevel(int level):
-  global _sanitylevel
-  _sanitylevel = level
-  return
-
-
-cdef int _debuglevel
-_debuglevel = 1
-def debuglevel(int level):
-  global _debuglevel
-  _debuglevel = level
-  return
-
-
-# ----------------------------------------------------------------------
-cdef class SimpleArray:
-  """Abstract base class for generic multi-dimensional array holding
-  simple C/C++ datatypes that is compatible with NumPy, Numeric, and
-  numarray."""
-
-  cdef readonly object name # Identifier for type of object
-  cdef readonly int nd # Number of dimensions in array
-  cdef readonly object shape # Dimensions of array
-  cdef readonly object strides # Strides for array
-  cdef readonly object data # PyCObject holding pointer to data
-
-  cdef object _typeinfo # Dictionary containing information about type in array
-  cdef PyArrayInterface* _interface # Array interface
-  cdef Py_intptr_t* _cshape # C array for shape information
-  cdef Py_intptr_t* _cstrides # C array for strides information
-
-  def __init__(self):
-    """Constructor."""
-    self.name = "spatialdata_utils_SimpleArray"
-    self.nd = 0
-    self.shape = None
-    self.strides = None
-    self._typeinfo = None
-    self._interface = NULL
-    self._cshape = NULL
-    self._cstrides = NULL
-    return
-
-
-  def __dealloc__(self):
-    """Destructor."""
-    free(self._interface)
-    free(self._cshape)
-    free(self._cstrides)
-    return
-  
-
-  def isCompatible(self, nd=None, simpletype=None,
-                   writeable=None, contiguous=None, notswapped=None):
-    """Check compatibility with requested traits. Return True if
-    compatible, False if not."""
-    global _sanitylevel
-    global _debuglevel
-
-    # Skip checks if sanity level < 1
-    if _sanitylevel < 1:
-      return True
-
-    if not nd is None:
-      if not nd == self.nd:
-        if _debuglevel > 0:
-          print "Expected nd '%d' but have nd '%d'." % \
-                (nd, self.nd)
-        return False
-    if not simpletype is None:
-      if not simpletype == self._typeinfo['type']:
-        if _debuglevel > 0:
-          print "Expected type '%s' but have type '%s'." % \
-                (simpletype, self._typeinfo['type'])
-        return False
-    flags = 0
-    if not writeable is None:
-      flags = flags | WRITEABLE
-    if not contiguous is None:
-      flags = flags | CONTIGUOUS
-    if not notswapped is None:
-      flags = flags | NOTSWAPPED
-    if not self._interface.flags & flags:
-      if _debuglevel > 0:
-        print "Incorrect attribute flags."
-      return False
-
-    if _sanitylevel > 1:
-      # make sure strides are compatible
-      ndims = len(self.strides)
-      stride = self._typeinfo['size']
-      for i from 0 <= i < ndims:
-        j = ndims-i-1
-        if not self.strides[j] == stride:
-          if _debuglevel > 0:
-            print "Expected stride '%d' but have stride '%d'." % \
-                  (stride, self.strides[j])
-          return False
-        stride = stride * self.shape[j]
-    
-    return True  
-
-
-  cdef _setupInterface(self, void* data, int flags):
-    """Create array interface."""
-    self._syncCShape()
-    self._syncCStrides()
-    
-    cdef PyArrayInterface* interface
-    interface = <PyArrayInterface*> malloc(sizeof(PyArrayInterface))
-    if interface is NULL:
-      raise MemoryError("Could not allocate array interface.")
-    interface.version = 2
-    interface.nd = self.nd
-    interface.typekind = ord(self._typeinfo['kind'])
-    interface.itemsize = self._typeinfo['size']
-    interface.flags = flags
-    interface.strides = self._cstrides
-    interface.shape = self._cshape
-    interface.data = data
-    self._interface = interface
-    self.data = PyCObject_FromVoidPtr(data, NULL)
-    return
-
-
-  cdef _calcStrides(self):
-    """Calculate strides for contiguous storage in row major (C/C++) order."""
-    nd = self.nd
-    self.strides = [0]*nd
-    stride = self._typeinfo['size']
-    for i from 0 <= i < nd:
-      j = nd-i-1
-      self.strides[j] = stride
-      stride = stride * self.shape[j]
-    return
-
-
-  cdef _syncCShape(self):
-    """Synchronize C shape array with Python shape array."""
-    free(self._cshape)
-    self._cshape = NULL
-    nd = len(self.shape)
-    if nd > 0:
-      self._cshape = <Py_intptr_t*> malloc(nd*sizeof(Py_intptr_t))
-      if self._cshape is NULL:
-        raise MemoryError("Could not allocate shape array.")
-      for i from 0 <= i < nd:
-        self._cshape[i] = self.shape[i]
-    return
-
-
-  cdef _syncCStrides(self):
-    """Synchronize C strides array with Python strides array."""
-    free(self._cstrides)
-    self._cstrides = NULL
-    nd = len(self.strides)
-    if nd > 0:
-      self._cstrides = <Py_intptr_t*> malloc(nd*sizeof(Py_intptr_t))
-      if self._cstrides is NULL:
-        raise MemoryError("Could not allocate strides array.")
-      for i from 0 <= i < nd:
-        self._cstrides[i] = self.strides[i]
-    return
-
-
-# ----------------------------------------------------------------------
-cdef class SimpleCppArray(SimpleArray):
-  """Implementation of generic multi-dimensional array created from C++
-  array."""
-  
-  cdef void* arrayptr # Pointer to head of array
-
-  def __init__(self, data, shape, valuetype):
-    """Constructor."""
-    SimpleArray.__init__(self)
-
-    nd = len(shape)
-    self.arrayptr = PyCObject_AsVoidPtr(data)
-    self.nd = nd
-    self._typeinfo = self._sizeandtype(valuetype)
-  
-    self.shape = [0]*nd
-    for i in range(nd):
-      self.shape[i] = shape[i]
-
-    self._calcStrides()
-    
-    flags = NOTSWAPPED | ALIGNED | CONTIGUOUS | WRITEABLE
-    self._setupInterface(self.arrayptr, flags)
-    return
-
-
-  def __dealloc__(self):
-    """Destructor."""
-    # create shim for 'delete'
-    #embed{ void PyCppArray_deletedouble(void* pData)
-      double* pArray = (double*) pData;
-      delete[] pArray;
-    #}embed
-    #embed{ void PyCppArray_deletefloat(void* pData)
-      float* pArray = (float*) pData;
-      delete[] pArray;
-    #}embed
-    #embed{ void PyCppArray_deleteint(void* pData)
-      int* pArray = (int*) pData;
-      delete[] pArray;
-    #}embed
-    if self._typeinfo['type'] == "double":
-      PyCppArray_deletedouble(self.arrayptr)
-    elif self._typeinfo['type'] == "float":
-      PyCppArray_deletefloat(self.arrayptr)
-    elif self._typeinfo['type'] == "int":
-      PyCppArray_deleteint(self.arrayptr)
-    return
-    
-
-  property __array_struct__:
-    """Generic array structure property compatible with NumPy, Numeric,
-    and numarray."""
-    def __get__(self):
-      Py_INCREF(self)
-      obj = PyCObject_FromVoidPtrAndDesc(<void*> self._interface, <void*> self,
-                                         interface_destructor)
-      return obj
-
-
-  cdef _sizeandtype(self, valuetype):
-    """
-    Get size and type information associated with C++ datatype.
-    """
-    info = {'double': {'size': sizeof(double),
-                       'kind': 'f',
-                       'type': "double"},
-            'float': {'size': sizeof(float),
-                      'kind': 'f',
-                      'type': "float"},
-            'int': {'size': sizeof(int),
-                    'kind': 'i',
-                    'type': "int"}}
-    if not valuetype in info.keys():
-      raise ValueError("Unknown C type in setting up SimpleArray.")
-    return info[valuetype]
-
-
-# ----------------------------------------------------------------------
-cdef class SimplePyArray(SimpleArray):
-  """Implementation of generic multi-dimensional array created from Python
-  object with __array_struct__ property."""
-
-  cdef object _pyarray # Python object holding array data
-
-  def __init__(self, pyarray):
-    """Constuctor."""
-    SimpleArray.__init__(self)
-
-    # Array interface version 2 (numpy < 1.0?)
-    #shape = pyarray.__array_shape__ # Array interface version 2
-    #typestring = pyarray.__array_typestr__
-    #strides = pyarray.__array_strides__
-    #address = int(pyarray.__array_data__[0], 16)
-    #readonly = pyarray.__array_data__[1]
-
-    # Array interface version ? (numpy >= 1.0)
-    pyarrayInfo = pyarray.__array_interface__
-    shape = pyarrayInfo['shape']
-    typestring = pyarrayInfo['typestr']
-    strides = pyarrayInfo['strides']
-    address = int(pyarrayInfo['data'][0])
-    readonly = pyarrayInfo['data'][1]
-
-    nd = len(shape)
-    self.nd = nd
-
-    self.shape = [0]*nd
-    for i in range(nd):
-      self.shape[i] = shape[i]
-
-    self._typeinfo = self._sizeandtype(typestring[1:])
-
-    if strides:
-      self.strides = [0]*nd
-      for i from 0 <= i < nd:
-        self.strides[i] = strides[i]
-    else:
-      self._calcStrides()
-
-    cdef void* data
-    data = <void*> PyInt_AsLong(address)
-
-    flags = 0
-    if '|' == typestring[0]:
-      flags = flags | NOTSWAPPED
-    elif byteorder[typestring[0]] == sys.byteorder:
-      flags = flags | NOTSWAPPED
-    if not readonly:
-      flags = flags | WRITEABLE
-    self._setupInterface(data, flags)
-    self._pyarray = pyarray
-    return
-
-
-  def __dealloc__(self):
-    """Destructor."""
-    return
-    
-
-  property __array_struct__:
-    """Generic array structure property compatible with NumPy, Numeric,
-    and numarray."""
-    def __get__(self):
-      if hasattr(self._pyarray, '__array_struct__'):
-        return self._pyarray.__array_struct__
-      else:
-        Py_INCREF(self)
-        obj = PyCObject_FromVoidPtrAndDesc(<void*> self._interface,
-                                           <void*> self,
-                                           interface_destructor)
-      return obj
-
-
-  def _sizeandtype(self, typestring):
-    """Parse typestring into size and type information."""
-    assert(8 == sizeof(double))
-    assert(4 == sizeof(float))
-    assert(4 == sizeof(int))
-    info = {'f8': {'size': sizeof(double),
-                   'kind': 'f',
-                   'type': "double"},
-            'f4': {'size': sizeof(float),
-                      'kind': 'f',
-                      'type': "float"},
-            'i4': {'size': sizeof(int),
-                   'kind': 'i',
-                   'type': "int"}}
-    if not typestring in info.keys():
-      raise ValueError("Unknown C type '%s' in setting up SimplePyArray." \
-                       % 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$"
-
-# End of file

Copied: cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe.src (from rev 5948, cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe)

Deleted: cs/spatialdata-0.1/trunk/modulesrc/utils/utils.pyxe
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/utils/utils.pyxe	2007-02-01 20:26:35 UTC (rev 5948)
+++ cs/spatialdata-0.1/trunk/modulesrc/utils/utils.pyxe	2007-02-01 21:25:44 UTC (rev 5949)
@@ -1,198 +0,0 @@
-#!/usr/bin/env python
-#
-# ======================================================================
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# {LicenseText}
-#
-# ======================================================================
-
-#header{
-#include "spatialdata/utils/PointsStream.hh"
-#}header
-
-# ----------------------------------------------------------------------
-cdef extern from "Python.h":
-  object PyCObject_FromVoidPtr(void*, void (*destruct)(void*))
-  void* PyCObject_AsVoidPtr(object)
-
-cdef void* ptrFromHandle(obj):
-  """Extract pointer from PyCObject."""
-  return PyCObject_AsVoidPtr(obj.handle)
-
-cdef extern from "stdlib.h":
-    ctypedef unsigned long size_t
-
-# ----------------------------------------------------------------------
-cdef class PointsStream:
-  """
-  Wrapper for C++ PointsStream object.
-  """
-
-  cdef void* thisptr # Pointer to C++ object
-  cdef readonly object handle # PyCObject holding pointer to C++ object
-  cdef readonly object name # Identifier for object base type
-
-  def __init__(self):
-    """
-    Constructor.
-    """
-    # create shim for constructor
-    #embed{ void* PointsStream_constructor()
-      return (void*)(new spatialdata::utils::PointsStream);
-    #}embed
-    self.thisptr = PointsStream_constructor()
-    self.handle = self._createHandle()
-    self.name = "spatialdata_utils_PointsStream"
-    return
-
-  property filename:
-    def __set__(self, filename):
-      """
-      Set name of file.
-      """
-      # create shim for method 'filename'
-      #embed{ void PointsStream_filename_set(void* pObj, char* filename)
-      ((spatialdata::utils::PointsStream*) pObj)->filename(filename);
-      #}embed
-      PointsStream_filename_set(self.thisptr, filename)
-
-    def __get__(self):
-      """
-      Get name of file.
-      """
-      # create shim for method 'filename'
-      #embed{ char* PointsStream_filename_get(void* pObj)
-      return (char*) ((spatialdata::utils::PointsStream*) pObj)->filename();
-      #}embed
-      return PointsStream_filename_get(self.thisptr)
-
-
-  property commentFlag:
-    def __set__(self, flag):
-      """
-      Set flag for comment lines.
-      """
-      # create shim for method 'commentFlag'
-      #embed{ void PointsStream_commentFlag_set(void* pObj, char* flag)
-      ((spatialdata::utils::PointsStream*) pObj)->commentFlag(flag);
-      #}embed
-      PointsStream_commentFlag_set(self.thisptr, flag)
-
-    def __get__(self):
-      """
-      Get flag for comment lines.
-      """
-      # create shim for method 'commentFlag'
-      #embed{ char* PointsStream_commentFlag_get(void* pObj)
-      return (char*) ((spatialdata::utils::PointsStream*) pObj)->commentFlag();
-      #}embed
-      return PointsStream_commentFlag_get(self.thisptr)
-
-
-  property fieldWidth:
-    def __set__(self, width):
-      """
-      Set field width.
-      """
-      # create shim for method 'fieldWidth'
-      #embed{ void PointsStream_fieldWidth_set(void* pObj, int width)
-      ((spatialdata::utils::PointsStream*) pObj)->fieldWidth(width);
-      #}embed
-      PointsStream_fieldWidth_set(self.thisptr, width)
-
-    def __get__(self):
-      """
-      Get field width.
-      """
-      # create shim for method 'fieldWidth'
-      #embed{ int PointsStream_fieldWidth_get(void* pObj)
-      return ((spatialdata::utils::PointsStream*) pObj)->fieldWidth();
-      #}embed
-      return PointsStream_fieldWidth_get(self.thisptr)
-
-
-  property precision:
-    def __set__(self, precision):
-      """
-      Set precision.
-      """
-      # create shim for method 'precision'
-      #embed{ void PointsStream_precision_set(void* pObj, int precision)
-      ((spatialdata::utils::PointsStream*) pObj)->precision(precision);
-      #}embed
-      PointsStream_precision_set(self.thisptr, precision)
-
-    def __get__(self):
-      """
-      Get flag for comment lines.
-      """
-      # create shim for method 'precision'
-      #embed{ int PointsStream_precision_get(void* pObj)
-      return ((spatialdata::utils::PointsStream*) pObj)->precision();
-      #}embed
-      return PointsStream_precision_get(self.thisptr)
-
-
-  def read(self):
-    """
-    Read points from stdin.
-    """
-    # create shim for method 'read'
-    #embed{ void PointsStream_read(void* pObj, double** ppVals, int* pNumPts, int* pNumDims)
-    ((spatialdata::utils::PointsStream*) pObj)->read(ppVals,
-                                                     pNumPts, pNumDims);
-    #}embed
-    cdef double* pVals
-    cdef int numPts
-    cdef int numDims
-    pVals = NULL
-    numPts = 0
-    numDims = 0
-    PointsStream_read(self.thisptr, &pVals, &numPts, &numDims)
-    dims = [numPts, numDims]
-    import spatialdata.utils.simplearray
-    pValsObj = PyCObject_FromVoidPtr(pVals, NULL);
-    return spatialdata.utils.simplearray.SimpleCppArray(pValsObj,
-                                                        dims, "double")
-
-
-  def write(self, points):
-    """
-    Write points to stdout.
-    """
-    # create shim for method 'write'
-    #embed{ void PointsStream_write(void* pObj, double* pVals, int numPts, int numDims)
-    ((spatialdata::utils::PointsStream*) pObj)->write(pVals, numPts, numDims);
-    #}embed
-    
-    import spatialdata.utils.simplearray
-    points = spatialdata.utils.simplearray.objAsSimpleArray(points)
-    if not points.isCompatible(nd=2,
-                               simpletype="double",
-                               contiguous=True,
-                               notswapped=True):
-      raise TypeError, \
-            "Argument 'points' must be a contiguous, 2-D array of type double."
-    
-    (numPts, numDims) = points.shape
-    cdef double* pVals
-    pVals = <double*> PyCObject_AsVoidPtr(points.data)
-    PointsStream_write(self.thisptr, pVals, numPts, numDims)
-    return
-      
-
-  def _createHandle(self):
-    """Wrap pointer to C++ object in PyCObject."""
-    # create shim for destructor
-    #embed{ void PointsStream_destructor(void* pObj)
-    spatialdata::utils::PointsStream* pStream =
-      (spatialdata::utils::PointsStream*) pObj;
-    delete pStream;
-    #}embed
-    return PyCObject_FromVoidPtr(self.thisptr, PointsStream_destructor)
-
-
-# End of file

Copied: cs/spatialdata-0.1/trunk/modulesrc/utils/utils.pyxe.src (from rev 5948, cs/spatialdata-0.1/trunk/modulesrc/utils/utils.pyxe)



More information about the cig-commits mailing list