summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/src/tools/tqbuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/src/tools/tqbuffer.cpp')
-rw-r--r--tqtinterface/qt4/src/tools/tqbuffer.cpp503
1 files changed, 0 insertions, 503 deletions
diff --git a/tqtinterface/qt4/src/tools/tqbuffer.cpp b/tqtinterface/qt4/src/tools/tqbuffer.cpp
deleted file mode 100644
index 81ad242..0000000
--- a/tqtinterface/qt4/src/tools/tqbuffer.cpp
+++ /dev/null
@@ -1,503 +0,0 @@
-/****************************************************************************
-**
-** Implementation of TQBuffer class
-**
-** Created : 930812
-**
-** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA.
-**
-** This file is part of the tools module of the TQt GUI Toolkit.
-**
-** This file may be used under the terms of the GNU General
-** Public License versions 2.0 or 3.0 as published by the Free
-** Software Foundation and appearing in the files LICENSE.GPL2
-** and LICENSE.GPL3 included in the packaging of this file.
-** Alternatively you may (at your option) use any later version
-** of the GNU General Public License if such license has been
-** publicly approved by Trolltech ASA (or its successors, if any)
-** and the KDE Free TQt Foundation.
-**
-** Please review the following information to ensure GNU General
-** Public Licensing requirements will be met:
-** http://trolltech.com/products/qt/licenses/licensing/opensource/.
-** If you are unsure which license is appropriate for your use, please
-** review the following information:
-** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
-** or contact the sales department at sales@trolltech.com.
-**
-** This file may be used under the terms of the Q Public License as
-** defined by Trolltech ASA and appearing in the file LICENSE.TQPL
-** included in the packaging of this file. Licensees holding valid TQt
-** Commercial licenses may use this file in accordance with the TQt
-** Commercial License Agreement provided with the Software.
-**
-** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
-** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
-** herein.
-**
-**********************************************************************/
-
-#include "tqbuffer.h"
-#include <stdlib.h>
-
-#ifdef USE_QT4
-
-#else // USE_QT4
-
-/*!
- \class TQBuffer tqbuffer.h
- \reentrant
- \brief The TQBuffer class is an I/O tqdevice that operates on a TQByteArray.
-
- \ingroup io
- \ingroup collection
-
- TQBuffer is used to read and write to a memory buffer. It is
- normally used with a TQTextStream or a TQDataStream. TQBuffer has an
- associated TQByteArray which holds the buffer data. The size() of
- the buffer is automatically adjusted as data is written.
-
- The constructor \c TQBuffer(TQByteArray) creates a TQBuffer using an
- existing byte array. The byte array can also be set with
- setBuffer(). Writing to the TQBuffer will modify the original byte
- array because TQByteArray is \link shclass.html explicitly
- shared.\endlink
-
- Use open() to open the buffer before use and to set the mode
- (read-only, write-only, etc.). close() closes the buffer. The
- buffer must be closed before reopening or calling setBuffer().
-
- A common way to use TQBuffer is through \l TQDataStream or \l
- TQTextStream, which have constructors that take a TQBuffer
- parameter. For convenience, there are also TQDataStream and
- TQTextStream constructors that take a TQByteArray parameter. These
- constructors create and open an internal TQBuffer.
-
- Note that TQTextStream can also operate on a TQString (a Unicode
- string); a TQBuffer cannot.
-
- You can also use TQBuffer directly through the standard TQIODevice
- functions readBlock(), writeBlock() readLine(), at(), getch(),
- putch() and ungetch().
-
- \sa TQFile, TQDataStream, TQTextStream, TQByteArray, \link shclass.html Shared Classes\endlink
-*/
-
-
-/*!
- Constructs an empty buffer.
-*/
-
-TQBuffer::TQBuffer()
-{
- setFlags( IO_Direct );
- a_inc = 16; // initial increment
- a_len = 0;
- ioIndex = 0;
-}
-
-
-/*!
- Constructs a buffer that operates on \a buf.
-
- If you open the buffer in write mode (\c IO_WriteOnly or
- \c IO_ReadWrite) and write something into the buffer, \a buf
- will be modified.
-
- Example:
- \code
- TQCString str = "abc";
- TQBuffer b( str );
- b.open( IO_WriteOnly );
- b.at( 3 ); // position at the 4th character (the terminating \0)
- b.writeBlock( "def", 4 ); // write "def" including the terminating \0
- b.close();
- // Now, str == "abcdef" with a terminating \0
- \endcode
-
- \sa setBuffer()
-*/
-
-TQBuffer::TQBuffer( TQByteArray buf ) : a(buf)
-{
- setFlags( IO_Direct );
- a_len = a.size();
- a_inc = (a_len > 512) ? 512 : a_len; // initial increment
- if ( a_inc < 16 )
- a_inc = 16;
- ioIndex = 0;
-}
-
-/*!
- Destroys the buffer.
-*/
-
-TQBuffer::~TQBuffer()
-{
-}
-
-
-/*!
- Replaces the buffer's contents with \a buf and returns TRUE.
-
- Does nothing (and returns FALSE) if isOpen() is TRUE.
-
- Note that if you open the buffer in write mode (\c IO_WriteOnly or
- IO_ReadWrite) and write something into the buffer, \a buf is also
- modified because TQByteArray is an explicitly shared class.
-
- \sa buffer(), open(), close()
-*/
-
-bool TQBuffer::setBuffer( TQByteArray buf )
-{
- if ( isOpen() ) {
-#if defined(TQT_CHECK_STATE)
- qWarning( "TQBuffer::setBuffer: Buffer is open" );
-#endif
- return FALSE;
- }
- a = buf;
- a_len = a.size();
- a_inc = (a_len > 512) ? 512 : a_len; // initial increment
- if ( a_inc < 16 )
- a_inc = 16;
- ioIndex = 0;
- return TRUE;
-}
-
-/*!
- \fn TQByteArray TQBuffer::buffer() const
-
- Returns this buffer's byte array.
-
- \sa setBuffer()
-*/
-
-/*!
- \reimp
-
- Opens the buffer in mode \a m. Returns TRUE if successful;
- otherwise returns FALSE. The buffer must be opened before use.
-
- The mode parameter \a m must be a combination of the following flags.
- \list
- \i \c IO_ReadOnly opens the buffer in read-only mode.
- \i \c IO_WriteOnly opens the buffer in write-only mode.
- \i \c IO_ReadWrite opens the buffer in read/write mode.
- \i \c IO_Append sets the buffer index to the end of the buffer.
- \i \c IO_Truncate truncates the buffer.
- \endlist
-
- \sa close(), isOpen()
-*/
-
-bool TQBuffer::open( int m )
-{
- if ( isOpen() ) { // buffer already open
-#if defined(TQT_CHECK_STATE)
- qWarning( "TQBuffer::open: Buffer already open" );
-#endif
- return FALSE;
- }
- setMode( m );
- if ( m & IO_Truncate ) { // truncate buffer
- a.resize( 0 );
- a_len = 0;
- }
- if ( m & IO_Append ) { // append to end of buffer
- ioIndex = a.size();
- } else {
- ioIndex = 0;
- }
- a_inc = 16;
- setState( IO_Open );
- resetqStatus();
- return TRUE;
-}
-
-/*!
- \reimp
-
- Closes an open buffer.
-
- \sa open()
-*/
-
-void TQBuffer::close()
-{
- if ( isOpen() ) {
- setFlags( IO_Direct );
- ioIndex = 0;
- a_inc = 16;
- }
-}
-
-/*!
- \reimp
-
- The flush function does nothing for a TQBuffer.
-*/
-
-void TQBuffer::flush()
-{
- return;
-}
-
-
-/*!
- \fn TQIODevice::Offset TQBuffer::at() const
-
- \reimp
-*/
-
-/*!
- \fn TQIODevice::Offset TQBuffer::size() const
-
- \reimp
-*/
-
-/*!
- \reimp
-*/
-
-bool TQBuffer::at( Offset pos )
-{
-#if defined(TQT_CHECK_STATE)
- if ( !isOpen() ) {
- qWarning( "TQBuffer::at: Buffer is not open" );
- return FALSE;
- }
-#endif
- if ( pos > a_len ) {
-#if defined(TQT_CHECK_RANGE)
-#if defined(TQT_ABI_QT4)
- qWarning( "TQBuffer::at: Index %lld out of range", pos );
-#else
- qWarning( "TQBuffer::at: Index %lu out of range", pos );
-#endif
-#endif
- return FALSE;
- }
- ioIndex = pos;
- return TRUE;
-}
-
-
-/*!
- \reimp
-*/
-
-TQ_LONG TQBuffer::readBlock( char *p, TQ_ULONG len )
-{
-#if defined(TQT_CHECK_STATE)
- if ( !p ) {
- qWarning( "TQBuffer::readBlock: Null pointer error" );
- return -1;
- }
- if ( !isOpen() ) { // buffer not open
- qWarning( "TQBuffer::readBlock: Buffer not open" );
- return -1;
- }
- if ( !isReadable() ) { // reading not permitted
- qWarning( "TQBuffer::readBlock: Read operation not permitted" );
- return -1;
- }
-#endif
- if ( ioIndex + len > a.size() ) { // overflow
- if ( ioIndex >= a.size() ) {
- return 0;
- } else {
- len = a.size() - ioIndex;
- }
- }
- memcpy(p, a.data() + ioIndex, len);
- ioIndex += len;
- return len;
-}
-
-/*!
- \overload TQ_LONG TQBuffer::writeBlock( const TQByteArray& data )
-
- This convenience function is the same as calling
- \c{writeBlock( data.data(), data.size() )} with \a data.
-*/
-
-/*!
- Writes \a len bytes from \a p into the buffer at the current
- index position, overwriting any characters there and extending the
- buffer if necessary. Returns the number of bytes actually written.
-
- Returns -1 if an error occurred.
-
- \sa readBlock()
-*/
-
-TQ_LONG TQBuffer::writeBlock( const char *p, TQ_ULONG len )
-{
- if ( len == 0 )
- return 0;
-
-#if defined(TQT_CHECK_NULL)
- if ( p == 0 ) {
- qWarning( "TQBuffer::writeBlock: Null pointer error" );
- return -1;
- }
-#endif
-#if defined(TQT_CHECK_STATE)
- if ( !isOpen() ) { // buffer not open
- qWarning( "TQBuffer::writeBlock: Buffer not open" );
- return -1;
- }
- if ( !isWritable() ) { // writing not permitted
- qWarning( "TQBuffer::writeBlock: Write operation not permitted" );
- return -1;
- }
-#endif
- if ( ioIndex + len > a_len ) { // overflow
- TQ_ULONG new_len = a_len + a_inc*((ioIndex+len-a_len)/a_inc+1);
- if ( !a.resize( new_len ) ) { // could not resize
-#if defined(TQT_CHECK_NULL)
- qWarning( "TQBuffer::writeBlock: Memory allocation error" );
-#endif
- setqStatus( IO_ResourceError );
- return -1;
- }
- a_inc *= 2; // double increment
- a_len = new_len;
- a.shd->len = ioIndex + len;
- }
- memcpy( a.data()+ioIndex, p, len );
- ioIndex += len;
- if ( a.shd->len < ioIndex )
- a.shd->len = ioIndex; // fake (not alloc'd) length
- return len;
-}
-
-
-/*!
- \reimp
-*/
-
-TQ_LONG TQBuffer::readLine( char *p, TQ_ULONG maxlen )
-{
-#if defined(TQT_CHECK_NULL)
- if ( p == 0 ) {
- qWarning( "TQBuffer::readLine: Null pointer error" );
- return -1;
- }
-#endif
-#if defined(TQT_CHECK_STATE)
- if ( !isOpen() ) { // buffer not open
- qWarning( "TQBuffer::readLine: Buffer not open" );
- return -1;
- }
- if ( !isReadable() ) { // reading not permitted
- qWarning( "TQBuffer::readLine: Read operation not permitted" );
- return -1;
- }
-#endif
- if ( maxlen == 0 )
- return 0;
- TQ_ULONG start = ioIndex;
- char *d = a.data() + ioIndex;
- maxlen--; // make room for 0-terminator
- if ( a.size() - ioIndex < maxlen )
- maxlen = a.size() - ioIndex;
- while ( maxlen-- ) {
- if ( (*p++ = *d++) == '\n' )
- break;
- }
- *p = '\0';
- ioIndex = d - a.data();
- return ioIndex - start;
-}
-
-
-/*!
- \reimp
-*/
-
-int TQBuffer::getch()
-{
-#if defined(TQT_CHECK_STATE)
- if ( !isOpen() ) { // buffer not open
- qWarning( "TQBuffer::getch: Buffer not open" );
- return -1;
- }
- if ( !isReadable() ) { // reading not permitted
- qWarning( "TQBuffer::getch: Read operation not permitted" );
- return -1;
- }
-#endif
- if ( ioIndex+1 > a.size() ) { // overflow
- setqStatus( IO_ReadError );
- return -1;
- }
- return uchar(*(a.data()+ioIndex++));
-}
-
-/*!
- \reimp
-
- Writes the character \a ch into the buffer at the current index
- position, overwriting any existing character and extending the
- buffer if necessary.
-
- Returns \a ch, or -1 if an error occurred.
-
- \sa getch(), ungetch()
-*/
-
-int TQBuffer::putch( int ch )
-{
-#if defined(TQT_CHECK_STATE)
- if ( !isOpen() ) { // buffer not open
- qWarning( "TQBuffer::putch: Buffer not open" );
- return -1;
- }
- if ( !isWritable() ) { // writing not permitted
- qWarning( "TQBuffer::putch: Write operation not permitted" );
- return -1;
- }
-#endif
- if ( ioIndex + 1 > a_len ) { // overflow
- char buf[1];
- buf[0] = (char)ch;
- if ( writeBlock(buf,1) != 1 )
- return -1; // write error
- } else {
- *(a.data() + ioIndex++) = (char)ch;
- if ( a.shd->len < ioIndex )
- a.shd->len = ioIndex;
- }
- return ch;
-}
-
-/*!
- \reimp
-*/
-
-int TQBuffer::ungetch( int ch )
-{
-#if defined(TQT_CHECK_STATE)
- if ( !isOpen() ) { // buffer not open
- qWarning( "TQBuffer::ungetch: Buffer not open" );
- return -1;
- }
- if ( !isReadable() ) { // reading not permitted
- qWarning( "TQBuffer::ungetch: Read operation not permitted" );
- return -1;
- }
-#endif
- if ( ch != -1 ) {
- if ( ioIndex )
- ioIndex--;
- else
- ch = -1;
- }
- return ch;
-}
-
-#endif // USE_QT4 \ No newline at end of file