diff options
Diffstat (limited to 'py/modules/IcePy/Util.cpp')
-rw-r--r-- | py/modules/IcePy/Util.cpp | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/py/modules/IcePy/Util.cpp b/py/modules/IcePy/Util.cpp index ee5d4660970..6330f1ee95b 100644 --- a/py/modules/IcePy/Util.cpp +++ b/py/modules/IcePy/Util.cpp @@ -310,20 +310,19 @@ IcePy::listToStringSeq(PyObject* l, Ice::StringSeq& seq) { assert(PyList_Check(l)); - int sz = PyList_Size(l); + int sz = PyList_GET_SIZE(l); for(int i = 0; i < sz; ++i) { - PyObject* item = PyList_GetItem(l, i); - if(item == NULL) - { - return false; - } - char* str = PyString_AsString(item); - if(str == NULL) - { - return false; - } - seq.push_back(str); + PyObject* item = PyList_GET_ITEM(l, i); + if(item == NULL) + { + return false; + } + if(!PyString_Check(item)) + { + return false; + } + seq.push_back(string(PyString_AS_STRING(item), PyString_GET_SIZE(item))); } return true; @@ -355,6 +354,29 @@ IcePy::stringSeqToList(const Ice::StringSeq& seq, PyObject* l) } bool +IcePy::tupleToStringSeq(PyObject* t, Ice::StringSeq& seq) +{ + assert(PyTuple_Check(t)); + + int sz = PyTuple_GET_SIZE(t); + for(int i = 0; i < sz; ++i) + { + PyObject* item = PyTuple_GET_ITEM(t, i); + if(item == NULL) + { + return false; + } + if(!PyString_Check(item)) + { + return false; + } + seq.push_back(string(PyString_AS_STRING(item), PyString_GET_SIZE(item))); + } + + return true; +} + +bool IcePy::dictionaryToContext(PyObject* dict, Ice::Context& context) { assert(PyDict_Check(dict)); |