summaryrefslogtreecommitdiffstats
path: root/dcoppython/shell/marshal_funcs.data
diff options
context:
space:
mode:
Diffstat (limited to 'dcoppython/shell/marshal_funcs.data')
-rw-r--r--dcoppython/shell/marshal_funcs.data130
1 files changed, 49 insertions, 81 deletions
diff --git a/dcoppython/shell/marshal_funcs.data b/dcoppython/shell/marshal_funcs.data
index 6cf4d34f..f8c00050 100644
--- a/dcoppython/shell/marshal_funcs.data
+++ b/dcoppython/shell/marshal_funcs.data
@@ -46,7 +46,7 @@ type: bool
}
%% to_pyobj
{
- return PyInt_FromLong(val ? 1 : 0);
+ return PyLong_FromLong(val ? 1 : 0);
}
%% marshal
{
@@ -69,9 +69,9 @@ type:int
%doc as int i
%% marshal
{
- if (!PyInt_Check(obj)) return false;
+ if (!PyLong_Check(obj)) return false;
if (str) {
- (*str) << (TQ_INT32)PyInt_AsLong(obj);
+ (*str) << (TQ_INT32)PyLong_AsLong(obj);
}
return true;
}
@@ -79,7 +79,7 @@ type:int
{
TQ_INT32 i;
(*str) >> i;
- return PyInt_FromLong( (long)i );
+ return PyLong_FromLong( (long)i );
}
%%
@@ -87,9 +87,9 @@ type:uint
%doc as int i
%% marshal
{
- if (!PyInt_Check(obj)) return false;
+ if (!PyLong_Check(obj)) return false;
if (str) {
- (*str) << (TQ_INT32)PyInt_AsLong(obj);
+ (*str) << (TQ_INT32)PyLong_AsLong(obj);
}
return true;
}
@@ -97,7 +97,7 @@ type:uint
{
TQ_INT32 i;
(*str) >> i;
- return PyInt_FromLong( (long)i );
+ return PyLong_FromLong( (long)i );
}
%%
@@ -124,17 +124,17 @@ type:uchar
%doc as int c
%% marshal
{
- if (PyString_Check(obj) && PyString_Size(obj)==1) {
+ if (PyBytes_Check(obj) && PyBytes_Size(obj)==1) {
if (str) {
- char *c = PyString_AsString(obj);
+ char *c = PyBytes_AS_STRING(obj);
(*str) << (*c);
}
return true;
}
- if (PyInt_Check(obj)) {
+ if (PyLong_Check(obj)) {
if (str) {
- long l = PyInt_AsLong(obj);
+ long l = PyLong_AsLong(obj);
TQ_UINT8 c = (TQ_UINT8)(l & 0xff);
(*str) << c;
}
@@ -147,7 +147,7 @@ type:uchar
{
TQ_UINT8 c;
(*str) >> c;
- return PyString_FromStringAndSize((const char *)(&c),1);
+ return PyBytes_FromStringAndSize((const char *)(&c),1);
}
%%
@@ -155,9 +155,9 @@ type:char
%doc as int c
%% marshal
{
- if (PyInt_Check(obj)) {
+ if (PyLong_Check(obj)) {
if (str) {
- long l = PyInt_AsLong(obj);
+ long l = PyLong_AsLong(obj);
TQ_INT8 c = (TQ_INT8)(l & 0xff);
(*str) << c;
}
@@ -170,7 +170,7 @@ type:char
{
TQ_INT8 c;
(*str) >> c;
- return PyInt_FromLong((long)c);
+ return PyLong_FromLong((long)c);
}
%%
@@ -178,37 +178,29 @@ type:char
type:TQByteArray
%% marshal
{
- PyBufferProcs *pb = obj->ob_type->tp_as_buffer;
-
- if ( pb && pb->bf_getreadbuffer && pb->bf_getsegcount )
+ Py_buffer view;
+ if (PyObject_GetBuffer(obj, &view, PyBUF_WRITABLE|PyBUF_SIMPLE))
{
- // Get the number of buffer segments
- int seg_count = (pb->bf_getsegcount)(obj, 0);
-
- if ( seg_count != 1 )
- // Can't handle more (or less) than 1 buffer segment
- // at the moment
- return false;
-
- // Get buffer size and data
- void *data;
- int size;
-
- if ( (size = (pb->bf_getreadbuffer)(obj, 0, &data)) < 0 )
- return false;
+ return false;
+ }
- if (str) {
- TQByteArray a;
- a.setRawData( (const char*)data, size );
- (*str) << a;
- a.resetRawData( (const char*)data, size );
- }
+ int size = view.len;
+ if (size < 0)
+ {
+ PyBuffer_Release(&view);
+ return false;
+ }
- return true;
+ if (str)
+ {
+ TQByteArray a;
+ a.setRawData((const char*)view.buf, size);
+ (*str) << a;
+ a.resetRawData((const char*)view.buf, size);
}
- else
- // obj does not implement the buffer interface
- return false;
+
+ PyBuffer_Release(&view);
+ return true;
}
%% demarshal
{
@@ -219,25 +211,8 @@ type:TQByteArray
uint size = a.size();
char *data = a.data();
- // Create a new buffer object and copy the data.
- // Don't use PyBuffer_FromMemory() and the likes since
- // that wouldn't give correct allocation and deallocation.
-
- PyObject *buffer_obj = PyBuffer_New( size );
-
- if ( !buffer_obj )
- return NULL;
-
- PyBufferProcs *pb = buffer_obj->ob_type->tp_as_buffer;
-
- void *buffer_data;
-
- (pb->bf_getwritebuffer)( buffer_obj, 0, &buffer_data );
-
- for ( uint i = 0; i < size; i++ )
- ((char*)buffer_data)[i] = data[i];
-
- return buffer_obj;
+ // Demarshal to a writable buffer object
+ return PyBytes_FromStringAndSize(data, size);
}
%%
@@ -245,9 +220,9 @@ type:TQString
%doc as str s
%% marshal
{
- if (!PyString_Check(obj)) return false;
+ if (!PyBytes_Check(obj)) return false;
if (str) {
- TQString s( PyString_AsString(obj) );
+ TQString s = TQString::fromUtf8(PyBytes_AS_STRING(obj));
(*str) << s;
}
return true;
@@ -256,7 +231,7 @@ type:TQString
{
TQString s;
(*str) >> s;
- return PyString_FromString( s.utf8().data() );
+ return PyBytes_FromString( s.utf8().data() );
}
%%
@@ -264,9 +239,9 @@ type:TQCString
%doc as str s
%% marshal
{
- if (!PyString_Check(obj)) return false;
+ if (!PyBytes_Check(obj)) return false;
if (str) {
- TQCString s( PyString_AsString(obj) );
+ TQCString s( PyBytes_AS_STRING(obj) );
(*str) << s;
}
return true;
@@ -275,7 +250,7 @@ type:TQCString
{
TQCString s;
(*str) >> s;
- return PyString_FromString( s.data() );
+ return PyBytes_FromString( s.data() );
}
%%
@@ -473,13 +448,6 @@ type:TQDateTime
return dt;
}
- if (PyInt_Check(obj)) {
- *ok=true;
- TQDateTime dt;
- dt.setTime_t( (uint)PyInt_AsLong(obj) );
- return dt;
- }
-
PyObject *date_tuple, *time_tuple;
if (PyArg_ParseTuple(obj, (char*)"OO", &date_tuple, &time_tuple)) {
TQDateTime dt;
@@ -507,13 +475,13 @@ type:KURL
%% from_pyobj
{
*ok=false;
- if (!PyString_Check(obj)) return KURL();
+ if (!PyBytes_Check(obj)) return KURL();
*ok=true;
- return KURL( TQString(PyString_AsString(obj)) );
+ return KURL( TQString::fromUtf8(PyBytes_AS_STRING(obj)) );
}
%% to_pyobj
{
- return PyString_FromString( val.prettyURL().utf8().data() );
+ return PyBytes_FromString( val.prettyURL().utf8().data() );
}
%% marshal
%defaultcode
@@ -524,14 +492,14 @@ type:KURL
type:DCOPRef
%% from_pyobj
{
- if (PyInstance_Check(obj) &&
+ if (PyType_Check(obj) &&
PyObject_HasAttrString(obj, (char*)"appname") &&
PyObject_HasAttrString(obj, (char*)"name")) {
PyObject *appname = PyObject_GetAttrString(obj, (char*)"appname");
PyObject *name = PyObject_GetAttrString(obj, (char*)"name");
- if (PyString_Check(appname) && PyString_Check(name)) {
- char *c_appname = PyString_AsString(appname);
- char *c_name = PyString_AsString(name);
+ if (PyBytes_Check(appname) && PyBytes_Check(name)) {
+ char *c_appname = PyBytes_AS_STRING(appname);
+ char *c_name = PyBytes_AS_STRING(name);
DCOPRef ref;
ref.setRef(TQCString(c_appname), TQCString(c_name) );
Py_DECREF(appname);