You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
409 lines
7.7 KiB
409 lines
7.7 KiB
13 years ago
|
// This is the SIP interface definition for QIODevice.
|
||
|
//
|
||
|
// Copyright (c) 2007
|
||
|
// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
|
||
|
//
|
||
|
// 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||
|
|
||
|
|
||
|
%ExportedDoc
|
||
|
<Sect2><Title>QIODevice</Title>
|
||
|
<Para>
|
||
|
<Literal>QIODevice</Literal> is fully implemented.
|
||
|
</Para>
|
||
|
</Sect2>
|
||
|
%End
|
||
|
|
||
|
|
||
|
%ModuleHeaderCode
|
||
|
#include <qiodevice.h>
|
||
|
%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 <qiodevice.h>
|
||
|
%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 &);
|
||
|
};
|