Loading isis/src/core/swig/isisblob.i +1 −1 Original line number Diff line number Diff line %module(package="isisio") Blob %module(package="isiscore") Blob %{ #include "Blob.h" %} Loading isis/src/core/swig/isisio.ideleted 100644 → 0 +0 −163 Original line number Diff line number Diff line %module isisio %{ #include <QString> #include <array> #include <vector> #include <string> #include <sstream> %} %include "std_vector.i" %include "std_string.i" %include "std_array.i" %include "std_map.i" %include "carrays.i" %include "std_pair.i" %include "exception.i" #include <nlohmann/json.hpp> #include <QVector> #include <QString> %typemap(in) nlohmann::json { if (PyDict_Check($input) || PyList_Check($input)) { PyObject* module = PyImport_ImportModule("json"); PyObject* jsonDumps = PyUnicode_FromString("dumps"); PyObject* pythonJsonString = PyObject_CallMethodObjArgs(module, jsonDumps, $input, NULL); $1 = nlohmann::json::parse(PyUnicode_AsUTF8(pythonJsonString)); } else { PyErr_SetString(PyExc_TypeError, "not a json serializable type"); SWIG_fail; } } %typemap(typecheck, precedence=SWIG_TYPECHECK_MAP) nlohmann::json { $1 = PyDict_Check($input) ? 1 : 0; } %typemap(out) nlohmann::json { PyObject* module = PyImport_ImportModule("json"); PyObject* jsonLoads = PyUnicode_FromString("loads"); std::string jsonString = ($1).dump(); PyObject* pythonJsonString = PyUnicode_DecodeUTF8(jsonString.c_str(), jsonString.size(), NULL); $result = PyObject_CallMethodObjArgs(module, jsonLoads, pythonJsonString, NULL); } %typemap(in) QVector<QString> & { int i; if (!PySequence_Check($input)) { PyErr_SetString(PyExc_ValueError,"Expected a List"); SWIG_fail; } int size = PySequence_Length($input); $1 = new QVector<QString>(size); for (i = 0; i < size; i++) { PyObject *o = PySequence_GetItem($input,i); if (PyUnicode_Check(o)) { QString s = QString::fromUtf8(PyUnicode_AsUTF8(o)); (*$1)[i] = s; } else { PyErr_SetString(PyExc_ValueError,"Sequence elements must be string"); SWIG_fail; } } } %typemap(out) QVector<QString> & { $result = PyList_New($1_dim0); for (i = 0; i < $1_dim0; i++) { PyObject *o = PyString_AsString($1->at(i)); PyList_SetItem($result,i,o); } } %typemap(in) QString const & { if (!PyUnicode_Check($input)) { PyErr_SetString(PyExc_ValueError,"Expected a String"); SWIG_fail; } $1 = new QString(QString::fromUtf8(PyUnicode_AsUTF8($input))); } %typemap(out) QString const & { $result = Py_BuildValue("s#", $1.toStdString().c_str(), $1.size()); } %typemap(in) QString { if (!PyUnicode_Check($input)) { std::cout << "TANGERINE" << std::endl; PyErr_SetString(PyExc_ValueError,"Expected a String"); SWIG_fail; } $1 = QString::fromUtf8(PyUnicode_AsUTF8($input)); } %typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) QString { $1 = !PyUnicode_Check($input); std::cout << PyUnicode_AsUTF8($input) << std::endl; } %typemap(out) QString = QString const &; %typemap(in) QVector<QString> { int i; if (!PySequence_Check($input)) { PyErr_SetString(PyExc_ValueError,"Expected a List"); SWIG_fail; } int size = PySequence_Length($input); $1 = new QVector<QString>(size); for (i = 0; i < size; i++) { PyObject *o = PySequence_GetItem($input,i); if (PyUnicode_Check(o)) { QString s = QString::fromUtf8(PyUnicode_AsUTF8(o)); (*$1)[i] = s; } else { PyErr_SetString(PyExc_ValueError,"Sequence elements must be string"); SWIG_fail; } } } %typemap(out) QVector<QString> = QVector<QString> &; namespace std { %template(IntVector) vector<int>; %template(DoubleVector) vector<double>; %template(VectorDoubleVector) vector< vector<double> >; %template(StringVector) vector<string>; %template(ConstCharVector) vector<const char*>; %template(PairDoubleVector) vector<pair<double, double>>; %template(DoubleArray6) array<double, 6>; } %exception { try { $action } catch (std::exception const& e) { SWIG_exception(SWIG_RuntimeError, (std::string("std::exception: ") + e.what()).c_str()); } catch (...) { SWIG_exception(SWIG_UnknownError, "Unknown error"); } } %include "pvlKeyword.i" %include "PvlContainer.h" %include "pvlGroup.i" %include "pvlObject.i" %nodefaultdtor Isis::PvlObject; // %include "UserInterface.i" %include "isisblob.i" %include "isispvl.i" isis/src/core/swig/pvlKeyword.i +1 −1 Original line number Diff line number Diff line %module(package="isisio") PvlKeyword %module(package="isiscore") PvlKeyword %{ #include "PvlKeyword.h" %} Loading isis/src/core/swig/python/CMakeLists.txt +9 −9 Original line number Diff line number Diff line Loading @@ -3,8 +3,8 @@ include(FindPythonAnaconda.cmake) include_directories(${PYTHON_INCLUDE_DIR}) set(CMAKE_SWIG_FLAGS "") set(CMAKE_SWIG_OUTDIR isisio) set_source_files_properties(../isisio.i set(CMAKE_SWIG_OUTDIR isiscore) set_source_files_properties(../isiscore.i PROPERTIES CPLUSPLUS ON SWIG_FLAGS "-py3") #Find dependencies Loading @@ -15,20 +15,20 @@ message("-- Found Include: ${INCLUDE_DIR}") include_directories(${INCLUDE_DIR}) # Add and link swig_add_library(isisio swig_add_library(isiscore LANGUAGE python SOURCES ../isisio.i) SOURCES ../isiscore.i) set_target_properties(_isisio PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SWIG_OUTDIR}) set_target_properties(_isiscore PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SWIG_OUTDIR}) SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") if (APPLE) set_target_properties(_isisio PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") set_target_properties(_isiscore PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") # On OSX, do not link python - this causes segfaults swig_link_libraries(isisio core) swig_link_libraries(isiscore core) else() swig_link_libraries(isisio core ${PYTHON_LIBRARY}) swig_link_libraries(isiscore core ${PYTHON_LIBRARY}) endif() # Build out a standard directory structure Loading @@ -38,7 +38,7 @@ endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in ${CMAKE_CURRENT_BINARY_DIR}/setup.py) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/__init__.py ${CMAKE_CURRENT_BINARY_DIR}/isisio/__init__.py ${CMAKE_CURRENT_BINARY_DIR}/isiscore/__init__.py COPYONLY) ## Move the tests Loading isis/src/core/swig/python/setup.py.in +4 −4 Original line number Diff line number Diff line Loading @@ -2,10 +2,10 @@ import setuptools if __name__ == '__main__': setuptools.setup( name='isisio', version='0.0.1', packages=['isisio'], package_data={'':['_isisio.so']}, name='isiscore', version='1.0.0', packages=['isiscore'], package_data={'':['_isiscore.so']}, zip_safe=False, # Some OSes can not dynamically load an so from an egg (zipfile) license='UnLicense', author='arsanders/acpaquette', Loading Loading
isis/src/core/swig/isisblob.i +1 −1 Original line number Diff line number Diff line %module(package="isisio") Blob %module(package="isiscore") Blob %{ #include "Blob.h" %} Loading
isis/src/core/swig/isisio.ideleted 100644 → 0 +0 −163 Original line number Diff line number Diff line %module isisio %{ #include <QString> #include <array> #include <vector> #include <string> #include <sstream> %} %include "std_vector.i" %include "std_string.i" %include "std_array.i" %include "std_map.i" %include "carrays.i" %include "std_pair.i" %include "exception.i" #include <nlohmann/json.hpp> #include <QVector> #include <QString> %typemap(in) nlohmann::json { if (PyDict_Check($input) || PyList_Check($input)) { PyObject* module = PyImport_ImportModule("json"); PyObject* jsonDumps = PyUnicode_FromString("dumps"); PyObject* pythonJsonString = PyObject_CallMethodObjArgs(module, jsonDumps, $input, NULL); $1 = nlohmann::json::parse(PyUnicode_AsUTF8(pythonJsonString)); } else { PyErr_SetString(PyExc_TypeError, "not a json serializable type"); SWIG_fail; } } %typemap(typecheck, precedence=SWIG_TYPECHECK_MAP) nlohmann::json { $1 = PyDict_Check($input) ? 1 : 0; } %typemap(out) nlohmann::json { PyObject* module = PyImport_ImportModule("json"); PyObject* jsonLoads = PyUnicode_FromString("loads"); std::string jsonString = ($1).dump(); PyObject* pythonJsonString = PyUnicode_DecodeUTF8(jsonString.c_str(), jsonString.size(), NULL); $result = PyObject_CallMethodObjArgs(module, jsonLoads, pythonJsonString, NULL); } %typemap(in) QVector<QString> & { int i; if (!PySequence_Check($input)) { PyErr_SetString(PyExc_ValueError,"Expected a List"); SWIG_fail; } int size = PySequence_Length($input); $1 = new QVector<QString>(size); for (i = 0; i < size; i++) { PyObject *o = PySequence_GetItem($input,i); if (PyUnicode_Check(o)) { QString s = QString::fromUtf8(PyUnicode_AsUTF8(o)); (*$1)[i] = s; } else { PyErr_SetString(PyExc_ValueError,"Sequence elements must be string"); SWIG_fail; } } } %typemap(out) QVector<QString> & { $result = PyList_New($1_dim0); for (i = 0; i < $1_dim0; i++) { PyObject *o = PyString_AsString($1->at(i)); PyList_SetItem($result,i,o); } } %typemap(in) QString const & { if (!PyUnicode_Check($input)) { PyErr_SetString(PyExc_ValueError,"Expected a String"); SWIG_fail; } $1 = new QString(QString::fromUtf8(PyUnicode_AsUTF8($input))); } %typemap(out) QString const & { $result = Py_BuildValue("s#", $1.toStdString().c_str(), $1.size()); } %typemap(in) QString { if (!PyUnicode_Check($input)) { std::cout << "TANGERINE" << std::endl; PyErr_SetString(PyExc_ValueError,"Expected a String"); SWIG_fail; } $1 = QString::fromUtf8(PyUnicode_AsUTF8($input)); } %typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) QString { $1 = !PyUnicode_Check($input); std::cout << PyUnicode_AsUTF8($input) << std::endl; } %typemap(out) QString = QString const &; %typemap(in) QVector<QString> { int i; if (!PySequence_Check($input)) { PyErr_SetString(PyExc_ValueError,"Expected a List"); SWIG_fail; } int size = PySequence_Length($input); $1 = new QVector<QString>(size); for (i = 0; i < size; i++) { PyObject *o = PySequence_GetItem($input,i); if (PyUnicode_Check(o)) { QString s = QString::fromUtf8(PyUnicode_AsUTF8(o)); (*$1)[i] = s; } else { PyErr_SetString(PyExc_ValueError,"Sequence elements must be string"); SWIG_fail; } } } %typemap(out) QVector<QString> = QVector<QString> &; namespace std { %template(IntVector) vector<int>; %template(DoubleVector) vector<double>; %template(VectorDoubleVector) vector< vector<double> >; %template(StringVector) vector<string>; %template(ConstCharVector) vector<const char*>; %template(PairDoubleVector) vector<pair<double, double>>; %template(DoubleArray6) array<double, 6>; } %exception { try { $action } catch (std::exception const& e) { SWIG_exception(SWIG_RuntimeError, (std::string("std::exception: ") + e.what()).c_str()); } catch (...) { SWIG_exception(SWIG_UnknownError, "Unknown error"); } } %include "pvlKeyword.i" %include "PvlContainer.h" %include "pvlGroup.i" %include "pvlObject.i" %nodefaultdtor Isis::PvlObject; // %include "UserInterface.i" %include "isisblob.i" %include "isispvl.i"
isis/src/core/swig/pvlKeyword.i +1 −1 Original line number Diff line number Diff line %module(package="isisio") PvlKeyword %module(package="isiscore") PvlKeyword %{ #include "PvlKeyword.h" %} Loading
isis/src/core/swig/python/CMakeLists.txt +9 −9 Original line number Diff line number Diff line Loading @@ -3,8 +3,8 @@ include(FindPythonAnaconda.cmake) include_directories(${PYTHON_INCLUDE_DIR}) set(CMAKE_SWIG_FLAGS "") set(CMAKE_SWIG_OUTDIR isisio) set_source_files_properties(../isisio.i set(CMAKE_SWIG_OUTDIR isiscore) set_source_files_properties(../isiscore.i PROPERTIES CPLUSPLUS ON SWIG_FLAGS "-py3") #Find dependencies Loading @@ -15,20 +15,20 @@ message("-- Found Include: ${INCLUDE_DIR}") include_directories(${INCLUDE_DIR}) # Add and link swig_add_library(isisio swig_add_library(isiscore LANGUAGE python SOURCES ../isisio.i) SOURCES ../isiscore.i) set_target_properties(_isisio PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SWIG_OUTDIR}) set_target_properties(_isiscore PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SWIG_OUTDIR}) SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") if (APPLE) set_target_properties(_isisio PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") set_target_properties(_isiscore PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") # On OSX, do not link python - this causes segfaults swig_link_libraries(isisio core) swig_link_libraries(isiscore core) else() swig_link_libraries(isisio core ${PYTHON_LIBRARY}) swig_link_libraries(isiscore core ${PYTHON_LIBRARY}) endif() # Build out a standard directory structure Loading @@ -38,7 +38,7 @@ endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in ${CMAKE_CURRENT_BINARY_DIR}/setup.py) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/__init__.py ${CMAKE_CURRENT_BINARY_DIR}/isisio/__init__.py ${CMAKE_CURRENT_BINARY_DIR}/isiscore/__init__.py COPYONLY) ## Move the tests Loading
isis/src/core/swig/python/setup.py.in +4 −4 Original line number Diff line number Diff line Loading @@ -2,10 +2,10 @@ import setuptools if __name__ == '__main__': setuptools.setup( name='isisio', version='0.0.1', packages=['isisio'], package_data={'':['_isisio.so']}, name='isiscore', version='1.0.0', packages=['isiscore'], package_data={'':['_isiscore.so']}, zip_safe=False, # Some OSes can not dynamically load an so from an egg (zipfile) license='UnLicense', author='arsanders/acpaquette', Loading