// This is the SIP interface definition for QIODevice. // // Copyright (c) 2007 // Riverbank Computing Limited // // This file is part of PyQt. // // This copy of PyQt is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2, or (at your option) any later // version. // // PyQt is supplied in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS // FOR A PARTICULAR PURPOSE. See the GNU General Public License for more // details. // // You should have received a copy of the GNU General Public License along with // PyQt; see the file LICENSE. If not, write to the Free Software Foundation, // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. %ExportedDoc QIODevice QIODevice is fully implemented. %End %ModuleHeaderCode #include %End // Device access types. const int IO_Direct; const int IO_Sequential; const int IO_Combined; const int IO_TypeMask; // Handling modes. const int IO_Raw; const int IO_Async; // Device open modes. const int IO_ReadOnly; const int IO_WriteOnly; const int IO_ReadWrite; const int IO_Append; const int IO_Truncate; const int IO_Translate; const int IO_ModeMask; // Device state. const int IO_Open; const int IO_StateMask; // Device status. const int IO_Ok; const int IO_ReadError; const int IO_WriteError; const int IO_FatalError; const int IO_ResourceError; const int IO_OpenError; const int IO_ConnectError; const int IO_AbortError; const int IO_TimeOutError; %If (Qt_2_00 -) const int IO_UnspecifiedError; %End class QIODevice { %TypeHeaderCode #include %End public: %If (Qt_3_0_0 -) typedef Q_ULONG Offset; %End QIODevice(); int flags() const; int mode() const; int state() const; bool isDirectAccess() const; bool isSequentialAccess() const; bool isCombinedAccess() const; bool isBuffered() const; bool isRaw() const; bool isSynchronous() const; bool isAsynchronous() const; bool isTranslated() const; bool isReadable() const; bool isWritable() const; bool isReadWrite() const; bool isInactive() const; bool isOpen() const; int status() const; void resetStatus(); virtual bool open(int) = 0 /ReleaseGIL/; virtual void close() = 0; virtual void flush() = 0 /ReleaseGIL/; %If (- Qt_3_0_0) virtual uint size() const = 0; virtual int at() const; virtual bool at(int); %End %If (Qt_3_0_0 -) virtual Offset size() const = 0; virtual Offset at() const; virtual bool at(Offset); %End virtual bool atEnd() const; bool reset(); %If (- Qt_3_0_0) virtual SIP_PYOBJECT readBlock(uint) = 0 /ReleaseGIL/ [int (char *,uint)]; %MethodCode char *buf; if ((buf = (char *)sipMalloc(a0)) == NULL) sipIsErr = 1; else { int actlen; Py_BEGIN_ALLOW_THREADS actlen = sipCpp -> readBlock(buf,a0); Py_END_ALLOW_THREADS if (actlen < 0) { sipFree((ANY *)buf); Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyString_FromStringAndSize(buf,actlen); sipFree((ANY *)buf); if (sipRes == NULL) sipIsErr = 1; } } %End %VirtualCatcherCode PyObject *result = sipCallMethod(&sipIsErr,sipMethod,"i",a1); if (result != NULL) { PyObject *buf; sipParseResult(&sipIsErr,sipMethod,result,"O",&buf); if (buf == Py_None) sipRes = -1; else if (!PyString_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf)); sipRes = PyString_GET_SIZE(buf); } Py_DECREF(buf); Py_DECREF(result); } %End %End %If (Qt_3_0_0 -) virtual SIP_PYOBJECT readBlock(Q_ULONG) = 0 /ReleaseGIL/ [Q_LONG (char *,Q_ULONG)]; %MethodCode char *buf; if ((buf = (char *)sipMalloc(a0)) == NULL) sipIsErr = 1; else { Q_LONG actlen; Py_BEGIN_ALLOW_THREADS actlen = sipCpp -> readBlock(buf,a0); Py_END_ALLOW_THREADS if (actlen < 0) { sipFree((ANY *)buf); Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyString_FromStringAndSize(buf,actlen); sipFree((ANY *)buf); if (sipRes == NULL) sipIsErr = 1; } } %End %VirtualCatcherCode PyObject *result = sipCallMethod(&sipIsErr,sipMethod,"l",a1); if (result != NULL) { PyObject *buf; sipParseResult(&sipIsErr,sipMethod,result,"O",&buf); if (buf == Py_None) sipRes = -1L; else if (!PyString_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf)); sipRes = PyString_GET_SIZE(buf); } Py_DECREF(buf); Py_DECREF(result); } %End %End %If (- Qt_3_0_0) virtual int writeBlock(const char * /Array/, uint /ArraySize/) = 0 /ReleaseGIL/; %End %If (Qt_3_0_0 -) virtual Q_LONG writeBlock(const char * /Array/, Q_ULONG /ArraySize/) = 0 /ReleaseGIL/; %End %If (- Qt_3_0_0) virtual SIP_PYOBJECT readLine(uint) /ReleaseGIL/ [int (char *,uint)]; %MethodCode char *buf; if ((buf = (char *)sipMalloc(a0)) == NULL) sipIsErr = 1; else { int actlen; Py_BEGIN_ALLOW_THREADS actlen = sipSelfWasArg ? sipCpp->QIODevice::readLine(buf, a0) : sipCpp->readLine(buf, a0); Py_END_ALLOW_THREADS if (actlen < 0) { sipFree((ANY *)buf); Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyString_FromStringAndSize(buf,actlen); sipFree((ANY *)buf); if (sipRes == NULL) sipIsErr = 1; } } %End %VirtualCatcherCode PyObject *result = sipCallMethod(&sipIsErr,sipMethod,"i",a1); if (result != NULL) { PyObject *buf; sipParseResult(&sipIsErr,sipMethod,result,"O",&buf); if (buf == Py_None) sipRes = -1; else if (!PyString_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf)); sipRes = PyString_GET_SIZE(buf); } Py_DECREF(buf); Py_DECREF(result); } %End %End %If (Qt_3_0_0 -) virtual SIP_PYOBJECT readLine(Q_ULONG) /ReleaseGIL/ [Q_LONG (char *,Q_ULONG)]; %MethodCode char *buf; if ((buf = (char *)sipMalloc(a0)) == NULL) sipIsErr = 1; else { Q_LONG actlen; Py_BEGIN_ALLOW_THREADS actlen = sipSelfWasArg ? sipCpp->QIODevice::readLine(buf, a0) : sipCpp->readLine(buf, a0); Py_END_ALLOW_THREADS if (actlen < 0) { sipFree((ANY *)buf); Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyString_FromStringAndSize(buf,actlen); sipFree((ANY *)buf); if (sipRes == NULL) sipIsErr = 1; } } %End %VirtualCatcherCode PyObject *result = sipCallMethod(&sipIsErr,sipMethod,"l",a1); if (result != NULL) { PyObject *buf; sipParseResult(&sipIsErr,sipMethod,result,"O",&buf); if (buf == Py_None) sipRes = -1L; else if (!PyString_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf)); sipRes = PyString_GET_SIZE(buf); } Py_DECREF(buf); Py_DECREF(result); } %End %End %If (Qt_2_00 - Qt_3_0_0) int writeBlock(const QByteArray &) /ReleaseGIL/; %End %If (Qt_3_0_0 -) Q_LONG writeBlock(const QByteArray &) /ReleaseGIL/; %End %If (Qt_2_00 - Qt_3_0_0) QByteArray readAll() /ReleaseGIL/; %End %If (Qt_3_0_0 -) virtual QByteArray readAll() /ReleaseGIL/; %End virtual int getch() = 0 /ReleaseGIL/; virtual int putch(int) = 0 /ReleaseGIL/; virtual int ungetch(int) = 0; protected: void setFlags(int); void setType(int); void setMode(int); void setState(int); void setStatus(int); private: QIODevice(const QIODevice &); };