[cig-commits] r6172 - in cs/spatialdata-0.1/trunk/modulesrc:
geocoords spatialdb utils
brad at geodynamics.org
brad at geodynamics.org
Sun Mar 4 15:30:30 PST 2007
Author: brad
Date: 2007-03-04 15:30:29 -0800 (Sun, 04 Mar 2007)
New Revision: 6172
Modified:
cs/spatialdata-0.1/trunk/modulesrc/geocoords/geocoords.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
Log:
Added catching of C++ exceptions in modules.
Modified: cs/spatialdata-0.1/trunk/modulesrc/geocoords/geocoords.pyxe.src
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/geocoords/geocoords.pyxe.src 2007-03-03 05:29:19 UTC (rev 6171)
+++ cs/spatialdata-0.1/trunk/modulesrc/geocoords/geocoords.pyxe.src 2007-03-04 23:30:29 UTC (rev 6172)
@@ -18,6 +18,9 @@
#include "spatialdata/geocoords/CSGeoProj.hh"
#include "spatialdata/geocoords/Projector.hh"
#include "spatialdata/geocoords/Converter.hh"
+
+#include <stdexcept>
+#include <Python.h>
#}header
# ----------------------------------------------------------------------
@@ -53,7 +56,15 @@
"""Initialize the coordinate system."""
# create shim for method 'initialize'
#embed{ void CoordSys_initialize(void* pObj)
- ((spatialdata::geocoords::CoordSys*) pObj)->initialize();
+ try {
+ ((spatialdata::geocoords::CoordSys*) pObj)->initialize();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
CoordSys_initialize(self.thisptr)
@@ -76,7 +87,15 @@
"""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);
+ try {
+ ((spatialdata::geocoords::CoordSys*) pObj)->setSpaceDim(ndims);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
CoordSys_spaceDim_set(self.thisptr, ndims)
@@ -84,7 +103,17 @@
"""Get number of dimensions for coordinates."""
# create shim for method 'spaceDim'
#embed{ int CoordSys_spaceDim_get(void* pObj)
- return ((spatialdata::geocoords::CoordSys*) pObj)->spaceDim();
+ int dim = 0;
+ try {
+ dim = ((spatialdata::geocoords::CoordSys*) pObj)->spaceDim();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return dim;
#}embed
return CoordSys_spaceDim_get(self.thisptr)
@@ -110,7 +139,15 @@
"""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);
+ try {
+ ((spatialdata::geocoords::CSCart*) pObj)->toMeters(scale);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
CSCart_toMeters_set(self.thisptr, scale)
@@ -118,7 +155,17 @@
"""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();
+ double value = 0;
+ try {
+ value = ((spatialdata::geocoords::CSCart*) pObj)->toMeters();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return value;
#}embed
return CSCart_toMeters_get(self.thisptr)
@@ -144,7 +191,15 @@
"""Set reference ellipsoid."""
# create shim for method 'ellipsoid'
#embed{ void CSGeo_ellipsoid_set(void* pObj, char* name)
+ try {
((spatialdata::geocoords::CSGeo*) pObj)->ellipsoid(name);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
CSGeo_ellipsoid_set(self.thisptr, name)
@@ -152,7 +207,17 @@
"""Fet reference ellipsoid."""
# create shim for method 'ellipsoid'
#embed{ char* CSGeo_ellipsoid_get(void* pObj)
- return (char*) ((spatialdata::geocoords::CSGeo*) pObj)->ellipsoid();
+ char* name = 0;
+ try {
+ name = (char*) ((spatialdata::geocoords::CSGeo*) pObj)->ellipsoid();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return name;
#}embed
return CSGeo_ellipsoid_get(self.thisptr)
@@ -162,7 +227,15 @@
"""Set horizontal datum."""
# create shim for method 'datumHoriz'
#embed{ void CSGeo_datumHoriz_set(void* pObj, char* name)
- ((spatialdata::geocoords::CSGeo*) pObj)->datumHoriz(name);
+ try {
+ ((spatialdata::geocoords::CSGeo*) pObj)->datumHoriz(name);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
CSGeo_datumHoriz_set(self.thisptr, name)
@@ -170,7 +243,17 @@
"""Get horizontal datum."""
# create shim for method 'datumHoriz'
#embed{ char* CSGeo_datumHoriz_get(void* pObj)
- return (char*) ((spatialdata::geocoords::CSGeo*) pObj)->datumHoriz();
+ char* name = 0;
+ try {
+ name = (char*) ((spatialdata::geocoords::CSGeo*) pObj)->datumHoriz();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return name;
#}embed
return CSGeo_datumHoriz_get(self.thisptr)
@@ -180,7 +263,15 @@
"""Set vertical datum."""
# create shim for method 'datumVert'
#embed{ void CSGeo_datumVert_set(void* pObj, char* name)
+ try {
((spatialdata::geocoords::CSGeo*) pObj)->datumVert(name);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
CSGeo_datumVert_set(self.thisptr, name)
@@ -188,7 +279,17 @@
"""Get vertical datum."""
# create shim for method 'datumVert'
#embed{ char* CSGeo_datumVert_get(void* pObj)
- return (char*) ((spatialdata::geocoords::CSGeo*) pObj)->datumVert();
+ char* name = 0;
+ try {
+ name = (char*) ((spatialdata::geocoords::CSGeo*) pObj)->datumVert();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return name;
#}embed
return CSGeo_datumVert_get(self.thisptr)
@@ -198,7 +299,15 @@
"""Set geocentric flag."""
# create shim for method 'isGeocentric'
#embed{ void CSGeo_isGeocentric_set(void* pObj, int flag)
+ try {
((spatialdata::geocoords::CSGeo*) pObj)->isGeocentric(flag);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
CSGeo_isGeocentric_set(self.thisptr, flag)
@@ -206,7 +315,17 @@
"""Get geocentric flag."""
# create shim for method 'isGeocentric'
#embed{ int CSGeo_isGeocentric_get(void* pObj)
- return ((spatialdata::geocoords::CSGeo*) pObj)->isGeocentric();
+ int value = 0;
+ try {
+ value = ((spatialdata::geocoords::CSGeo*) pObj)->isGeocentric();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return value;
#}embed
return CSGeo_isGeocentric_get(self.thisptr)
@@ -216,7 +335,15 @@
"""Set factor to convert Cartesian coordinates to meters."""
# create shim for method 'toMeters'
#embed{ void CSGeo_toMeters_set(void* pObj, double scale)
+ try {
((spatialdata::geocoords::CSGeo*) pObj)->toMeters(scale);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
CSGeo_toMeters_set(self.thisptr, scale)
@@ -224,7 +351,17 @@
"""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();
+ double value = 0.0;
+ try {
+ value = ((spatialdata::geocoords::CSGeo*) pObj)->toMeters();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return value;
#}embed
return CSGeo_toMeters_get(self.thisptr)
@@ -249,7 +386,15 @@
"""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);
+ try {
+ ((spatialdata::geocoords::CSGeoLocalCart*) pObj)->origin(lon, lat, elev);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
CSGeoLocalCart_origin(self.thisptr, lon, lat, elev)
@@ -258,7 +403,15 @@
"""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);
+ try {
+ ((spatialdata::geocoords::CSGeoLocalCart*) pObj)->origin(pLon, pLat, pElev);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
cdef double lon, lat, elev
CSGeoLocalCart_getOrigin(self.thisptr, &lon, &lat, &elev)
@@ -286,9 +439,17 @@
"""Set projector."""
# create shim for method 'projector'
#embed{ void CSGeoProj_projector(void* pObj, void* pProjObj)
- const spatialdata::geocoords::Projector* pProj =
+ try {
+ const spatialdata::geocoords::Projector* pProj =
(spatialdata::geocoords::Projector*) pProjObj;
((spatialdata::geocoords::CSGeoProj*) pObj)->projector(*pProj);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
if not proj.name == "spatialdata_geocoords_Projector":
raise TypeError, \
@@ -321,7 +482,15 @@
"""Set projection."""
# create shim for method 'projection'
#embed{ void Projector_projection_set(void* pObj, char* name)
- ((spatialdata::geocoords::Projector*) pObj)->projection(name);
+ try {
+ ((spatialdata::geocoords::Projector*) pObj)->projection(name);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
Projector_projection_set(self.thisptr, name)
@@ -329,7 +498,17 @@
"""Get projection."""
# create shim for method 'projection'
#embed{ char* Projector_projection_get(void* pObj)
- return (char*) ((spatialdata::geocoords::Projector*) pObj)->projection();
+ char* name = 0;
+ try {
+ name = (char*) ((spatialdata::geocoords::Projector*) pObj)->projection();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return name;
#}embed
return Projector_projection_get(self.thisptr)
@@ -339,7 +518,15 @@
"""Set units of projection."""
# create shim for method 'units'
#embed{ void Projector_units_set(void* pObj, char* name)
- ((spatialdata::geocoords::Projector*) pObj)->units(name);
+ try {
+ ((spatialdata::geocoords::Projector*) pObj)->units(name);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
Projector_units_set(self.thisptr, name)
@@ -347,7 +534,17 @@
"""Get units of projection."""
# create shim for method 'units'
#embed{ char* Projector_units_get(void* pObj)
- return (char*) ((spatialdata::geocoords::Projector*) pObj)->units();
+ char* name = 0;
+ try {
+ name = (char*) ((spatialdata::geocoords::Projector*) pObj)->units();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return name;
#}embed
return Projector_units_get(self.thisptr)
@@ -356,7 +553,15 @@
"""Set proj.4 options for projector."""
# create shim for method 'projOptions'
#embed{ void Projector_projOptions_set(void* pObj, char* options)
+ try {
((spatialdata::geocoords::Projector*) pObj)->projOptions(options);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
Projector_projOptions_set(self.thisptr, options)
@@ -364,7 +569,17 @@
"""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();
+ char* name = 0;
+ try {
+ name = (char*) ((spatialdata::geocoords::Projector*) pObj)->projOptions();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return name;
#}embed
return Projector_projOptions_get(self.thisptr)
@@ -373,11 +588,19 @@
"""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);
+ try {
+ 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);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
if not csGeo.name == "spatialdata_geocoords_CoordSys":
@@ -392,7 +615,15 @@
"""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);
+ try {
+ ((spatialdata::geocoords::Projector*) pObj)->project(pX, pY, lon, lat);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
cdef double x
@@ -411,7 +642,15 @@
"""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);
+ try {
+ ((spatialdata::geocoords::Projector*) pObj)->invproject(pLon, pLat, x, y);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
cdef double lon
@@ -440,12 +679,20 @@
# ----------------------------------------------------------------------
# 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);
+try {
+ 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);
+} catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+} catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+} // try/catch
#}embed
def Converter_convert(coordsSrc, csDest, csSrc):
Modified: cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src 2007-03-03 05:29:19 UTC (rev 6171)
+++ cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src 2007-03-04 23:30:29 UTC (rev 6172)
@@ -18,6 +18,9 @@
#include "spatialdata/spatialdb/SimpleDBTypes.hh"
#include "spatialdata/geocoords/CoordSys.hh"
+
+#include <stdexcept>
+#include <Python.h>
#}header
# ----------------------------------------------------------------------
@@ -64,7 +67,15 @@
"""
# create shim for method 'label'
#embed{ void SpatialDB_label_set(void* pObj, char* name)
- ((spatialdata::spatialdb::SpatialDB*) pObj)->label(name);
+ try {
+ ((spatialdata::spatialdb::SpatialDB*) pObj)->label(name);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
SpatialDB_label_set(self.thisptr, name)
@@ -75,7 +86,17 @@
"""
# create shim for method 'label'
#embed{ char* SpatialDB_label_get(void* pObj)
- return (char*) ((spatialdata::spatialdb::SpatialDB*) pObj)->label();
+ char* label = 0;
+ try {
+ label = (char*) ((spatialdata::spatialdb::SpatialDB*) pObj)->label();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return label;
#}embed
return SpatialDB_label_get(self.thisptr)
@@ -87,7 +108,15 @@
"""
# create shim for method 'open'
#embed{ void SpatialDB_open(void* pObj)
- ((spatialdata::spatialdb::SpatialDB*) pObj)->open();
+ try {
+ ((spatialdata::spatialdb::SpatialDB*) pObj)->open();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
SpatialDB_open(self.thisptr)
@@ -100,7 +129,15 @@
"""
# create shim for method 'close'
#embed{ void SpatialDB_close(void* pObj)
- ((spatialdata::spatialdb::SpatialDB*) pObj)->close();
+ try {
+ ((spatialdata::spatialdb::SpatialDB*) pObj)->close();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
SpatialDB_close(self.thisptr)
@@ -113,7 +150,15 @@
"""
# create shim for method 'queryVals'
#embed{ void SpatialDB_queryVals(void* pObj, char** names, int numVals)
- ((spatialdata::spatialdb::SpatialDB*) pObj)->queryVals((const char**) names, numVals);
+ try {
+ ((spatialdata::spatialdb::SpatialDB*) pObj)->queryVals((const char**) names, numVals);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
cdef char** pNames
@@ -143,11 +188,21 @@
"""
# create shim for method 'query'
#embed{ int SpatialDB_query(void* pObj, double* vals, int nvals, double* coords, int spaceDim, void* csObj)
- spatialdata::geocoords::CoordSys* pCS =
- (spatialdata::geocoords::CoordSys*) csObj;
- return ((spatialdata::spatialdb::SpatialDB*) pObj)->query(vals, nvals,
- coords, spaceDim,
- pCS);
+ int err = 0;
+ try {
+ spatialdata::geocoords::CoordSys* pCS =
+ (spatialdata::geocoords::CoordSys*) csObj;
+ err = ((spatialdata::spatialdb::SpatialDB*) pObj)->query(vals, nvals,
+ coords, spaceDim,
+ pCS);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return err;
#}embed
import spatialdata.utils.simplearray
@@ -412,75 +467,4 @@
return
- def writeNew(self, namesObj, unitsObj, dataObj, spaceDim, dataDim, cs):
- """
- Write database to file.
- """
- # create shim for method 'write'
- #embed{ void SimpleIOAscii_writeNew(void* pObj, char** names, char** units, double* data, int numLocs, int spaceDim, int numValues, int dataDim, void* pCSObj)
- spatialdata::spatialdb::SimpleDB::DataStruct* pData =
- new spatialdata::spatialdb::SimpleDB::DataStruct;
- pData->data = data;
-
-
- spatialdata::geocoords::CoordSys* pCS =
- (spatialdata::geocoords::CoordSys*) pCSObj;
- ((spatialdata::spatialdb::SimpleIOAscii*) pObj)->write(*pData, pCS);
- delete pData; pData = 0;
- #}embed
-
-
- import spatialdata.utils.simplearray
- data = spatialdata.utils.simplearray.objAsSimpleArray(dataObj)
- if not dataA.isCompatible(nd=2,
- simpletype="double",
- contiguous=True,
- notswapped=True):
- raise TypeError, \
- "Argument 'dataObj' must be a contiguous, 2-D array of type double."
- numValues = len(names)
- if not (numValues == len(units)):
- raise ValueError, \
- "Arguments 'names' and 'values' must have the same length."
- (numLocs, totalDim) = data.shape
- if totalDim != numValues + spaceDim:
- raise ValueError, \
- "'dataObj' not compatible with number of values and spaceDim."
- if not cs.name == "spatialdata_geocoords_CoordSys":
- raise TypeError, \
- "Argument 'cs' must be extension module type 'CoordSys'."
-
- cdef double* dataArray
- dataArray = <double*> PyCObject_AsVoidPtr(data.data)
-
- cdef char** namesArray
- cdef char** unitsArray
- namesArray = NULL
- unitsArray = NULL
- if numValues > 0:
- namesArray = <char**> malloc(numValues*sizeof(char))
- unitsArray = <char**> malloc(numValues*sizeof(char))
- for i from 0 <= i < numValues:
- strsize = len(names[i])
- namesArray[i] = <char*> malloc(1+strsize*sizeof(char))
- tmp = names[i] # KLUDGE??
- strcpy(namesArray[i], tmp)
-
- strsize = len(units[i])
- unitsArray[i] = <char*> malloc(1+strsize*sizeof(char))
- tmp = units[i] # KLUDGE??
- strcpy(unitsArray[i], tmp)
-
- SimpleIOAscii_writeNew(self.thisptr,
- namesArray, unitsArray, dataArray,
- numLocs, spaceDim, numValues, dataDim,
- ptrFromHandle(cs))
- for i from 0 <= i < numValues:
- free(<void*> namesArray[i])
- free(<void*> unitsArray[i])
- free(<void*> namesArray)
- free(<void*> unitsArray)
- return
-
-
# End of file
Modified: cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe.src
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe.src 2007-03-03 05:29:19 UTC (rev 6171)
+++ cs/spatialdata-0.1/trunk/modulesrc/utils/simplearray.pyxe.src 2007-03-04 23:30:29 UTC (rev 6172)
@@ -122,7 +122,7 @@
if not nd == self.nd:
if _debuglevel > 0:
print "Expected nd '%d' but have nd '%d'." % \
- (nd, self.nd)
+ (nd, self.nd)
return False
if not simpletype is None:
if not simpletype == self._typeinfo['type']:
Modified: cs/spatialdata-0.1/trunk/modulesrc/utils/utils.pyxe.src
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/utils/utils.pyxe.src 2007-03-03 05:29:19 UTC (rev 6171)
+++ cs/spatialdata-0.1/trunk/modulesrc/utils/utils.pyxe.src 2007-03-04 23:30:29 UTC (rev 6172)
@@ -11,6 +11,9 @@
#header{
#include "spatialdata/utils/PointsStream.hh"
+
+#include <stdexcept>
+#include <Python.h>
#}header
# ----------------------------------------------------------------------
@@ -55,7 +58,15 @@
"""
# create shim for method 'filename'
#embed{ void PointsStream_filename_set(void* pObj, char* filename)
- ((spatialdata::utils::PointsStream*) pObj)->filename(filename);
+ try {
+ ((spatialdata::utils::PointsStream*) pObj)->filename(filename);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
PointsStream_filename_set(self.thisptr, filename)
@@ -65,7 +76,17 @@
"""
# create shim for method 'filename'
#embed{ char* PointsStream_filename_get(void* pObj)
- return (char*) ((spatialdata::utils::PointsStream*) pObj)->filename();
+ char* name = 0;
+ try {
+ name = (char*) ((spatialdata::utils::PointsStream*) pObj)->filename();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return name;
#}embed
return PointsStream_filename_get(self.thisptr)
@@ -77,7 +98,15 @@
"""
# create shim for method 'commentFlag'
#embed{ void PointsStream_commentFlag_set(void* pObj, char* flag)
- ((spatialdata::utils::PointsStream*) pObj)->commentFlag(flag);
+ try {
+ ((spatialdata::utils::PointsStream*) pObj)->commentFlag(flag);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
PointsStream_commentFlag_set(self.thisptr, flag)
@@ -87,7 +116,17 @@
"""
# create shim for method 'commentFlag'
#embed{ char* PointsStream_commentFlag_get(void* pObj)
- return (char*) ((spatialdata::utils::PointsStream*) pObj)->commentFlag();
+ char* name = 0;
+ try {
+ name = (char*) ((spatialdata::utils::PointsStream*) pObj)->commentFlag();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return name;
#}embed
return PointsStream_commentFlag_get(self.thisptr)
@@ -99,7 +138,15 @@
"""
# create shim for method 'fieldWidth'
#embed{ void PointsStream_fieldWidth_set(void* pObj, int width)
- ((spatialdata::utils::PointsStream*) pObj)->fieldWidth(width);
+ try {
+ ((spatialdata::utils::PointsStream*) pObj)->fieldWidth(width);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
PointsStream_fieldWidth_set(self.thisptr, width)
@@ -109,7 +156,16 @@
"""
# create shim for method 'fieldWidth'
#embed{ int PointsStream_fieldWidth_get(void* pObj)
- return ((spatialdata::utils::PointsStream*) pObj)->fieldWidth();
+ int width = 0;
+ try {
+ width = ((spatialdata::utils::PointsStream*) pObj)->fieldWidth();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
return PointsStream_fieldWidth_get(self.thisptr)
@@ -121,7 +177,15 @@
"""
# create shim for method 'precision'
#embed{ void PointsStream_precision_set(void* pObj, int precision)
- ((spatialdata::utils::PointsStream*) pObj)->precision(precision);
+ try {
+ ((spatialdata::utils::PointsStream*) pObj)->precision(precision);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
PointsStream_precision_set(self.thisptr, precision)
@@ -131,7 +195,17 @@
"""
# create shim for method 'precision'
#embed{ int PointsStream_precision_get(void* pObj)
- return ((spatialdata::utils::PointsStream*) pObj)->precision();
+ int precision = 0;
+ try {
+ precision = ((spatialdata::utils::PointsStream*) pObj)->precision();
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ return precision;
#}embed
return PointsStream_precision_get(self.thisptr)
@@ -142,8 +216,16 @@
"""
# 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);
+ try {
+ ((spatialdata::utils::PointsStream*) pObj)->read(ppVals,
+ pNumPts, pNumDims);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
cdef double* pVals
cdef int numPts
@@ -165,7 +247,15 @@
"""
# 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);
+ try {
+ ((spatialdata::utils::PointsStream*) pObj)->write(pVals, numPts, numDims);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
#}embed
import spatialdata.utils.simplearray
More information about the cig-commits
mailing list