// This is the SIP interface definition for TQIODevice. // // Copyright (c) 2007 // Riverbank Computing Limited // // This file is part of PyTQt. // // This copy of PyTQt 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. // // PyTQt 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 // PyTQt; see the file LICENSE. If not, write to the Free Software Foundation, // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. %ExportedDoc TQIODevice TQIODevice 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; const int IO_UnspecifiedError; class TQIODevice { %TypeHeaderCode #include %End public: typedef TQ_ULONG Offset; TQIODevice(); 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/; virtual Offset size() const = 0; virtual Offset at() const; virtual bool at(Offset); virtual bool atEnd() const; bool reset(); virtual SIP_PYOBJECT readBlock(TQ_ULONG) = 0 /ReleaseGIL/ [TQ_LONG (char *,TQ_ULONG)]; %MethodCode char *buf; if ((buf = (char *)sipMalloc(a0)) == NULL) sipIsErr = 1; else { TQ_LONG actlen; Py_BEGIN_ALLOW_THREADS actlen = sipCpp -> readBlock(buf,a0); Py_END_ALLOW_THREADS if (actlen < 0) { sipFree((void *)buf); Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(buf,actlen); sipFree((void *)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 (!PyBytes_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { memcpy(a0,PyBytes_AS_STRING(buf),PyBytes_GET_SIZE(buf)); sipRes = PyBytes_GET_SIZE(buf); } Py_DECREF(buf); Py_DECREF(result); } %End virtual TQ_LONG writeBlock(const char * /Array/, TQ_ULONG /ArraySize/) = 0 /ReleaseGIL/; virtual SIP_PYOBJECT readLine(TQ_ULONG) /ReleaseGIL/ [TQ_LONG (char *,TQ_ULONG)]; %MethodCode char *buf; if ((buf = (char *)sipMalloc(a0)) == NULL) sipIsErr = 1; else { TQ_LONG actlen; Py_BEGIN_ALLOW_THREADS actlen = sipSelfWasArg ? sipCpp->TQIODevice::readLine(buf, a0) : sipCpp->readLine(buf, a0); Py_END_ALLOW_THREADS if (actlen < 0) { sipFree((void *)buf); Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(buf,actlen); sipFree((void *)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 (!PyBytes_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { memcpy(a0,PyBytes_AS_STRING(buf),PyBytes_GET_SIZE(buf)); sipRes = PyBytes_GET_SIZE(buf); } Py_DECREF(buf); Py_DECREF(result); } %End TQ_LONG writeBlock(const TQByteArray &) /ReleaseGIL/; virtual TQByteArray readAll() /ReleaseGIL/; 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: TQIODevice(const TQIODevice &); };