X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9c4165adfa02a1255219948fb4e5b78d4cbb2dae..c921c2cd3ada7fe34deaf48d70982c2cf5a963df:/wxPython/src/gtk/streams.cpp diff --git a/wxPython/src/gtk/streams.cpp b/wxPython/src/gtk/streams.cpp index 2b33532c04..98d6171524 100644 --- a/wxPython/src/gtk/streams.cpp +++ b/wxPython/src/gtk/streams.cpp @@ -27,19 +27,21 @@ # define SWIGEXPORT(a) __declspec(dllexport) a # else # if defined(__BORLANDC__) -# define SWIGEXPORT(a) a _export +# define SWIGEXPORT(a) a _export # else -# define SWIGEXPORT(a) a +# define SWIGEXPORT(a) a # endif # endif #else -# define SWIGEXPORT(a) a +# define SWIGEXPORT(a) a #endif +#include "Python.h" + #ifdef __cplusplus extern "C" { #endif -#include "Python.h" + extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -57,53 +59,38 @@ extern PyObject *SWIG_newvarlink(void); #include #include -static PyObject* l_output_helper(PyObject* target, PyObject* o) { - PyObject* o2; - if (!target) { - target = o; - } else if (target == Py_None) { - Py_DECREF(Py_None); - target = o; - } else { - if (!PyList_Check(target)) { - o2 = target; - target = PyList_New(0); - PyList_Append(target, o2); - Py_XDECREF(o2); - } - PyList_Append(target,o); - Py_XDECREF(o); - } - return target; -} static PyObject* t_output_helper(PyObject* target, PyObject* o) { PyObject* o2; PyObject* o3; - if (!target) { + if (!target) { target = o; - } else if (target == Py_None) { + } else if (target == Py_None) { Py_DECREF(Py_None); target = o; - } else { + } else { if (!PyTuple_Check(target)) { o2 = target; target = PyTuple_New(1); PyTuple_SetItem(target, 0, o2); } - o3 = PyTuple_New(1); - PyTuple_SetItem(o3, 0, o); + o3 = PyTuple_New(1); + PyTuple_SetItem(o3, 0, o); o2 = target; - target = PySequence_Concat(o2, o3); - Py_DECREF(o2); + target = PySequence_Concat(o2, o3); + Py_DECREF(o2); Py_DECREF(o3); } return target; } -static char* wxStringErrorMsg = "string type is required for parameter"; +#if PYTHON_API_VERSION >= 1009 + static char* wxStringErrorMsg = "String or Unicode type required"; +#else + static char* wxStringErrorMsg = "String type required"; +#endif // C++ // definitions of wxStringPtrList and wxPyInputStream #include @@ -155,14 +142,12 @@ wxString* wxPyInputStream::read(int size) { } // read until EOF - wxPy_BEGIN_ALLOW_THREADS; while (! wxi->Eof()) { wxi->Read(buf, BUFSIZE); //*s += wxString(buf, wxi->LastRead()); s->Append(buf, wxi->LastRead()); } delete buf; - wxPy_END_ALLOW_THREADS; // error check if (wxi->LastError() == wxSTREAM_READ_ERROR) { @@ -179,10 +164,8 @@ wxString* wxPyInputStream::read(int size) { } // read size bytes - wxPy_BEGIN_ALLOW_THREADS; wxi->Read(s->GetWriteBuf(size+1), size); s->UngetWriteBuf(wxi->LastRead()); - wxPy_END_ALLOW_THREADS; // error check if (wxi->LastError() == wxSTREAM_READ_ERROR) { @@ -212,11 +195,9 @@ wxString* wxPyInputStream::readline (int size) { } // read until \n or byte limit reached - wxPy_BEGIN_ALLOW_THREADS; for (i=ch=0; (ch != '\n') && (!wxi->Eof()) && ((size < 0) || (i < size)); i++) { *s += ch = wxi->GetC(); } - wxPy_END_ALLOW_THREADS; // errorcheck if (wxi->LastError() == wxSTREAM_READ_ERROR) { @@ -243,7 +224,6 @@ wxStringPtrList* wxPyInputStream::readlines (int sizehint) { } // read sizehint bytes or until EOF - wxPy_BEGIN_ALLOW_THREADS; int i; for (i=0; (!wxi->Eof()) && ((sizehint < 0) || (i < sizehint));) { wxString* s = readline(); @@ -255,7 +235,6 @@ wxStringPtrList* wxPyInputStream::readlines (int sizehint) { l->Append(s); i = i + s->Length(); } - wxPy_END_ALLOW_THREADS; // error check if (wxi->LastError() == wxSTREAM_READ_ERROR) { @@ -292,7 +271,7 @@ protected: if (bufsize == 0) return 0; - bool doSave = wxPyRestoreThread(); + wxPyBeginBlockThreads(); PyObject* arglist = Py_BuildValue("(i)", bufsize); PyObject* result = PyEval_CallObject(read, arglist); Py_DECREF(arglist); @@ -310,7 +289,7 @@ protected: } else m_lasterror = wxSTREAM_READ_ERROR; - wxPySaveThread(doSave); + wxPyEndBlockThreads(); m_lastcount = o; return o; } @@ -321,17 +300,17 @@ protected: } virtual off_t OnSysSeek(off_t off, wxSeekMode mode){ - bool doSave = wxPyRestoreThread(); + wxPyBeginBlockThreads(); PyObject*arglist = Py_BuildValue("(ii)", off, mode); PyObject*result = PyEval_CallObject(seek, arglist); Py_DECREF(arglist); Py_XDECREF(result); - wxPySaveThread(doSave); + wxPyEndBlockThreads(); return OnSysTell(); } virtual off_t OnSysTell() const{ - bool doSave = wxPyRestoreThread(); + wxPyBeginBlockThreads(); PyObject* arglist = Py_BuildValue("()"); PyObject* result = PyEval_CallObject(tell, arglist); Py_DECREF(arglist); @@ -340,7 +319,7 @@ protected: o = PyInt_AsLong(result); Py_DECREF(result); }; - wxPySaveThread(doSave); + wxPyEndBlockThreads(); return o; } @@ -350,12 +329,12 @@ protected: public: ~wxPyCBInputStream() { - bool doSave = wxPyRestoreThread(); + wxPyBeginBlockThreads(); Py_XDECREF(py); Py_XDECREF(read); Py_XDECREF(seek); Py_XDECREF(tell); - wxPySaveThread(doSave); + wxPyEndBlockThreads(); } virtual size_t GetSize() { @@ -426,6 +405,7 @@ static PyObject *_wrap_new_wxInputStream(PyObject *self, PyObject *args, PyObjec PyObject * _arg0; PyObject * _obj0 = 0; char *_kwnames[] = { "p", NULL }; + char _ptemp[128]; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxInputStream",_kwnames,&_obj0)) @@ -434,17 +414,18 @@ static PyObject *_wrap_new_wxInputStream(PyObject *self, PyObject *args, PyObjec _arg0 = _obj0; } { + PyThreadState* __tstate = wxPyBeginAllowThreads(); _result = (wxPyInputStream *)new_wxPyInputStream(_arg0); -}{ - char _ptemp[128]; - if (_result) { + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyInputStream_p"); _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; } - else - _resultobj=0; -} return _resultobj; } @@ -466,8 +447,11 @@ static PyObject *_wrap_wxInputStream_close(PyObject *self, PyObject *args, PyObj } } { + PyThreadState* __tstate = wxPyBeginAllowThreads(); wxInputStream_close(_arg0); + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; } Py_INCREF(Py_None); _resultobj = Py_None; return _resultobj; @@ -491,8 +475,11 @@ static PyObject *_wrap_wxInputStream_flush(PyObject *self, PyObject *args, PyObj } } { + PyThreadState* __tstate = wxPyBeginAllowThreads(); wxInputStream_flush(_arg0); + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; } Py_INCREF(Py_None); _resultobj = Py_None; return _resultobj; @@ -517,8 +504,11 @@ static PyObject *_wrap_wxInputStream_eof(PyObject *self, PyObject *args, PyObjec } } { + PyThreadState* __tstate = wxPyBeginAllowThreads(); _result = (bool )wxInputStream_eof(_arg0); + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; } _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -543,15 +533,13 @@ static PyObject *_wrap_wxInputStream_read(PyObject *self, PyObject *args, PyObje } } { + PyThreadState* __tstate = wxPyBeginAllowThreads(); _result = (wxString *)wxInputStream_read(_arg0,_arg1); + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; }{ - if (_result) { - _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); - delete _result; - } - else - _resultobj=0; + _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); } return _resultobj; } @@ -576,15 +564,13 @@ static PyObject *_wrap_wxInputStream_readline(PyObject *self, PyObject *args, Py } } { + PyThreadState* __tstate = wxPyBeginAllowThreads(); _result = (wxString *)wxInputStream_readline(_arg0,_arg1); + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; }{ - if (_result) { - _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); - delete _result; - } - else - _resultobj=0; + _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); } return _resultobj; } @@ -609,8 +595,11 @@ static PyObject *_wrap_wxInputStream_readlines(PyObject *self, PyObject *args, P } } { + PyThreadState* __tstate = wxPyBeginAllowThreads(); _result = (wxStringPtrList *)wxInputStream_readlines(_arg0,_arg1); + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; }{ if (_result) { _resultobj = PyList_New(_result->GetCount()); @@ -649,8 +638,11 @@ static PyObject *_wrap_wxInputStream_seek(PyObject *self, PyObject *args, PyObje } } { + PyThreadState* __tstate = wxPyBeginAllowThreads(); wxInputStream_seek(_arg0,_arg1,_arg2); + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; } Py_INCREF(Py_None); _resultobj = Py_None; return _resultobj; @@ -675,8 +667,11 @@ static PyObject *_wrap_wxInputStream_tell(PyObject *self, PyObject *args, PyObje } } { + PyThreadState* __tstate = wxPyBeginAllowThreads(); _result = (int )wxInputStream_tell(_arg0); + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; } _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -706,7 +701,7 @@ static PyObject *_wrap_wxOutputStream_write(PyObject *self, PyObject *args, PyOb #if PYTHON_API_VERSION >= 1009 char* tmpPtr; int tmpSize; if (!PyString_Check(_obj1) && !PyUnicode_Check(_obj1)) { - PyErr_SetString(PyExc_TypeError, "String or Unicode type required"); + PyErr_SetString(PyExc_TypeError, wxStringErrorMsg); return NULL; } if (PyString_AsStringAndSize(_obj1, &tmpPtr, &tmpSize) == -1) @@ -721,8 +716,11 @@ static PyObject *_wrap_wxOutputStream_write(PyObject *self, PyObject *args, PyOb #endif } { + PyThreadState* __tstate = wxPyBeginAllowThreads(); wxOutputStream_write(_arg0,*_arg1); + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; } Py_INCREF(Py_None); _resultobj = Py_None; { @@ -787,8 +785,6 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = { { "_EBool","_int",0}, { "_EBool","_wxWindowID",0}, { "_unsigned_long","_long",0}, - { "_wxPyInputStream","_class_wxPyInputStream",0}, - { "_class_wxOutputStream","_wxOutputStream",0}, { "_signed_int","_wxCoord",0}, { "_signed_int","_wxPrintQuality",0}, { "_signed_int","_EBool",0}, @@ -799,7 +795,6 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = { { "_WXTYPE","_unsigned_short",0}, { "_unsigned_short","_WXTYPE",0}, { "_unsigned_short","_short",0}, - { "_class_wxPyInputStream","_wxPyInputStream",0}, { "_signed_short","_WXTYPE",0}, { "_signed_short","_short",0}, { "_unsigned_char","_byte",0}, @@ -847,7 +842,6 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = { { "_wxCoord","_size_t",0}, { "_wxCoord","_time_t",0}, { "_wxCoord","_wxPrintQuality",0}, - { "_wxOutputStream","_class_wxOutputStream",0}, {0,0,0}}; static PyObject *SWIG_globals; @@ -859,6 +853,8 @@ SWIGEXPORT(void) initstreamsc() { SWIG_globals = SWIG_newvarlink(); m = Py_InitModule("streamsc", streamscMethods); d = PyModule_GetDict(m); + + wxPyPtrTypeMap_Add("wxInputStream", "wxPyInputStream"); { int i; for (i = 0; _swig_mapping[i].n1; i++)