[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