diff --git a/isis/src/core/swig/isisblob.i b/isis/src/core/swig/isisblob.i index cc4b5b84629972a6f6e31ca142e6f5d9ae448786..17f458437915947fc7875e2ab20b0f7c9ca21333 100644 --- a/isis/src/core/swig/isisblob.i +++ b/isis/src/core/swig/isisblob.i @@ -1,4 +1,4 @@ -%module(package="isisio") Blob +%module(package="isiscore") Blob %{ #include "Blob.h" %} diff --git a/isis/src/core/swig/isisio.i b/isis/src/core/swig/isisio.i deleted file mode 100644 index e8585a1ae8ff28e00e812c1c42e864f30854a5b5..0000000000000000000000000000000000000000 --- a/isis/src/core/swig/isisio.i +++ /dev/null @@ -1,163 +0,0 @@ -%module isisio - -%{ - #include - #include - #include - #include - #include -%} - -%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 -#include -#include - -%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 & { - int i; - if (!PySequence_Check($input)) { - PyErr_SetString(PyExc_ValueError,"Expected a List"); - SWIG_fail; - } - - int size = PySequence_Length($input); - $1 = new QVector(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 & { - $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 { - int i; - if (!PySequence_Check($input)) { - PyErr_SetString(PyExc_ValueError,"Expected a List"); - SWIG_fail; - } - - int size = PySequence_Length($input); - $1 = new QVector(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 = QVector &; - -namespace std { - %template(IntVector) vector; - %template(DoubleVector) vector; - %template(VectorDoubleVector) vector< vector >; - %template(StringVector) vector; - %template(ConstCharVector) vector; - %template(PairDoubleVector) vector>; - %template(DoubleArray6) array; -} - -%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" diff --git a/isis/src/core/swig/pvlKeyword.i b/isis/src/core/swig/pvlKeyword.i index 6a7e7498d9a55fa877a81a1dbefcde031b6d1cf5..c6acfdda100b56c2a1d571d619f5a5d8675d063e 100644 --- a/isis/src/core/swig/pvlKeyword.i +++ b/isis/src/core/swig/pvlKeyword.i @@ -1,4 +1,4 @@ -%module(package="isisio") PvlKeyword +%module(package="isiscore") PvlKeyword %{ #include "PvlKeyword.h" %} diff --git a/isis/src/core/swig/python/CMakeLists.txt b/isis/src/core/swig/python/CMakeLists.txt index e0686f05411b0fa6b86e4f094072abf37da19eaf..fd8cdea2cb42581331d7733c3d128b6de5c29b1c 100644 --- a/isis/src/core/swig/python/CMakeLists.txt +++ b/isis/src/core/swig/python/CMakeLists.txt @@ -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 @@ -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 @@ -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 diff --git a/isis/src/core/swig/python/setup.py.in b/isis/src/core/swig/python/setup.py.in index d94c3c6ca26b82467d22e4b5d591877fce6f2d29..250b08ee06a74bb358cfc2fac359575fa602e404 100644 --- a/isis/src/core/swig/python/setup.py.in +++ b/isis/src/core/swig/python/setup.py.in @@ -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',