summaryrefslogtreecommitdiffstats
path: root/superkaramba/src
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2023-12-22 23:09:03 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2023-12-24 00:24:04 +0900
commitc960bd6f8f63fa13dec80e43d2df18a70e47bfe3 (patch)
tree939c3bf4904c1bcfaf899de78434600a52e299ea /superkaramba/src
parentd4393c1136b5fda7936d7506e3b9e3e6ac8e5897 (diff)
downloadtdeutils-c960bd6f8f63fa13dec80e43d2df18a70e47bfe3.tar.gz
tdeutils-c960bd6f8f63fa13dec80e43d2df18a70e47bfe3.zip
superkaramba: add support for python 3.12. This resolves issue #71
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it> (cherry picked from commit 426c384d7f2d555974828609b467e5d42f6c2bf3)
Diffstat (limited to 'superkaramba/src')
-rw-r--r--superkaramba/src/meter_python.cpp37
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("");