"vscode:/vscode.git/clone" did not exist on "92a05388b8e3805b32ecfe7821959e6d8e8cbe4e"
Commit 2dee12e6 authored by peastman's avatar peastman
Browse files

Merge pull request #1138 from rmcgibbo/typemap-vecvec

Typemaps
parents 4c696473 0c453714
...@@ -156,7 +156,7 @@ int Py_SequenceToVecDouble(PyObject* obj, std::vector<double>& out) { ...@@ -156,7 +156,7 @@ int Py_SequenceToVecDouble(PyObject* obj, std::vector<double>& out) {
Py_DECREF(iterator); Py_DECREF(iterator);
Py_DECREF(stripped); Py_DECREF(stripped);
return SWIG_OK; return SWIG_OK;
} }
} }
%fragment("Py_SequenceToVecVec3", "header", fragment="Py_SequenceToVec3") { %fragment("Py_SequenceToVecVec3", "header", fragment="Py_SequenceToVec3") {
...@@ -202,6 +202,86 @@ int Py_SequenceToVecVec3(PyObject* obj, std::vector<Vec3>& out) { ...@@ -202,6 +202,86 @@ int Py_SequenceToVecVec3(PyObject* obj, std::vector<Vec3>& out) {
} }
} }
%fragment("Py_SequenceToVecVecDouble", "header", fragment="Py_SequenceToVecDouble") {
int Py_SequenceToVecVecDouble(PyObject* obj, std::vector<std::vector<double> >& out) {
PyObject* stripped = NULL;
PyObject* item = NULL;
PyObject* item1 = NULL;
PyObject* iterator = NULL;
stripped = Py_StripOpenMMUnits(obj);
iterator = PyObject_GetIter(stripped);
if (iterator == NULL) {
Py_DECREF(stripped);
return SWIG_ERROR;
}
while ((item = PyIter_Next(iterator))) {
item1 = Py_StripOpenMMUnits(item);
if (item1 == NULL) {
Py_DECREF(stripped);
Py_DECREF(iterator);
Py_DECREF(item);
return SWIG_ERROR;
}
std::vector<double> v;
int r2 = Py_SequenceToVecDouble(item1, v);
Py_DECREF(item);
Py_DECREF(item1);
if (!SWIG_IsOK(r2) || PyErr_Occurred() != NULL) {
Py_DECREF(stripped);
Py_DECREF(iterator);
return SWIG_ERROR;
}
out.push_back(v);
}
Py_DECREF(iterator);
Py_DECREF(stripped);
return SWIG_OK;
}
}
%fragment("Py_SequenceToVecVecVecDouble", "header", fragment="Py_SequenceToVecVecDouble") {
int Py_SequenceToVecVecVecDouble(PyObject* obj, std::vector<std::vector<std::vector<double> > >& out) {
PyObject* stripped = NULL;
PyObject* item = NULL;
PyObject* item1 = NULL;
PyObject* iterator = NULL;
stripped = Py_StripOpenMMUnits(obj);
iterator = PyObject_GetIter(stripped);
if (iterator == NULL) {
Py_DECREF(stripped);
return SWIG_ERROR;
}
while ((item = PyIter_Next(iterator))) {
item1 = Py_StripOpenMMUnits(item);
if (item1 == NULL) {
Py_DECREF(stripped);
Py_DECREF(iterator);
Py_DECREF(item);
return SWIG_ERROR;
}
std::vector<std::vector<double> >v;
int r2 = Py_SequenceToVecVecDouble(item1, v);
Py_DECREF(item);
Py_DECREF(item1);
if (!SWIG_IsOK(r2) || PyErr_Occurred() != NULL) {
Py_DECREF(stripped);
Py_DECREF(iterator);
return SWIG_ERROR;
}
out.push_back(v);
}
Py_DECREF(iterator);
Py_DECREF(stripped);
return SWIG_OK;
}
}
// ------ typemap for double ---- // ------ typemap for double ----
%typemap(typecheck, precedence=SWIG_TYPECHECK_DOUBLE, fragment="Py_StripOpenMMUnits") double { %typemap(typecheck, precedence=SWIG_TYPECHECK_DOUBLE, fragment="Py_StripOpenMMUnits") double {
...@@ -259,6 +339,37 @@ int Py_SequenceToVecVec3(PyObject* obj, std::vector<Vec3>& out) { ...@@ -259,6 +339,37 @@ int Py_SequenceToVecVec3(PyObject* obj, std::vector<Vec3>& out) {
} }
// typemap for const vector<vector<double> >
%typemap(in, fragment="Py_SequenceToVecVecDouble") const std::vector<std::vector<double> >(std::vector<std::vector<double> > v, int res=0) {
res = Py_SequenceToVecVecDouble($input, v);
if (!SWIG_IsOK(res)) {
PyErr_SetString(PyExc_ValueError, "in method $symname, argument $argnum could not be converted to type $type");
SWIG_fail;
}
$1 = &v;
}
%typemap(typecheck, fragment="Py_SequenceToVecVecDouble") const std::vector<std::vector<double> > {
std::vector<std::vector<double> > v;
int res = Py_SequenceToVecVecDouble($input, v);
$1 = SWIG_IsOK(res);
}
// typemap for const vector<vector<vector<double> > >
%typemap(in, fragment="Py_SequenceToVecVecVecDouble") const std::vector<std::vector<std::vector<double> > >(std::vector<std::vector<std::vector<double> > > v, int res=0) {
res = Py_SequenceToVecVecVecDouble($input, v);
if (!SWIG_IsOK(res)) {
PyErr_SetString(PyExc_ValueError, "in method $symname, argument $argnum could not be converted to type $type");
SWIG_fail;
}
$1 = &v;
}
%typemap(typecheck, fragment="Py_SequenceToVecVecVecDouble") const std::vector<std::vector<std::vector<double> > >{
std::vector<std::vector<std::vector<double> > > v;
int res = Py_SequenceToVecVecVecDouble($input, v);
$1 = SWIG_IsOK(res);
}
// typemap for vector<Vec3> // typemap for vector<Vec3>
%typemap(in, fragment="Py_SequenceToVecVec3") const std::vector<Vec3>& (std::vector<Vec3> v, int res=0) { %typemap(in, fragment="Py_SequenceToVecVec3") const std::vector<Vec3>& (std::vector<Vec3> v, int res=0) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment