[cig-commits] r13038 - in cs/cigma/trunk: . pysrc
luis at geodynamics.org
luis at geodynamics.org
Wed Oct 15 02:07:25 PDT 2008
Author: luis
Date: 2008-10-15 02:07:25 -0700 (Wed, 15 Oct 2008)
New Revision: 13038
Added:
cs/cigma/trunk/pysrc/Py_Hello.cpp
cs/cigma/trunk/pysrc/Py_Misc.cpp
cs/cigma/trunk/pysrc/Py_NodeCoordinates.cpp
Modified:
cs/cigma/trunk/Makefile.am
cs/cigma/trunk/pysrc/_cigma_module.cpp
cs/cigma/trunk/pysrc/setup.py
Log:
Wrapper for cigma::NodeCoordinates
Other functions were added to the _cigma module in order to
test various aspects of the Boost.Python bindings. Note the
implicit conversions of std::string to a Python string object,
and of numeric::array into a numpy array object.
Modified: cs/cigma/trunk/Makefile.am
===================================================================
--- cs/cigma/trunk/Makefile.am 2008-10-15 09:07:23 UTC (rev 13037)
+++ cs/cigma/trunk/Makefile.am 2008-10-15 09:07:25 UTC (rev 13038)
@@ -3,7 +3,7 @@
###############################################################################
AUTOMAKE_OPTIONS = foreign
-ACLOCAL_AMFLAGS = -I ./m4
+ACLOCAL_AMFLAGS = -I ./m4 -I ./config
# Directories to build
#SUBDIRS = src
@@ -94,6 +94,8 @@
src/Common.h \
src/Numeric.h \
src/Numeric.cpp \
+ src/NodeCoordinates.h \
+ src/NodeCoordinates.cpp \
src/DataPath.h \
src/DataPath.cpp \
src/core_base_op.h \
@@ -178,7 +180,11 @@
_cigma_so_LDADD += libcigma.a
_cigma_so_SOURCES = \
+ pysrc/numpy_util.h \
+ pysrc/numpy_util.cpp \
pysrc/Py_DataPath.cpp \
+ pysrc/Py_NodeCoordinates.cpp \
+ pysrc/Py_Misc.cpp \
pysrc/_cigma_module.cpp
@@ -212,6 +218,8 @@
tests/simple/SimpleTest.cpp \
tests/libcigma/DataPathTest.h \
tests/libcigma/DataPathTest.cpp \
+ tests/libcigma/NodeCoordinatesTest.h \
+ tests/libcigma/NodeCoordinatesTest.cpp \
tests/test_registry.cpp \
tests/main.cpp
Added: cs/cigma/trunk/pysrc/Py_Hello.cpp
===================================================================
--- cs/cigma/trunk/pysrc/Py_Hello.cpp (rev 0)
+++ cs/cigma/trunk/pysrc/Py_Hello.cpp 2008-10-15 09:07:25 UTC (rev 13038)
@@ -0,0 +1,14 @@
+#include <boost/python.hpp>
+
+using namespace boost::python;
+
+std::string hello()
+{
+ return std::string("Hello World!");
+}
+
+void export_Hello()
+{
+ def("hello", hello);
+}
+
Added: cs/cigma/trunk/pysrc/Py_Misc.cpp
===================================================================
--- cs/cigma/trunk/pysrc/Py_Misc.cpp (rev 0)
+++ cs/cigma/trunk/pysrc/Py_Misc.cpp 2008-10-15 09:07:25 UTC (rev 13038)
@@ -0,0 +1,29 @@
+#include "numpy_util.h"
+#include <boost/python.hpp>
+#include "/usr/include/python2.5/numpy/ndarrayobject.h"
+
+using namespace boost::python;
+
+numeric::array new_array()
+{
+ return numeric::array(
+ make_tuple(
+ make_tuple(1,2,3),
+ make_tuple(4,5,6),
+ make_tuple(7,8,9)
+ )
+ );
+}
+
+
+numeric::array new_array2()
+{
+ return numpy_util::makeArray(new_array());
+}
+
+void export_Misc()
+{
+ def("new_array", &new_array);
+ def("new_array2", &new_array2);
+}
+
Added: cs/cigma/trunk/pysrc/Py_NodeCoordinates.cpp
===================================================================
--- cs/cigma/trunk/pysrc/Py_NodeCoordinates.cpp (rev 0)
+++ cs/cigma/trunk/pysrc/Py_NodeCoordinates.cpp 2008-10-15 09:07:25 UTC (rev 13038)
@@ -0,0 +1,41 @@
+#include "NodeCoordinates.h"
+#include <boost/python.hpp>
+#include <boost/python/numeric.hpp>
+#include <boost/python/tuple.hpp>
+
+using namespace cigma;
+using namespace boost::python;
+
+
+/*
+class NodeCoordinatesWrapper : public NodeCoordinates
+{
+public:
+ NodeCoordinatesWrapper(numeric::array &x)
+ {
+ tuple t = x.factory.getshape();
+ int rank = len(t);
+ if (rank == 2)
+ {
+ std::cout << "rank two!\n";
+ }
+ }
+ ~NodeCoordinatesWrapper()
+ {
+ }
+private:
+ numeric::array _data;
+}; */
+
+
+void export_NodeCoordinates()
+{
+ //typedef NodeCoordinatesWrapper X;
+ typedef NodeCoordinates X;
+
+ class_<X,boost::noncopyable>("NodeCoordinates", no_init)
+ .def_readonly("npts", &X::n_points)
+ .def_readonly("ndim", &X::n_dim)
+ .def("getPoint", &X::getPoint)
+ ;
+}
Modified: cs/cigma/trunk/pysrc/_cigma_module.cpp
===================================================================
--- cs/cigma/trunk/pysrc/_cigma_module.cpp 2008-10-15 09:07:23 UTC (rev 13037)
+++ cs/cigma/trunk/pysrc/_cigma_module.cpp 2008-10-15 09:07:25 UTC (rev 13038)
@@ -1,3 +1,5 @@
+#define PY_ARRAY_UNIQUE_SYMBOL PyArrayHandle
+#include "numpy_util.h"
#include <boost/python.hpp>
#include <boost/cstdint.hpp>
@@ -2,3 +4,6 @@
extern void export_Exception();
+extern void export_Hello();
extern void export_DataPath();
+extern void export_NodeCoordinates();
+extern void export_Misc();
@@ -8,7 +13,14 @@
BOOST_PYTHON_MODULE(_cigma)
{
+ import_array();
+ numeric::array::set_module_and_type("numpy", "ndarray");
+
export_Exception();
+
+ export_Hello();
export_DataPath();
+ export_NodeCoordinates();
+ export_Misc();
}
Modified: cs/cigma/trunk/pysrc/setup.py
===================================================================
--- cs/cigma/trunk/pysrc/setup.py 2008-10-15 09:07:23 UTC (rev 13037)
+++ cs/cigma/trunk/pysrc/setup.py 2008-10-15 09:07:25 UTC (rev 13038)
@@ -9,7 +9,15 @@
#libs = os.environ["PYLIBS"].split()
libs = ['boost_filesystem', 'boost_python']
-sources = ['_cigma_module.cpp', 'Py_Exception.cpp', 'Py_DataPath.cpp']
+sources = [
+ '_cigma_module.cpp',
+ 'numpy_util.cpp',
+ 'Py_Exception.cpp',
+ 'Py_Hello.cpp',
+ 'Py_DataPath.cpp',
+ 'Py_NodeCoordinates.cpp',
+ 'Py_Misc.cpp',
+]
setup(name = "_cigma",
version = "1.0",
More information about the cig-commits
mailing list