[ismrmrd] 116/281: more work on Python and Java bindings

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Wed Jan 14 20:01:04 UTC 2015


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to annotated tag ismrmrd0.5
in repository ismrmrd.

commit 838e2956aa96024f1ae4e18184815c98f540fbd9
Author: Joseph Naegele <joseph.naegele at gmail.com>
Date:   Wed Mar 27 19:37:29 2013 -0400

    more work on Python and Java bindings
---
 .gitignore                     |  3 +-
 bindings/CMakeLists.txt        |  3 +-
 bindings/ismrmrd.i             | 84 ++++++++++++++++++++++++++++++++++++++++++
 bindings/java/CMakeLists.txt   | 16 ++++++++
 bindings/python/CMakeLists.txt | 15 ++++----
 bindings/python/ismrmrd.i      | 37 -------------------
 6 files changed, 111 insertions(+), 47 deletions(-)

diff --git a/.gitignore b/.gitignore
index 57c427a..333be89 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 *~
+*swp
 build/
-.DS_Store
\ No newline at end of file
+.DS_Store
diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt
index 8ff8ecd..d139d51 100644
--- a/bindings/CMakeLists.txt
+++ b/bindings/CMakeLists.txt
@@ -1,2 +1,3 @@
+set(ISMRMRD_SWIG_INTERFACE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/ismrmrd.i)
 add_subdirectory(python)
-#add_subdirectory(java)
+add_subdirectory(java)
diff --git a/bindings/ismrmrd.i b/bindings/ismrmrd.i
new file mode 100644
index 0000000..25d6ecc
--- /dev/null
+++ b/bindings/ismrmrd.i
@@ -0,0 +1,84 @@
+%module ismrmrd
+
+%{
+
+#include "ismrmrd_hdf5.h"
+
+%}
+
+%include "stdint.i"
+%include "std_string.i"
+%include "std_vector.i"
+
+#ifdef SWIGPYTHON
+%extend ISMRMRD::Acquisition {
+    PyObject* getData()
+    {
+        PyObject *list = PyList_New(0);
+
+        std::valarray<float> data = $self->getData();
+
+        int i;
+        for (i = 0; i < data.size(); i++) {
+            PyObject *o = PyFloat_FromDouble((double)data[i]);
+            PyList_Append(list, o);
+            Py_DECREF(o);
+        }
+        return list;
+    }
+
+}
+#endif
+
+#ifdef SWIGJAVA
+%extend ISMRMRD::Acquisition {
+    std::vector<float> getData()
+    {
+        std::vector<float> datavec($self->getData().size());
+        memcpy(&(datavec[0]), &($self->getData()[0]), sizeof(float) * $self->getData().size());
+        return datavec;
+    }
+}
+#endif
+
+%ignore ISMRMRD::Acquisition::getData;
+
+/* ISMRMRD::IsmrmrdDataset */
+%newobject ISMRMRD::readAcquisition;
+
+%extend ISMRMRD::IsmrmrdDataset {
+    std::string readHeader() {
+        boost::shared_ptr<std::string> hdr = $self->readHeader();
+        return *(hdr.get()); 
+    }
+
+    ISMRMRD::Acquisition* readAcquisition(unsigned long index = 0) {
+        ISMRMRD::Acquisition* acq = new ISMRMRD::Acquisition(*$self->readAcquisition(index).get());
+        return acq;
+    }
+
+}
+
+%ignore ISMRMRD::IsmrmrdDataset::readAcquisition;
+%ignore ISMRMRD::IsmrmrdDataset::readHeader;
+
+
+%include "ismrmrd.h"
+
+%define EXPORTISMRMRD %enddef
+
+namespace H5 {
+    
+}
+
+%include "ismrmrd_hdf5.h"
+%include "ismrmrd_hdf5_datatypes.h"
+
+namespace ISMRMRD {
+    %template(Image_ushort) Image<unsigned short int>;
+    %template(Image_float)  Image<float>;
+    %template(Image_double)  Image<double>;
+    %template(Image_cplx_float)  Image< std::complex<float> >;
+    %template(Image_cplx_double)  Image< std::complex<double> >;
+}
+
diff --git a/bindings/java/CMakeLists.txt b/bindings/java/CMakeLists.txt
new file mode 100644
index 0000000..cc23793
--- /dev/null
+++ b/bindings/java/CMakeLists.txt
@@ -0,0 +1,16 @@
+find_package(SWIG REQUIRED)
+include(${SWIG_USE_FILE})
+
+find_package(Java REQUIRED)
+
+message(STATUS "Java include dirs: ${JAVA_INCLUDE_DIRS}")
+
+include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(${JAVA_INCLUDE_DIRS})
+include_directories(${HDF5_INCLUDE_DIR} ${HDF5_INCLUDE_DIR}/cpp ${Boost_INCLUDE_DIR})
+
+set(CMAKE_SWIG_FLAGS -package ismrmrd)
+set_source_files_properties(../ismrmrd.i PROPERTIES CPLUSPLUS ON)
+
+SWIG_ADD_MODULE(jismrmrd java ../ismrmrd.i ../../ismrmrd_hdf5.cpp)
+SWIG_LINK_LIBRARIES(jismrmrd ${HDF5_LIBRARIES} ${Boost_LIBRARIES} ${JAVA_LIBRARIES})
diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt
index 5a43e2f..c0fe37c 100644
--- a/bindings/python/CMakeLists.txt
+++ b/bindings/python/CMakeLists.txt
@@ -1,14 +1,13 @@
 find_package(SWIG REQUIRED)
 include(${SWIG_USE_FILE})
 
