Loading isis/src/core/src/FileName.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ find files of those names at the top level of this repository. **/ #include <QTemporaryFile> #include "Preference.h" #include "PvlGroup.h" #include "IException.h" #include "IString.h" Loading Loading @@ -843,6 +844,10 @@ namespace Isis { int varSearchStartPos = 0; int varStartPos = -1; if(Preference::Preferences().hasGroup("DataDirectory")) { PvlGroup &testing = Preference::Preferences().findGroup("DataDirectory"); cout << testing << endl; } // Loop while there are any "$" at the current position or after // Some "$" might be skipped if no translation can be found while((varStartPos = expandedStr.indexOf("$", varSearchStartPos)) != -1) { Loading Loading @@ -886,6 +891,7 @@ namespace Isis { } } } cout << expandedStr << endl; if (variableValid) { // We could expand multiple times... Loading isis/src/core/swig/isisblob.i +38 −38 Original line number Diff line number Diff line %module isisblob %module(package="isisio") Blob %{ #include "Blob.h" %} Loading @@ -6,40 +6,40 @@ %include "Blob.h" %nodefaultdtor Isis::Blob; %extend Isis::Blob { Blob(const char* name, const char* type) { QString qname(name); QString qtype(type); Isis::Blob *blob = new Isis::Blob(qname, qtype); return blob; } Blob(const char* name, const char* type, const char* file) { QString qname(name); QString qtype(type); QString qfile(file); Isis::Blob *blob = new Isis::Blob(qname, qtype, file); return blob; } void Write(const char *file) { QString qfile(file); $self->Write(file); } char * getStringBuffer() { int bufferSize = $self->Size(); char * buffer = $self->getBuffer(); std::ostringstream os; for (int i = 0; i < bufferSize; i++) os << buffer[i]; os << '\0'; std::string str = os.str(); char * cstr = new char [str.length()+1]; std::strcpy (cstr, str.c_str()); return cstr; } } // %extend Isis::Blob { // Blob(const char* name, const char* type) { // QString qname(name); // QString qtype(type); // Isis::Blob *blob = new Isis::Blob(qname, qtype); // return blob; // } // Blob(const char* name, const char* type, const char* file) { // QString qname(name); // QString qtype(type); // QString qfile(file); // Isis::Blob *blob = new Isis::Blob(qname, qtype, file); // return blob; // } // void Write(const char *file) { // QString qfile(file); // $self->Write(file); // } // char * getStringBuffer() { // int bufferSize = $self->Size(); // char * buffer = $self->getBuffer(); // std::ostringstream os; // for (int i = 0; i < bufferSize; i++) os << buffer[i]; // os << '\0'; // std::string str = os.str(); // char * cstr = new char [str.length()+1]; // std::strcpy (cstr, str.c_str()); // return cstr; // } // } isis/src/core/swig/isisio.i +147 −29 Original line number Diff line number Diff line %module isisio %{ #include <QString> #include <array> #include <vector> #include <string> #include <sstream> %} %include std_string.i %include std_vector.i %include exception.i %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 "pvlKeyword.i" %include "PvlContainer.h" %include "pvlGroup.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; } } } %include "pvlObject.i" %nodefaultdtor Isis::PvlObject; class QString { public: static QString fromStdString(const std::string &s); std::string toStdString() const; QString(const char* str); ~QString(); %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))); } int size() const; int count() const; int length() const; bool isEmpty() const; }; %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 { Loading @@ -41,5 +153,11 @@ public: } } %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/isispvl.i +0 −32 Original line number Diff line number Diff line Loading @@ -5,35 +5,3 @@ %include "Pvl.h" %nodefaultdtor Isis::Pvl; %extend Isis::Pvl { const char* __str__() { std::ostringstream out; out << *$self; std::string str = out.str(); char * cstr = new char [str.length()+1]; std::strcpy (cstr, str.c_str()); return cstr; } Pvl(const char* file) { QString qfile(file); Isis::Pvl *pvl = new Isis::Pvl(qfile); return pvl; } void readString(const char *pvlString) { std::istringstream in(pvlString); in >> *$self; } void read(const char* file) { QString qfile(file); $self->read(qfile); } void write(const char* file) { QString qfile(file); $self->write(qfile); } } isis/src/core/swig/pvlGroup.i +0 −17 Original line number Diff line number Diff line Loading @@ -4,20 +4,3 @@ %} %include "PvlGroup.h" %extend Isis::PvlGroup { const char* __str__() { std::ostringstream out; out << *$self; std::string str = out.str(); char * cstr = new char [str.length()+1]; std::strcpy (cstr, str.c_str()); return cstr; } PvlGroup(const char* groupName) { QString qgroupName(groupName); Isis::PvlGroup *group = new Isis::PvlGroup(qgroupName); return group; } } Loading
isis/src/core/src/FileName.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ find files of those names at the top level of this repository. **/ #include <QTemporaryFile> #include "Preference.h" #include "PvlGroup.h" #include "IException.h" #include "IString.h" Loading Loading @@ -843,6 +844,10 @@ namespace Isis { int varSearchStartPos = 0; int varStartPos = -1; if(Preference::Preferences().hasGroup("DataDirectory")) { PvlGroup &testing = Preference::Preferences().findGroup("DataDirectory"); cout << testing << endl; } // Loop while there are any "$" at the current position or after // Some "$" might be skipped if no translation can be found while((varStartPos = expandedStr.indexOf("$", varSearchStartPos)) != -1) { Loading Loading @@ -886,6 +891,7 @@ namespace Isis { } } } cout << expandedStr << endl; if (variableValid) { // We could expand multiple times... Loading
isis/src/core/swig/isisblob.i +38 −38 Original line number Diff line number Diff line %module isisblob %module(package="isisio") Blob %{ #include "Blob.h" %} Loading @@ -6,40 +6,40 @@ %include "Blob.h" %nodefaultdtor Isis::Blob; %extend Isis::Blob { Blob(const char* name, const char* type) { QString qname(name); QString qtype(type); Isis::Blob *blob = new Isis::Blob(qname, qtype); return blob; } Blob(const char* name, const char* type, const char* file) { QString qname(name); QString qtype(type); QString qfile(file); Isis::Blob *blob = new Isis::Blob(qname, qtype, file); return blob; } void Write(const char *file) { QString qfile(file); $self->Write(file); } char * getStringBuffer() { int bufferSize = $self->Size(); char * buffer = $self->getBuffer(); std::ostringstream os; for (int i = 0; i < bufferSize; i++) os << buffer[i]; os << '\0'; std::string str = os.str(); char * cstr = new char [str.length()+1]; std::strcpy (cstr, str.c_str()); return cstr; } } // %extend Isis::Blob { // Blob(const char* name, const char* type) { // QString qname(name); // QString qtype(type); // Isis::Blob *blob = new Isis::Blob(qname, qtype); // return blob; // } // Blob(const char* name, const char* type, const char* file) { // QString qname(name); // QString qtype(type); // QString qfile(file); // Isis::Blob *blob = new Isis::Blob(qname, qtype, file); // return blob; // } // void Write(const char *file) { // QString qfile(file); // $self->Write(file); // } // char * getStringBuffer() { // int bufferSize = $self->Size(); // char * buffer = $self->getBuffer(); // std::ostringstream os; // for (int i = 0; i < bufferSize; i++) os << buffer[i]; // os << '\0'; // std::string str = os.str(); // char * cstr = new char [str.length()+1]; // std::strcpy (cstr, str.c_str()); // return cstr; // } // }
isis/src/core/swig/isisio.i +147 −29 Original line number Diff line number Diff line %module isisio %{ #include <QString> #include <array> #include <vector> #include <string> #include <sstream> %} %include std_string.i %include std_vector.i %include exception.i %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 "pvlKeyword.i" %include "PvlContainer.h" %include "pvlGroup.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; } } } %include "pvlObject.i" %nodefaultdtor Isis::PvlObject; class QString { public: static QString fromStdString(const std::string &s); std::string toStdString() const; QString(const char* str); ~QString(); %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))); } int size() const; int count() const; int length() const; bool isEmpty() const; }; %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 { Loading @@ -41,5 +153,11 @@ public: } } %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/isispvl.i +0 −32 Original line number Diff line number Diff line Loading @@ -5,35 +5,3 @@ %include "Pvl.h" %nodefaultdtor Isis::Pvl; %extend Isis::Pvl { const char* __str__() { std::ostringstream out; out << *$self; std::string str = out.str(); char * cstr = new char [str.length()+1]; std::strcpy (cstr, str.c_str()); return cstr; } Pvl(const char* file) { QString qfile(file); Isis::Pvl *pvl = new Isis::Pvl(qfile); return pvl; } void readString(const char *pvlString) { std::istringstream in(pvlString); in >> *$self; } void read(const char* file) { QString qfile(file); $self->read(qfile); } void write(const char* file) { QString qfile(file); $self->write(qfile); } }
isis/src/core/swig/pvlGroup.i +0 −17 Original line number Diff line number Diff line Loading @@ -4,20 +4,3 @@ %} %include "PvlGroup.h" %extend Isis::PvlGroup { const char* __str__() { std::ostringstream out; out << *$self; std::string str = out.str(); char * cstr = new char [str.length()+1]; std::strcpy (cstr, str.c_str()); return cstr; } PvlGroup(const char* groupName) { QString qgroupName(groupName); Isis::PvlGroup *group = new Isis::PvlGroup(qgroupName); return group; } }