diff options
author | Michele Calgaro <[email protected]> | 2023-12-22 23:09:03 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2023-12-22 23:13:43 +0900 |
commit | 426c384d7f2d555974828609b467e5d42f6c2bf3 (patch) | |
tree | dca88857d4542fb21b6ee408636c01a6578c429e | |
parent | 83b7abfb88bb8d138bab0ab1c9f3e2d3afa418c2 (diff) | |
download | tdeutils-426c384d7f2d555974828609b467e5d42f6c2bf3.tar.gz tdeutils-426c384d7f2d555974828609b467e5d42f6c2bf3.zip |
superkaramba: add support for python 3.12. This resolves issue #71
Signed-off-by: Michele Calgaro <[email protected]>
-rw-r--r-- | superkaramba/src/meter_python.cpp | 37 |
1 files changed, 8 insertions, 29 deletions
diff --git a/superkaramba/src/meter_python.cpp b/superkaramba/src/meter_python.cpp index c5d745b..d3f2293 100644 --- a/superkaramba/src/meter_python.cpp +++ b/superkaramba/src/meter_python.cpp @@ -100,11 +100,13 @@ TQString PyString2TQString(PyObject* text) } else if (PyUnicode_CheckExact(text)) { - Py_UNICODE* t = PyUnicode_AsUnicode(text); - if(sizeof(Py_UNICODE) == 4) - qtext = fromUcs4((TQ_UINT32*)t); - else - qtext = TQString::fromUcs2((TQ_UINT16*)t); + int uniSize = PyUnicode_KIND(text); + if (uniSize == PyUnicode_4BYTE_KIND) + qtext = fromUcs4((TQ_UINT32*)PyUnicode_4BYTE_DATA(text)); + else if (uniSize == PyUnicode_2BYTE_KIND) + qtext = TQString::fromUcs2((TQ_UINT16*)PyUnicode_2BYTE_DATA(text)); + else if (uniSize == PyUnicode_1BYTE_KIND) + qtext.setAscii((char*)PyUnicode_1BYTE_DATA(text)); } else { @@ -119,34 +121,11 @@ PyObject* TQString2PyString(TQString string) PyObject *pyString; const unsigned short* tmp = string.ucs2(); - bool dofree = false; if(tmp) { - #if Py_UNICODE_SIZE == 4 - - Py_UNICODE* buf = new Py_UNICODE[string.length()]; - - for(unsigned int i = 0; i < string.length(); i++) - { - buf[i] = tmp[i]; - } - dofree = true; - - #else - - Py_UNICODE* buf = (Py_UNICODE*) tmp; - - #endif - - pyString = PyUnicode_FromUnicode(buf, string.length()); - - if(dofree) - { - delete [] buf; - } + pyString = PyUnicode_FromKindAndData(PyUnicode_2BYTE_KIND, tmp, string.length()); } - else pyString = PyBytes_FromString(""); |