-find_package(PythonLibs)
-include_directories(${PYTHON_INCLUDE_PATH})
+find_package(PythonLibs REQUIRED)
 
 include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(${PYTHON_INCLUDE_PATH})
+include_directories(${HDF5_INCLUDE_DIR} ${HDF5_INCLUDE_DIR}/cpp ${Boost_INCLUDE_DIR})
+
+set_source_files_properties(../ismrmrd.i PROPERTIES CPLUSPLUS ON)
 
-#set(CMAKE_SWIG_FLAGS "-c++")
-set(CMAKE_SWIG_FLAGS "")
-set_source_files_properties(ismrmrd.i PROPERTIES CPLUSPLUS ON)
-#set_source_files_properties(ismrmrd.i PROPERTIES SWIG_FLAGS "-includeall")
-SWIG_ADD_MODULE(ismrmrd python ismrmrd.i)
-SWIG_LINK_LIBRARIES(ismrmrd ${PYTHON_LIBRARIES})
+SWIG_ADD_MODULE(ismrmrd python ../ismrmrd.i ../../ismrmrd_hdf5.cpp)
+SWIG_LINK_LIBRARIES(ismrmrd ${PYTHON_LIBRARIES} ${HDF5_LIBRARIES} ${Boost_LIBRARIES})
diff --git a/bindings/python/ismrmrd.i b/bindings/python/ismrmrd.i
deleted file mode 100644
index 12eb680..0000000
--- a/bindings/python/ismrmrd.i
+++ /dev/null
@@ -1,37 +0,0 @@
-%module ismrmrd
-%{
-#define SWIG_FILE_WITH_INIT
-#include "ismrmrd.h"
-%}
-
-%include "stdint.i"
-
-%extend ISMRMRD::Acquisition {
-    PyObject* getData() {
-        PyObject *list = PyList_New(0);
-
-        std::valarray<float> data = $self->getData();
-
-        int i;
-        for (i = 0; i < data.size(); i++) {
-            PyObject *o = PyFloat_FromDouble((double)data[i]);
-            PyList_Append(list, o);
-            Py_DECREF(o);
-        }
-        return list;
-    }
-
-}
-
-%ignore ISMRMRD::Acquisition::getData;
-
-%include "ismrmrd.h"
-
-namespace ISMRMRD {
-    %template(Image_ushort) Image<unsigned short int>;
-    %template(Image_float)  Image<float>;
-    %template(Image_double)  Image<double>;
-    %template(Image_cplx_float)  Image< std::complex<float> >;
-    %template(Image_cplx_double)  Image< std::complex<double> >;
-}
-

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/ismrmrd.git



More information about the debian-science-commits mailing list