Skip to content
Snippets Groups Projects
Commit a6818e27 authored by acpaquette's avatar acpaquette
Browse files

Changed mention of isisio to isiscore

parent 0e7a6a0a
No related branches found
No related tags found
No related merge requests found
%module(package="isisio") Blob %module(package="isiscore") Blob
%{ %{
#include "Blob.h" #include "Blob.h"
%} %}
......
%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"
%module(package="isisio") PvlKeyword %module(package="isiscore") PvlKeyword
%{ %{
#include "PvlKeyword.h" #include "PvlKeyword.h"
%} %}
......
...@@ -3,8 +3,8 @@ include(FindPythonAnaconda.cmake) ...@@ -3,8 +3,8 @@ include(FindPythonAnaconda.cmake)
include_directories(${PYTHON_INCLUDE_DIR}) include_directories(${PYTHON_INCLUDE_DIR})
set(CMAKE_SWIG_FLAGS "") set(CMAKE_SWIG_FLAGS "")
set(CMAKE_SWIG_OUTDIR isisio) set(CMAKE_SWIG_OUTDIR isiscore)
set_source_files_properties(../isisio.i set_source_files_properties(../isiscore.i
PROPERTIES CPLUSPLUS ON SWIG_FLAGS "-py3") PROPERTIES CPLUSPLUS ON SWIG_FLAGS "-py3")
#Find dependencies #Find dependencies
...@@ -15,20 +15,20 @@ message("-- Found Include: ${INCLUDE_DIR}") ...@@ -15,20 +15,20 @@ message("-- Found Include: ${INCLUDE_DIR}")
include_directories(${INCLUDE_DIR}) include_directories(${INCLUDE_DIR})
# Add and link # Add and link
swig_add_library(isisio swig_add_library(isiscore
LANGUAGE python 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") SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
if (APPLE) 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 # On OSX, do not link python - this causes segfaults
swig_link_libraries(isisio core) swig_link_libraries(isiscore core)
else() else()
swig_link_libraries(isisio core ${PYTHON_LIBRARY}) swig_link_libraries(isiscore core ${PYTHON_LIBRARY})
endif() endif()
# Build out a standard directory structure # Build out a standard directory structure
...@@ -38,7 +38,7 @@ endif() ...@@ -38,7 +38,7 @@ endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in configure_file(${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in
${CMAKE_CURRENT_BINARY_DIR}/setup.py) ${CMAKE_CURRENT_BINARY_DIR}/setup.py)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/__init__.py configure_file(${CMAKE_CURRENT_SOURCE_DIR}/__init__.py
${CMAKE_CURRENT_BINARY_DIR}/isisio/__init__.py ${CMAKE_CURRENT_BINARY_DIR}/isiscore/__init__.py
COPYONLY) COPYONLY)
## Move the tests ## Move the tests
......
...@@ -2,10 +2,10 @@ import setuptools ...@@ -2,10 +2,10 @@ import setuptools
if __name__ == '__main__': if __name__ == '__main__':
setuptools.setup( setuptools.setup(
name='isisio', name='isiscore',
version='0.0.1', version='1.0.0',
packages=['isisio'], packages=['isiscore'],
package_data={'':['_isisio.so']}, package_data={'':['_isiscore.so']},
zip_safe=False, # Some OSes can not dynamically load an so from an egg (zipfile) zip_safe=False, # Some OSes can not dynamically load an so from an egg (zipfile)
license='UnLicense', license='UnLicense',
author='arsanders/acpaquette', author='arsanders/acpaquette',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment