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.
pytqt/sip/tqt/tqiodevice.sip

258 lines
5.1 KiB

// This is the SIP interface definition for TQIODevice.
//
// Copyright (c) 2007
// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
//
// 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
<Sect2><Title>TQIODevice</Title>
<Para>
<Literal>TQIODevice</Literal> is fully implemented.
</Para>
</Sect2>
%End
%ModuleHeaderCode
#include <tqiodevice.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;
const int IO_UnspecifiedError;
class TQIODevice
{
%TypeHeaderCode
#include <tqiodevice.h>
%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 &);
};