[cig-commits] r12967 - cs/cigma/trunk/pysrc

luis at geodynamics.org luis at geodynamics.org
Wed Sep 24 06:57:34 PDT 2008


Author: luis
Date: 2008-09-24 06:57:33 -0700 (Wed, 24 Sep 2008)
New Revision: 12967

Added:
   cs/cigma/trunk/pysrc/Py_Exception.cpp
Modified:
   cs/cigma/trunk/pysrc/_cigma_module.cpp
   cs/cigma/trunk/pysrc/setup.py
Log:
Translate cigma C++ exceptions into a proper python exception

Added: cs/cigma/trunk/pysrc/Py_Exception.cpp
===================================================================
--- cs/cigma/trunk/pysrc/Py_Exception.cpp	                        (rev 0)
+++ cs/cigma/trunk/pysrc/Py_Exception.cpp	2008-09-24 13:57:33 UTC (rev 12967)
@@ -0,0 +1,16 @@
+#include "Exception.cpp"
+#include <boost/python.hpp>
+
+using namespace boost::python;
+
+void translator(const cigma::Exception &x)
+{
+    std::string err = x.getName() + ": " + x.getMessage();
+    PyErr_SetString(PyExc_UserWarning, err.c_str());
+}
+
+void export_Exception()
+{
+    register_exception_translator<cigma::Exception>(translator);
+}
+

Modified: cs/cigma/trunk/pysrc/_cigma_module.cpp
===================================================================
--- cs/cigma/trunk/pysrc/_cigma_module.cpp	2008-09-24 13:22:08 UTC (rev 12966)
+++ cs/cigma/trunk/pysrc/_cigma_module.cpp	2008-09-24 13:57:33 UTC (rev 12967)
@@ -1,12 +1,14 @@
 #include <boost/python.hpp>
 #include <boost/cstdint.hpp>
 
+extern void export_Exception();
 extern void export_DataPath();
 
 using namespace boost::python;
 
 BOOST_PYTHON_MODULE(_cigma)
 {
+    export_Exception();
     export_DataPath();
 }
 

Modified: cs/cigma/trunk/pysrc/setup.py
===================================================================
--- cs/cigma/trunk/pysrc/setup.py	2008-09-24 13:22:08 UTC (rev 12966)
+++ cs/cigma/trunk/pysrc/setup.py	2008-09-24 13:57:33 UTC (rev 12967)
@@ -9,7 +9,7 @@
 #libs = os.environ["PYLIBS"].split()
 libs = ['boost_filesystem', 'boost_python']
 
-sources = ['_cigma_module.cpp', 'Py_DataPath.cpp']
+sources = ['_cigma_module.cpp', 'Py_Exception.cpp', 'Py_DataPath.cpp']
 
 setup(name          = "_cigma",
       version       = "1.0",



More information about the cig-commits mailing list