From 29ea1e8227b3e892e7124c8cd8b5f2b8be81a058 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Wed, 3 Mar 2021 21:13:49 +0100 Subject: Refactoring: replace QTextStream by ifstream --- qtools/CMakeLists.txt | 1 - qtools/qtextstream.cpp | 2236 ------------------------------------------------ qtools/qtextstream.h | 351 -------- qtools/qtl.h | 27 +- src/bufstr.h | 1 + src/commentcnv.l | 1 - src/commentscan.l | 2 +- src/defgen.cpp | 1 - src/docbookgen.cpp | 1 - src/doxygen.cpp | 1 - src/formula.cpp | 72 +- src/formula.h | 11 +- src/index.cpp | 1 - src/xmlgen.cpp | 1 - 14 files changed, 38 insertions(+), 2669 deletions(-) delete mode 100644 qtools/qtextstream.cpp delete mode 100644 qtools/qtextstream.h diff --git a/qtools/CMakeLists.txt b/qtools/CMakeLists.txt index 78faba1..732449c 100644 --- a/qtools/CMakeLists.txt +++ b/qtools/CMakeLists.txt @@ -16,7 +16,6 @@ qgstring.cpp qiodevice.cpp qregexp.cpp qstring.cpp -qtextstream.cpp qtextcodec.cpp qstringlist.cpp qcstringlist.cpp diff --git a/qtools/qtextstream.cpp b/qtools/qtextstream.cpp deleted file mode 100644 index a3abb53..0000000 --- a/qtools/qtextstream.cpp +++ /dev/null @@ -1,2236 +0,0 @@ -/**************************************************************************** -** -** -** Implementation of QTextStream class -** -** Created : 940922 -** -** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. -** -** This file is part of the tools module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition -** licenses may use this file in accordance with the Qt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#include "qtextstream.h" - -#ifndef QT_NO_TEXTSTREAM -#include "qtextcodec.h" -#include "qbuffer.h" -#include "qfile.h" -#include -#include -#include - -#if defined(_OS_WIN32_) -#include -#endif - -// NOT REVISED -/*! - \class QTextStream qtextstream.h - - \brief The QTextStream class provides basic functions for reading and - writing text using a QIODevice. - - \ingroup io - - \define endl - \define bin - \define oct - \define dec - \define hex - \define flush - \define ws - - The text stream class has a functional interface that is very - similar to that of the standard C++ iostream class. The difference - between iostream and QTextStream is that our stream operates on a - QIODevice, which is easily subclassed, while iostream operates on - FILE * pointers, which can not be subclassed. - - Qt provides several global functions similar to the ones in iostream: -
    -
  • \c bin sets the QTextStream to read/write binary numbers -
  • \c oct sets the QTextStream to read/write octal numbers -
  • \c dec sets the QTextStream to read/write decimal numbers -
  • \c hex sets the QTextStream to read/write hexadecimal numbers -
  • \c endl forces a line break -
  • \c flush forces the QIODevice to flush any buffered data -
  • \c ws eats any available white space (on input) -
  • \c reset resets the QTextStream to its default mode (see reset()). -
- - \warning By default, QTextStream will automatically detect whether - integers in the stream are in decimal, octal, hexadecimal or binary - format when reading from the stream. In particular, a leading '0' - signifies octal, ie. the sequence "0100" will be interpreted as - 64. - - The QTextStream class reads and writes text and it is not - appropriate for dealing with binary data (but QDataStream is). - - By default output of Unicode text (ie. QString) is done using the - local 8-bit encoding. This can be changed using the setEncoding() - method. For input, the QTextStream will auto-detect standard - Unicode "byte order marked" text files, but otherwise the local - 8-bit encoding is used. - - \sa QDataStream -*/ - -/* - \class QTSManip qtextstream.h - - \brief The QTSManip class is an internal helper class for the - QTextStream. - - It is generally a very bad idea to use this class directly in - application programs. - - \internal - - This class makes it possible to give the QTextStream function objects - with arguments, like this: - \code - QTextStream cout( stdout, IO_WriteOnly ); - cout << setprecision( 8 ); // QTSManip used here! - cout << 3.14159265358979323846; - \endcode - - The setprecision() function returns a QTSManip object. - The QTSManip object contains a pointer to a member function in - QTextStream and an integer argument. - When serializing a QTSManip into a QTextStream, the function - is executed with the argument. -*/ - -/*! \fn QTSManip::QTSManip (QTSMFI m, int a) - - Constructs a QTSManip object which will call \a m (a member function - in QTextStream which accepts a single int) with argument \a a when - QTSManip::exec() is called. Used internally in e.g. endl: - - \code - s << "some text" << endl << "more text"; - \endcode -*/ - -/*! \fn void QTSManip::exec (QTextStream& s) - - Calls the member function specified in the constructor, for object - \a s. Used internally in e.g. endl: - - \code - s << "some text" << endl << "more text"; - \endcode -*/ - - -/***************************************************************************** - QTextStream member functions - *****************************************************************************/ - -#if defined(CHECK_STATE) -#undef CHECK_STREAM_PRECOND -#define CHECK_STREAM_PRECOND if ( !dev ) { \ - qWarning( "QTextStream: No device" ); \ - return *this; } -#else -#define CHECK_STREAM_PRECOND -#endif - - -#define I_SHORT 0x0010 -#define I_INT 0x0020 -#define I_LONG 0x0030 -#define I_TYPE_MASK 0x00f0 - -#define I_BASE_2 QTS::bin -#define I_BASE_8 QTS::oct -#define I_BASE_10 QTS::dec -#define I_BASE_16 QTS::hex -#define I_BASE_MASK (QTS::bin | QTS::oct | QTS::dec | QTS::hex) - -#define I_SIGNED 0x0100 -#define I_UNSIGNED 0x0200 -#define I_SIGN_MASK 0x0f00 - - -static const QChar QEOF = QChar((ushort)0xffff); //guaranteed not to be a character. - -const int QTextStream::basefield = I_BASE_MASK; -const int QTextStream::adjustfield = ( QTextStream::left | - QTextStream::right | - QTextStream::internal ); -const int QTextStream::floatfield = ( QTextStream::scientific | - QTextStream::fixed ); - - -class QTextStreamPrivate { -public: -#ifndef QT_NO_TEXTCODEC - QTextStreamPrivate() : decoder( 0 ), sourceType( NotSet ) {} - ~QTextStreamPrivate() { delete decoder; } - QTextDecoder *decoder; //??? -#else - QTextStreamPrivate() : sourceType( NotSet ) {} - ~QTextStreamPrivate() { } -#endif - QString ungetcBuf; - - enum SourceType { NotSet, IODevice, String, ByteArray, File }; - SourceType sourceType; -}; - - -// skips whitespace and returns the first non-whitespace character -QChar QTextStream::eat_ws() -{ - QChar c; - do { c = ts_getc(); } while ( c != QEOF && ts_isspace(c) ); - return c; -} - -void QTextStream::init() -{ - // ### ungetcBuf = QEOF; - dev = 0; // no device set - fstrm = owndev = FALSE; - mapper = 0; - d = new QTextStreamPrivate; - doUnicodeHeader = TRUE; //default to autodetect - latin1 = TRUE; // ### should use local? - internalOrder = QChar::networkOrdered(); //default to network order -} - -/*! - Constructs a data stream that has no IO device. -*/ - -QTextStream::QTextStream() -{ - init(); - setEncoding( Locale ); //### - reset(); - d->sourceType = QTextStreamPrivate::NotSet; -} - -/*! - Constructs a text stream that uses the IO device \a iod. -*/ - -QTextStream::QTextStream( QIODevice *iod ) -{ - init(); - setEncoding( Locale ); //### - dev = iod; // set device - reset(); - d->sourceType = QTextStreamPrivate::IODevice; -} - -// TODO: use special-case handling of this case in QTextStream, and -// simplify this class to only deal with QChar or QString data. -class QStringBuffer : public QIODevice { -public: - QStringBuffer( QString* str ); - ~QStringBuffer(); - bool open( int m ); - void close(); - void flush(); - uint size() const; - int at() const; - bool at( int pos ); - int readBlock( char *p, uint len ); - int writeBlock( const char *p, uint len ); - int getch(); - int putch( int ch ); - int ungetch( int ch ); -protected: - QString* s; - -private: // Disabled copy constructor and operator= - QStringBuffer( const QStringBuffer & ); - QStringBuffer &operator=( const QStringBuffer & ); -}; - - -QStringBuffer::QStringBuffer( QString* str ) -{ - s = str; -} - -QStringBuffer::~QStringBuffer() -{ -} - - -bool QStringBuffer::open( int m ) -{ - if ( !s ) { -#if defined(CHECK_STATE) - qWarning( "QStringBuffer::open: No string" ); -#endif - return FALSE; - } - if ( isOpen() ) { // buffer already open -#if defined(CHECK_STATE) - qWarning( "QStringBuffer::open: Buffer already open" ); -#endif - return FALSE; - } - setMode( m ); - if ( m & IO_Truncate ) { // truncate buffer - s->truncate( 0 ); - } - if ( m & IO_Append ) { // append to end of buffer - ioIndex = s->length()*(int)sizeof(QChar); - } else { - ioIndex = 0; - } - setState( IO_Open ); - setStatus( 0 ); - return TRUE; -} - -void QStringBuffer::close() -{ - if ( isOpen() ) { - setFlags( IO_Direct ); - ioIndex = 0; - } -} - -void QStringBuffer::flush() -{ -} - -uint QStringBuffer::size() const -{ - return s ? s->length()*(int)sizeof(QChar) : 0; -} - -int QStringBuffer::at() const -{ - return ioIndex; -} - -bool QStringBuffer::at( int pos ) -{ -#if defined(CHECK_STATE) - if ( !isOpen() ) { - qWarning( "QStringBuffer::at: Buffer is not open" ); - return FALSE; - } -#endif - if ( (uint)pos >= s->length()*2 ) { -#if defined(CHECK_RANGE) - qWarning( "QStringBuffer::at: Index %d out of range", pos ); -#endif - return FALSE; - } - ioIndex = pos; - return TRUE; -} - - -int QStringBuffer::readBlock( char *p, uint len ) -{ -#if defined(CHECK_STATE) - CHECK_PTR( p ); - if ( !isOpen() ) { // buffer not open - qWarning( "QStringBuffer::readBlock: Buffer not open" ); - return -1; - } - if ( !isReadable() ) { // reading not permitted - qWarning( "QStringBuffer::readBlock: Read operation not permitted" ); - return -1; - } -#endif - if ( (uint)ioIndex + len > s->length()*sizeof(QChar) ) { - // overflow - if ( (uint)ioIndex >= s->length()*sizeof(QChar) ) { - setStatus( IO_ReadError ); - return -1; - } else { - len = s->length()*2 - (uint)ioIndex; - } - } - memcpy( p, ((const char*)(s->unicode()))+ioIndex, len ); - ioIndex += len; - return len; -} - -int QStringBuffer::writeBlock( const char *p, uint len ) -{ -#if defined(CHECK_NULL) - if ( p == 0 && len != 0 ) - qWarning( "QStringBuffer::writeBlock: Null pointer error" ); -#endif -#if defined(CHECK_STATE) - if ( !isOpen() ) { // buffer not open - qWarning( "QStringBuffer::writeBlock: Buffer not open" ); - return -1; - } - if ( !isWritable() ) { // writing not permitted - qWarning( "QStringBuffer::writeBlock: Write operation not permitted" ); - return -1; - } - if ( ioIndex&1 ) { - qWarning( "QStringBuffer::writeBlock: non-even index - non Unicode" ); - return -1; - } - if ( len&1 ) { - qWarning( "QStringBuffer::writeBlock: non-even length - non Unicode" ); - return -1; - } -#endif - s->replace(ioIndex/2, len/2, (QChar*)p, len/2); - ioIndex += len; - return len; -} - -int QStringBuffer::getch() -{ -#if defined(CHECK_STATE) - if ( !isOpen() ) { // buffer not open - qWarning( "QStringBuffer::getch: Buffer not open" ); - return -1; - } - if ( !isReadable() ) { // reading not permitted - qWarning( "QStringBuffer::getch: Read operation not permitted" ); - return -1; - } -#endif - if ( (uint)ioIndex >= s->length()*2 ) { // overflow - setStatus( IO_ReadError ); - return -1; - } - return *((char*)s->unicode() + ioIndex++); -} - -int QStringBuffer::putch( int ch ) -{ - char c = ch; - if ( writeBlock(&c,1) < 0 ) - return -1; - else - return ch; -} - -int QStringBuffer::ungetch( int ch ) -{ -#if defined(CHECK_STATE) - if ( !isOpen() ) { // buffer not open - qWarning( "QStringBuffer::ungetch: Buffer not open" ); - return -1; - } - if ( !isReadable() ) { // reading not permitted - qWarning( "QStringBuffer::ungetch: Read operation not permitted" ); - return -1; - } -#endif - if ( ch != -1 ) { // something to do with eof - if ( ioIndex ) - ioIndex--; - else - ch = -1; - } - return ch; -} - - -/*! - Constructs a text stream that operates on a Unicode QString through an - internal device. - - If you set an encoding or codec with setEncoding() or setCodec(), this - setting is ignored for text streams that operate on QString. - - Example: - \code - QString str; - QTextStream ts( &str, IO_WriteOnly ); - ts << "pi = " << 3.14; // str == "pi = 3.14" - \endcode - - Writing data to the text stream will modify the contents of the string. - The string will be expanded when data is written beyond the end of the - string. Note that the string will not be truncated: - \code - QString str = "pi = 3.14"; - QTextStream ts( &str, IO_WriteOnly ); - ts << "2+2 = " << 2+2; // str == "2+2 = 414" - \endcode - - Note that since QString is Unicode, you should not use readRawBytes() - or writeRawBytes() on such a stream. -*/ - -QTextStream::QTextStream( QString* str, int filemode ) -{ - // TODO: optimize for this case as it becomes more common - // (see QStringBuffer above) - init(); - dev = new QStringBuffer( str ); - ((QStringBuffer *)dev)->open( filemode ); - owndev = TRUE; - setEncoding(RawUnicode); - reset(); - d->sourceType = QTextStreamPrivate::String; -} - -/*! \obsolete - - This constructor is equivalent to the constructor taking a QString* - parameter. -*/ - -QTextStream::QTextStream( QString& str, int filemode ) -{ - init(); - dev = new QStringBuffer( &str ); - ((QStringBuffer *)dev)->open( filemode ); - owndev = TRUE; - setEncoding(RawUnicode); - reset(); - d->sourceType = QTextStreamPrivate::String; -} - -/*! - Constructs a text stream that operates on a byte array through an - internal QBuffer device. - - Example: - \code - QByteArray array; - QTextStream ts( array, IO_WriteOnly ); - ts << "pi = " << 3.14 << '\0'; // array == "pi = 3.14" - \endcode - - Writing data to the text stream will modify the contents of the array. - The array will be expanded when data is written beyond the end of the - string. - - Same example, using a QBuffer: - \code - QByteArray array; - QBuffer buf( array ); - buf.open( IO_WriteOnly ); - QTextStream ts( &buf ); - ts << "pi = " << 3.14 << '\0'; // array == "pi = 3.14" - buf.close(); - \endcode -*/ - -QTextStream::QTextStream( QByteArray a, int mode ) -{ - init(); - dev = new QBuffer( a ); - ((QBuffer *)dev)->open( mode ); - owndev = TRUE; - setEncoding( Locale ); //### Locale??? - reset(); - d->sourceType = QTextStreamPrivate::ByteArray; -} - -/*! - Constructs a text stream that operates on an existing file handle \e fh - through an internal QFile device. - - Example: - \code - QTextStream cout( stdout, IO_WriteOnly ); - QTextStream cin ( stdin, IO_ReadOnly ); - QTextStream cerr( stderr, IO_WriteOnly ); - \endcode -*/ - -QTextStream::QTextStream( FILE *fh, int mode ) -{ - init(); - setEncoding( Locale ); //### - dev = new QFile; - ((QFile *)dev)->open( mode, fh ); - fstrm = owndev = TRUE; - reset(); - d->sourceType = QTextStreamPrivate::File; -} - -/*! - Destructs the text stream. - - The destructor does not affect the current IO device. -*/ - -QTextStream::~QTextStream() -{ - if ( owndev ) - delete dev; - delete d; -} - -/*! - Positions the read pointer at the first non-whitespace character. -*/ -void QTextStream::skipWhiteSpace() -{ - ts_ungetc( eat_ws() ); -} - - -/*! - \fn Encoding QTextStream::encoding() const - - Returns the encoding mode of the stream. - - \sa setEncoding() -*/ - -/*! - Tries to read len characters from the stream and stores them in \a buf. - Returns the number of characters really read. - Attention: There will no QEOF appended if the read reaches the end of - the file. EOF is reached when the return value does not equal \a len. -*/ -uint QTextStream::ts_getbuf( QChar* buf, uint len ) -{ - if( len<1 ) - return 0; - - uint rnum=0; // the number of QChars really read - - if ( d && d->ungetcBuf.length() ) { - while( rnum < len && rnum < d->ungetcBuf.length() ) { - buf[rnum] = d->ungetcBuf.constref(rnum); - rnum++; - } - d->ungetcBuf = d->ungetcBuf.mid( rnum ); - if ( rnum >= len ) - return rnum; - } - - // we use dev->ungetch() for one of the bytes of the unicode - // byte-order mark, but a local unget hack for the other byte: - int ungetHack = EOF; - - if ( doUnicodeHeader ) { - doUnicodeHeader = FALSE; //only at the top - int c1 = dev->getch(); - if ( c1 == EOF ) - return rnum; - int c2 = dev->getch(); - if ( c1 == 0xfe && c2 == 0xff ) { - mapper = 0; - latin1 = FALSE; - internalOrder = QChar::networkOrdered(); //network order - } else if ( c1 == 0xff && c2 == 0xfe ) { - mapper = 0; - latin1 = FALSE; - internalOrder = !QChar::networkOrdered(); //reverse network order - } else { - if ( c2 != EOF ) { - dev->ungetch( c2 ); - ungetHack = c1; - } else { - dev->ungetch( c1 ); - // note that a small possible bug might hide here - // here, if only the first byte of a file has made it - // so far, and that first byte is half of the - // byte-order mark, then the utfness will not be - // detected. whether or not this is a bug depends on - // taste. I can't really decide. - } - } - } - -#ifndef QT_NO_TEXTCODEC - if ( mapper ) { - bool shortRead = FALSE; - if ( !d->decoder ) - d->decoder = mapper->makeDecoder(); - while( rnum < len ) { - QString s; - bool readBlock = !( len == 1+rnum ); - while ( TRUE ) { - // for efficiency: normally read a whole block - if ( readBlock ) { - // guess buffersize; this may be wrong (too small or too - // big). But we can handle this (either iterate reading - // or use ungetcBuf). - // Note that this might cause problems for codecs where - // one byte can result in >1 Unicode Characters if bytes - // are written to the stream in the meantime (loss of - // synchronicity). - uint rlen = len - rnum; - char *cbuf = new char[ rlen ]; - if ( ungetHack != EOF ) { - rlen = 1+dev->readBlock( cbuf+1, rlen-1 ); - cbuf[0] = (char)ungetHack; - ungetHack = EOF; - } else { - rlen = dev->readBlock( cbuf, rlen ); - } - s += d->decoder->toUnicode( cbuf, rlen ); - delete[] cbuf; - // use buffered reading only for the first time, because we - // have to get the stream synchronous again (this is easier - // with single character reading) - readBlock = FALSE; - } - // get stream (and codec) in sync - int c; - if ( ungetHack == EOF ) { - c = dev->getch(); - } else { - c = ungetHack; - ungetHack = EOF; - } - if ( c == EOF ) { - shortRead = TRUE; - break; - } - char b = c; - uint lengthBefore = s.length(); - s += d->decoder->toUnicode( &b, 1 ); - if ( s.length() > lengthBefore ) - break; // it seems we are in sync now - } - uint i = 0; - while( rnum < len && i < s.length() ) - buf[rnum++] = s.constref(i++); - if ( s.length() > i ) - // could be = but append is clearer - d->ungetcBuf.append( s.mid( i ) ); - if ( shortRead ) - return rnum; - } - } else -#endif - if ( latin1 ) { - if ( len == 1+rnum ) { - // use this method for one character because it is more efficient - // (arnt doubts whether it makes a difference, but lets it stand) - int c = (ungetHack == EOF) ? dev->getch() : ungetHack; - if ( c != EOF ) - buf[rnum++] = (char)c; - } else { - if ( ungetHack != EOF ) { - buf[rnum++] = (char)ungetHack; - ungetHack = EOF; - } - char *cbuf = new char[len - rnum]; - while ( !dev->atEnd() && rnum < len ) { - uint rlen = len - rnum; - rlen = dev->readBlock( cbuf, rlen ); - uint i = 0; - while( i < rlen ) - buf[rnum++] = cbuf[i++]; - } - delete[] cbuf; - } - } else { // UCS-2 or UTF-16 - if ( len == 1+rnum ) { - int c1 = (ungetHack == EOF) ? dev->getch() : ungetHack; - if ( c1 == EOF ) - return rnum; - int c2 = dev->getch(); - if ( c2 == EOF ) - return rnum; - if ( isNetworkOrder() ) - buf[rnum++] = QChar( c2, c1 ); - else - buf[rnum++] = QChar( c1, c2 ); - } else { - char *cbuf = new char[ 2*( len - rnum ) ]; // for paranoids: overflow possible - while ( !dev->atEnd() && rnum < len ) { - uint rlen = 2 * ( len-rnum ); - if ( ungetHack != EOF ) { - rlen = 1+dev->readBlock( cbuf+1, rlen-1 ); - cbuf[0] = (char)ungetHack; - ungetHack = EOF; - } else { - rlen = dev->readBlock( cbuf, rlen ); - } - // We can't use an odd number of bytes, so put it back. But - // do it only if we are capable of reading more -- normally - // there should not be an odd number, but the file might be - // truncated or not in UTF-16... - if ( (rlen & 1) == 1 ) - if ( !dev->atEnd() ) - dev->ungetch( cbuf[--rlen] ); - uint i = 0; - if ( isNetworkOrder() ) { - while( i < rlen ) { - buf[rnum++] = QChar( cbuf[i+1], cbuf[i] ); - i+=2; - } - } else { - while( i < rlen ) { - buf[rnum++] = QChar( cbuf[i], cbuf[i+1] ); - i+=2; - } - } - } - delete[] cbuf; - } - } - return rnum; -} - - -/*! - Puts one character to the stream. -*/ -void QTextStream::ts_putc( QChar c ) -{ -#ifndef QT_NO_TEXTCODEC - if ( mapper ) { - int len = 1; - QString s = c; - QCString block = mapper->fromUnicode( s, len ); - dev->writeBlock( block, len ); - } else -#endif - if ( latin1 ) { - if( c.row() ) - dev->putch( '?' ); //######unknown character??? - else - dev->putch( c.cell() ); - } else { - if ( doUnicodeHeader ) { - doUnicodeHeader = FALSE; - ts_putc( QChar::byteOrderMark ); - } - if ( internalOrder ) { - dev->writeBlock( (char*)&c, sizeof(QChar) ); - } else if ( isNetworkOrder() ) { - dev->putch(c.row()); - dev->putch(c.cell()); - } else { - dev->putch(c.cell()); - dev->putch(c.row()); - } - } -} - -/*! - Puts one character to the stream. -*/ -void QTextStream::ts_putc(int ch) -{ - ts_putc(QChar((ushort)ch)); -} - -bool QTextStream::ts_isdigit(QChar c) -{ - return c.isDigit(); -} - -bool QTextStream::ts_isspace( QChar c ) -{ - return c.isSpace(); -} - -void QTextStream::ts_ungetc( QChar c ) -{ - if ( c.unicode() == 0xffff ) - return; - - d->ungetcBuf.prepend( c ); -} - - - -/*! - Reads \e len bytes from the stream into \e e s and returns a reference to - the stream. - - The buffer \e s must be preallocated. - - Note that no encoding is done by this function. - - \warning The behaviour of this function is undefined unless the - stream's encoding is set to Unicode or Latin1. - - \sa QIODevice::readBlock() -*/ - -QTextStream &QTextStream::readRawBytes( char *s, uint len ) -{ - dev->readBlock( s, len ); - return *this; -} - -/*! - Writes the \e len bytes from \e s to the stream and returns a reference to - the stream. - - Note that no encoding is done by this function. - - \sa QIODevice::writeBlock() -*/ - -QTextStream &QTextStream::writeRawBytes( const char* s, uint len ) -{ - dev->writeBlock( s, len ); - return *this; -} - - -QTextStream &QTextStream::writeBlock( const char* p, uint len ) -{ - if ( doUnicodeHeader ) { - doUnicodeHeader = FALSE; - if ( !mapper && !latin1 ) - ts_putc( QChar::byteOrderMark ); - } - //All QCStrings and const char* are defined to be in Latin1 - if ( !mapper && latin1 ) { - dev->writeBlock( p, len ); - } else if ( !mapper && internalOrder ) { - QChar *u = new QChar[len]; - for (uint i=0; iwriteBlock( (char*)u, len*(int)sizeof(QChar) ); - delete [] u; - } else { - for (uint i=0; iwriteBlock( (char*)p, (int)sizeof(QChar)*len ); - } else { - for (uint i=0; i -
  • All flags are set to 0. -
  • The field width is set to 0. -
  • The fill character is set to ' ' (space). -
  • The precision is set to 6. - - - \sa setf(), width(), fill(), precision() -*/ - -void QTextStream::reset() -{ - fflags = 0; - fwidth = 0; - fillchar = ' '; - fprec = 6; -} - - -/*! - \fn QIODevice *QTextStream::device() const - Returns the IO device currently set. - \sa setDevice(), unsetDevice() -*/ - -/*! - Sets the IO device to \a iod. - \sa device(), unsetDevice() -*/ - -void QTextStream::setDevice( QIODevice *iod ) -{ - if ( owndev ) { - delete dev; - owndev = FALSE; - } - dev = iod; - d->sourceType = QTextStreamPrivate::IODevice; -} - -/*! - Unsets the IO device. Equivalent to setDevice( 0 ). - \sa device(), setDevice() -*/ - -void QTextStream::unsetDevice() -{ - setDevice( 0 ); - d->sourceType = QTextStreamPrivate::NotSet; -} - -/*! - \fn bool QTextStream::atEnd() const - Returns TRUE if the IO device has reached the end position (end of - stream or file) or if there is no IO device set. - - Returns FALSE if the current position of the read/write head of the IO - device is somewhere before the end position. - - \sa QIODevice::atEnd() -*/ - -/*!\fn bool QTextStream::eof() const - - \obsolete - - This function has been renamed to atEnd(). - - \sa QIODevice::atEnd() -*/ - -/***************************************************************************** - QTextStream read functions - *****************************************************************************/ - - -/*! - Reads a \c char from the stream and returns a reference to the stream. - Note that whitespace is skipped. -*/ - -QTextStream &QTextStream::operator>>( char &c ) -{ - CHECK_STREAM_PRECOND - c = eat_ws(); - return *this; -} - -/*! - Reads a \c char from the stream and returns a reference to the stream. - Note that whitespace is \e not skipped. -*/ - -QTextStream &QTextStream::operator>>( QChar &c ) -{ - CHECK_STREAM_PRECOND - c = ts_getc(); - return *this; -} - - -ulong QTextStream::input_bin() -{ - ulong val = 0; - QChar ch = eat_ws(); - int dv = ch.digitValue(); - while ( dv == 0 || dv == 1 ) { - val = ( val << 1 ) + dv; - ch = ts_getc(); - dv = ch.digitValue(); - } - if ( ch != QEOF ) - ts_ungetc( ch ); - return val; -} - -ulong QTextStream::input_oct() -{ - ulong val = 0; - QChar ch = eat_ws(); - int dv = ch.digitValue(); - while ( dv >= 0 && dv <= 7 ) { - val = ( val << 3 ) + dv; - ch = ts_getc(); - dv = ch.digitValue(); - } - if ( dv == 8 || dv == 9 ) { - while ( ts_isdigit(ch) ) - ch = ts_getc(); - } - if ( ch != QEOF ) - ts_ungetc( ch ); - return val; -} - -ulong QTextStream::input_dec() -{ - ulong val = 0; - QChar ch = eat_ws(); - int dv = ch.digitValue(); - while ( ts_isdigit(ch) ) { - val = val * 10 + dv; - ch = ts_getc(); - dv = ch.digitValue(); - } - if ( ch != QEOF ) - ts_ungetc( ch ); - return val; -} - -ulong QTextStream::input_hex() -{ - ulong val = 0; - QChar ch = eat_ws(); - char c = ch; - while ( isxdigit(c) ) { - val <<= 4; - if ( ts_isdigit(c) ) - val += c - '0'; - else - val += 10 + tolower(c) - 'a'; - c = ch = ts_getc(); - } - if ( ch != QEOF ) - ts_ungetc( ch ); - return val; -} - -long QTextStream::input_int() -{ - long val; - QChar ch; - char c; - switch ( flags() & basefield ) { - case bin: - val = (long)input_bin(); - break; - case oct: - val = (long)input_oct(); - break; - case dec: - c = ch = eat_ws(); - if ( ch == QEOF ) { - val = 0; - } else { - if ( !(c == '-' || c == '+') ) - ts_ungetc( ch ); - if ( c == '-' ) { - ulong v = input_dec(); - if ( v ) { // ensure that LONG_MIN can be read - v--; - val = -((long)v) - 1; - } else { - val = 0; - } - } else { - val = (long)input_dec(); - } - } - break; - case hex: - val = (long)input_hex(); - break; - default: - val = 0; - c = ch = eat_ws(); - if ( c == '0' ) { // bin, oct or hex - c = ch = ts_getc(); - if ( tolower(c) == 'x' ) - val = (long)input_hex(); - else if ( tolower(c) == 'b' ) - val = (long)input_bin(); - else { // octal - ts_ungetc( ch ); - if ( c >= '0' && c <= '7' ) { - val = (long)input_oct(); - } else { - val = 0; - } - } - } else if ( ts_isdigit(ch) ) { - ts_ungetc( ch ); - val = (long)input_dec(); - } else if ( c == '-' || c == '+' ) { - ulong v = input_dec(); - if ( c == '-' ) { - if ( v ) { // ensure that LONG_MIN can be read - v--; - val = -((long)v) - 1; - } else { - val = 0; - } - } else { - val = (long)v; - } - } - } - return val; -} - -// -// We use a table-driven FSM to parse floating point numbers -// strtod() cannot be used directly since we're reading from a QIODevice -// - -double QTextStream::input_double() -{ - const int Init = 0; // states - const int Sign = 1; - const int Mantissa = 2; - const int Dot = 3; - const int Abscissa = 4; - const int ExpMark = 5; - const int ExpSign = 6; - const int Exponent = 7; - const int Done = 8; - - const int InputSign = 1; // input tokens - const int InputDigit = 2; - const int InputDot = 3; - const int InputExp = 4; - - static uchar table[8][5] = { - /* None InputSign InputDigit InputDot InputExp */ - { 0, Sign, Mantissa, Dot, 0, }, // Init - { 0, 0, Mantissa, Dot, 0, }, // Sign - { Done, Done, Mantissa, Dot, ExpMark,}, // Mantissa - { 0, 0, Abscissa, 0, 0, }, // Dot - { Done, Done, Abscissa, Done, ExpMark,}, // Abscissa - { 0, ExpSign, Exponent, 0, 0, }, // ExpMark - { 0, 0, Exponent, 0, 0, }, // ExpSign - { Done, Done, Exponent, Done, Done } // Exponent - }; - - int state = Init; // parse state - int input; // input token - - char buf[256]; - int i = 0; - QChar c = eat_ws(); - - while ( TRUE ) { - - switch ( c ) { - case '+': - case '-': - input = InputSign; - break; - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - input = InputDigit; - break; - case '.': - input = InputDot; - break; - case 'e': - case 'E': - input = InputExp; - break; - default: - input = 0; - break; - } - - state = table[state][input]; - - if ( state == 0 || state == Done || i > 250 ) { - if ( i > 250 ) { // ignore rest of digits - do { c = ts_getc(); } while ( c != QEOF && ts_isdigit(c) ); - } - if ( c != QEOF ) - ts_ungetc( c ); - buf[i] = '\0'; - char *end; - return strtod( buf, &end ); - } - - buf[i++] = c; - c = ts_getc(); - } - -#if !defined(_CC_EGG_) - return 0.0; -#endif -} - - -/*! - Reads a signed \c short integer from the stream and returns a reference to - the stream. See flags() for an explanation of expected input format. -*/ - -QTextStream &QTextStream::operator>>( signed short &i ) -{ - CHECK_STREAM_PRECOND - i = (signed short)input_int(); - return *this; -} - - -/*! - Reads an unsigned \c short integer from the stream and returns a reference to - the stream. See flags() for an explanation of expected input format. -*/ - -QTextStream &QTextStream::operator>>( unsigned short &i ) -{ - CHECK_STREAM_PRECOND - i = (unsigned short)input_int(); - return *this; -} - - -/*! - Reads a signed \c int from the stream and returns a reference to the - stream. See flags() for an explanation of expected input format. -*/ - -QTextStream &QTextStream::operator>>( signed int &i ) -{ - CHECK_STREAM_PRECOND - i = (signed int)input_int(); - return *this; -} - - -/*! - Reads an unsigned \c int from the stream and returns a reference to the - stream. See flags() for an explanation of expected input format. -*/ - -QTextStream &QTextStream::operator>>( unsigned int &i ) -{ - CHECK_STREAM_PRECOND - i = (unsigned int)input_int(); - return *this; -} - - -/*! - Reads a signed \c long int from the stream and returns a reference to the - stream. See flags() for an explanation of expected input format. -*/ - -QTextStream &QTextStream::operator>>( signed long &i ) -{ - CHECK_STREAM_PRECOND - i = (signed long)input_int(); - return *this; -} - - -/*! - Reads an unsigned \c long int from the stream and returns a reference to the - stream. See flags() for an explanation of expected input format. -*/ - -QTextStream &QTextStream::operator>>( unsigned long &i ) -{ - CHECK_STREAM_PRECOND - i = (unsigned long)input_int(); - return *this; -} - - -/*! - Reads a \c float from the stream and returns a reference to the stream. - See flags() for an explanation of expected input format. -*/ - -QTextStream &QTextStream::operator>>( float &f ) -{ - CHECK_STREAM_PRECOND - f = (float)input_double(); - return *this; -} - - -/*! - Reads a \c double from the stream and returns a reference to the stream. - See flags() for an explanation of expected input format. -*/ - -QTextStream &QTextStream::operator>>( double &f ) -{ - CHECK_STREAM_PRECOND - f = input_double(); - return *this; -} - - -/*! - Reads a word from the stream and returns a reference to the stream. -*/ - -QTextStream &QTextStream::operator>>( char *s ) -{ - CHECK_STREAM_PRECOND - int maxlen = width( 0 ); - QChar c = eat_ws(); - if ( !maxlen ) - maxlen = -1; - while ( c != QEOF ) { - if ( ts_isspace(c) || maxlen-- == 0 ) { - ts_ungetc( c ); - break; - } - *s++ = c; - c = ts_getc(); - } - - *s = '\0'; - return *this; -} - -/*! - Reads a word from the stream and returns a reference to the stream. -*/ - -QTextStream &QTextStream::operator>>( QString &str ) -{ - CHECK_STREAM_PRECOND - str=QString::fromLatin1(""); - QChar c = eat_ws(); - - while ( c != QEOF ) { - if ( ts_isspace(c) ) { - ts_ungetc( c ); - break; - } - str += c; - c = ts_getc(); - } - return *this; -} - -/*! - Reads a word from the stream and returns a reference to the stream. -*/ - -QTextStream &QTextStream::operator>>( QCString &str ) -{ - CHECK_STREAM_PRECOND - QCString *dynbuf = 0; - const int buflen = 256; - char buffer[buflen]; - char *s = buffer; - int i = 0; - QChar c = eat_ws(); - - while ( c != QEOF ) { - if ( ts_isspace(c) ) { - ts_ungetc( c ); - break; - } - if ( i >= buflen-1 ) { - if ( !dynbuf ) { // create dynamic buffer - dynbuf = new QCString(buflen*2); - memcpy( dynbuf->rawData(), s, i ); // copy old data - } else if ( i >= (int)dynbuf->size()-1 ) { - dynbuf->resize( dynbuf->size()*2 ); - } - s = dynbuf->rawData(); - } - s[i++] = c; - c = ts_getc(); - } - str.resize( i+1 ); - memcpy( str.rawData(), s, i ); - delete dynbuf; - return *this; -} - - -/*! - Reads a line from the stream and returns a string containing the text. - - The returned string does not contain any trailing newline or carriage - return. Note that this is different from QIODevice::readLine(), which - does not strip the newline at the end of the line. - - On EOF you will get a QString that is null. On reading an empty line the - returned QString is empty but not null. - - \sa QIODevice::readLine() -*/ - -QString QTextStream::readLine() -{ -#if defined(CHECK_STATE) - if ( !dev ) { - qWarning( "QTextStream::readLine: No device" ); - return QString::null; - } -#endif - QString result( "" ); - const int buf_size = 256; - QChar c[buf_size]; - int pos = 0; - - c[pos] = ts_getc(); - if ( c[pos] == QEOF ) - return QString::null; - - while ( c[pos] != QEOF && c[pos] != '\n' ) { - pos++; - if ( pos >= buf_size ) { - result += QString( c, pos ); - pos = 0; - } - c[pos] = ts_getc(); - } - result += QString( c, pos ); - - int len = (int)result.length(); - if ( len && result[len-1] == '\r' ) - result.truncate(len-1); // (if there are two \r, let one stay) - - return result; -} - - -/*! - Reads the entire stream and returns a string containing the text. - - \sa QIODevice::readLine() -*/ - -QString QTextStream::read() -{ -#if defined(CHECK_STATE) - if ( !dev ) { - qWarning( "QTextStream::read: No device" ); - return QString::null; - } -#endif - QString result; - const uint bufsize = 512; - QChar buf[bufsize]; - uint i, num, start; - bool skipped_cr = FALSE; - - while ( 1 ) { - num = ts_getbuf(buf,bufsize); - // do a s/\r\n/\n - start = 0; - for ( i=0; i>= 1; - if ( !n ) - break; - } - if ( flags() & showbase ) { // show base - *--p = (flags() & uppercase) ? 'B' : 'b'; - *--p = '0'; - } - break; - - case I_BASE_8: // output octal number - p = &buf[74]; - *p = '\0'; - do { - *--p = (char)(n&7) + '0'; - n >>= 3; - } while ( n ); - if ( flags() & showbase ) - *--p = '0'; - break; - - case I_BASE_16: // output hexadecimal number - p = &buf[74]; - *p = '\0'; - hexdigits = (flags() & uppercase) ? - hexdigits_upper : hexdigits_lower; - do { - *--p = hexdigits[(int)n&0xf]; - n >>= 4; - } while ( n ); - if ( flags() & showbase ) { - *--p = (flags() & uppercase) ? 'X' : 'x'; - *--p = '0'; - } - break; - - default: // decimal base is default - p = &buf[74]; - *p = '\0'; - if ( neg ) - n = (ulong)(-(long)n); - do { - *--p = ((int)(n%10)) + '0'; - n /= 10; - } while ( n ); - if ( neg ) - *--p = '-'; - else if ( flags() & showpos ) - *--p = '+'; - if ( (flags() & internal) && fwidth && !ts_isdigit(*p) ) { - ts_putc( *p ); // special case for internal - ++p; // padding - fwidth--; - return *this << (const char*)p; - } - } - if ( fwidth ) { // adjustment required - if ( !(flags() & left) ) { // but NOT left adjustment - len = qstrlen(p); - int padlen = fwidth - len; - if ( padlen <= 0 ) { // no padding required - writeBlock( p, len ); - } else if ( padlen < (int)(p-buf) ) { // speeds up padding - memset( p-padlen, (char)fillchar, padlen ); - writeBlock( p-padlen, padlen+len ); - } - else // standard padding - *this << (const char*)p; - } - else - *this << (const char*)p; - fwidth = 0; // reset field width - } - else - writeBlock( p, qstrlen(p) ); - return *this; -} - - -/*! - Writes a \c short integer to the stream and returns a reference to - the stream. -*/ - -QTextStream &QTextStream::operator<<( signed short i ) -{ - return output_int( I_SHORT | I_SIGNED, i, i < 0 ); -} - - -/*! - Writes an \c unsigned \c short integer to the stream and returns a reference - to the stream. -*/ - -QTextStream &QTextStream::operator<<( unsigned short i ) -{ - return output_int( I_SHORT | I_UNSIGNED, i, FALSE ); -} - - -/*! - Writes an \c int to the stream and returns a reference to - the stream. -*/ - -QTextStream &QTextStream::operator<<( signed int i ) -{ - return output_int( I_INT | I_SIGNED, i, i < 0 ); -} - - -/*! - Writes an \c unsigned \c int to the stream and returns a reference to - the stream. -*/ - -QTextStream &QTextStream::operator<<( unsigned int i ) -{ - return output_int( I_INT | I_UNSIGNED, i, FALSE ); -} - - -/*! - Writes a \c long \c int to the stream and returns a reference to - the stream. -*/ - -QTextStream &QTextStream::operator<<( signed long i ) -{ - return output_int( I_LONG | I_SIGNED, i, i < 0 ); -} - - -/*! - Writes an \c unsigned \c long \c int to the stream and returns a reference to - the stream. -*/ - -QTextStream &QTextStream::operator<<( unsigned long i ) -{ - return output_int( I_LONG | I_UNSIGNED, i, FALSE ); -} - - -/*! - Writes a \c float to the stream and returns a reference to the stream. -*/ - -QTextStream &QTextStream::operator<<( float f ) -{ - return *this << (double)f; -} - - -/*! - Writes a \c double to the stream and returns a reference to the stream. -*/ - -QTextStream &QTextStream::operator<<( double f ) -{ - CHECK_STREAM_PRECOND - char buf[64]; - char f_char; - char format[16]; - if ( (flags()&floatfield) == fixed ) - f_char = 'f'; - else if ( (flags()&floatfield) == scientific ) - f_char = (flags() & uppercase) ? 'E' : 'e'; - else - f_char = (flags() & uppercase) ? 'G' : 'g'; - char *fs = format; // generate format string - *fs++ = '%'; // "%.l" - *fs++ = '.'; - int prec = precision(); - if ( prec > 99 ) - prec = 99; - if ( prec >= 10 ) { - *fs++ = prec / 10 + '0'; - *fs++ = prec % 10 + '0'; - } else { - *fs++ = prec + '0'; - } - *fs++ = 'l'; - *fs++ = f_char; - *fs = '\0'; - sprintf( buf, format, f ); // convert to text - if ( fwidth ) // padding - *this << (const char*)buf; - else // just write it - writeBlock( buf, qstrlen(buf) ); - return *this; -} - - -/*! - Writes a string to the stream and returns a reference to the stream. - - The string \a s is assumed to be Latin1 encoded independent of the Encoding set - for the QTextStream. -*/ - -QTextStream &QTextStream::operator<<( const char* s ) -{ - CHECK_STREAM_PRECOND - char padbuf[48]; - uint len = qstrlen( s ); // don't write null terminator - if ( fwidth ) { // field width set - int padlen = fwidth - len; - fwidth = 0; // reset width - if ( padlen > 0 ) { - char *ppad; - if ( padlen > 46 ) { // create extra big fill buffer - ppad = new char[padlen]; - CHECK_PTR( ppad ); - } else { - ppad = padbuf; - } - memset( ppad, (char)fillchar, padlen ); // fill with fillchar - if ( !(flags() & left) ) { - writeBlock( ppad, padlen ); - padlen = 0; - } - writeBlock( s, len ); - if ( padlen ) - writeBlock( ppad, padlen ); - if ( ppad != padbuf ) // delete extra big fill buf - delete[] ppad; - return *this; - } - } - writeBlock( s, len ); - return *this; -} - -/*! - Writes \a s to the stream and returns a reference to the stream. - - The string \a s is assumed to be Latin1 encoded independent of the Encoding set - for the QTextStream. -*/ - -QTextStream &QTextStream::operator<<( const QCString & s ) -{ - return operator<<(s.data()); -} - -/*! - Writes \a s to the stream and returns a reference to the stream. -*/ - -QTextStream &QTextStream::operator<<( const QString& s ) -{ - CHECK_STREAM_PRECOND - uint len = s.length(); - QString s1 = s; - if ( fwidth ) { // field width set - if ( !(flags() & left) ) { - s1 = s.rightJustify(fwidth, (char)fillchar); - } else { - s1 = s.leftJustify(fwidth, (char)fillchar); - } - fwidth = 0; // reset width - } - writeBlock( s1.unicode(), len ); - return *this; -} - - -/*! - Writes a pointer to the stream and returns a reference to the stream. - - The \e ptr is output as an unsigned long hexadecimal integer. -*/ - -QTextStream &QTextStream::operator<<( void *ptr ) -{ - int f = flags(); - setf( hex, basefield ); - setf( showbase ); - unsetf( uppercase ); - output_int( I_LONG | I_UNSIGNED, (uintptr_t)ptr, FALSE ); - flags( f ); - return *this; -} - - -/*! - \fn int QTextStream::flags() const - Returns the current stream flags. The default value is 0. - - The meaning of the flags are: -
      -
    • \e skipws - Not currently used - whitespace always skipped -
    • \e left - Numeric fields are left-aligned -
    • \e right - Not currently used (by default numerics are right aligned) -
    • \e internal - Put any padding spaces between +/- and value -
    • \e bin - Output \e and input only in binary -
    • \e oct - Output \e and input only in octal -
    • \e dec - Output \e and input only in decimal -
    • \e hex - Output \e and input only in hexadecimal -
    • \e showbase - Annotate numeric outputs with 0b, 0, or 0x if in - \e bin, \e oct, or \e hex format -
    • \e showpoint - Not currently used -
    • \e uppercase - Use 0B and 0X rather than 0b and 0x -
    • \e showpos - Show + for positive numeric values -
    • \e scientific - Use scientific notation for floating point values -
    • \e fixed - Use fixed-point notation for floating point values -
    - - Note that unless \e bin, \e oct, \e dec, or \e hex is set, the input base is - octal if the value starts with 0, hexadecimal if it starts with 0x, binary - if the value starts with 0b, and decimal otherwise. - - \sa setf(), unsetf() -*/ - -/*! - \fn int QTextStream::flags( int f ) - Sets the stream flags to \e f. - Returns the previous stream flags. - - \sa setf(), unsetf(), flags() -*/ - -/*! - \fn int QTextStream::setf( int bits ) - Sets the stream flag bits \e bits. - Returns the previous stream flags. - - Equivalent to flags( flags() | bits ). - - \sa setf(), unsetf() -*/ - -/*! - \fn int QTextStream::setf( int bits, int mask ) - Sets the stream flag bits \e bits with a bit mask \e mask. - Returns the previous stream flags. - - Equivalent to flags( (flags() & ~mask) | (bits & mask) ). - - \sa setf(), unsetf() -*/ - -/*! - \fn int QTextStream::unsetf( int bits ) - Clears the stream flag bits \e bits. - Returns the previous stream flags. - - Equivalent to flags( flags() & ~mask ). - - \sa setf() -*/ - -/*! - \fn int QTextStream::width() const - Returns the field width. The default value is 0. -*/ - -/*! - \fn int QTextStream::width( int w ) - Sets the field width to \e w. Returns the previous field width. -*/ - -/*! - \fn int QTextStream::fill() const - Returns the fill character. The default value is ' ' (space). -*/ - -/*! - \fn int QTextStream::fill( int f ) - Sets the fill character to \e f. Returns the previous fill character. -*/ - -/*! - \fn int QTextStream::precision() const - Returns the precision. The default value is 6. -*/ - -/*! - \fn int QTextStream::precision( int p ) - Sets the precision to \e p. Returns the previous precision setting. -*/ - - - /***************************************************************************** - QTextStream manipulators - *****************************************************************************/ - -QTextStream &bin( QTextStream &s ) -{ - s.setf(QTS::bin,QTS::basefield); - return s; -} - -QTextStream &oct( QTextStream &s ) -{ - s.setf(QTS::oct,QTS::basefield); - return s; -} - -QTextStream &dec( QTextStream &s ) -{ - s.setf(QTS::dec,QTS::basefield); - return s; -} - -QTextStream &hex( QTextStream &s ) -{ - s.setf(QTS::hex,QTS::basefield); - return s; -} - -QTextStream &endl( QTextStream &s ) -{ - return s << '\n'; -} - -QTextStream &flush( QTextStream &s ) -{ - if ( s.device() ) - s.device()->flush(); - return s; -} - -QTextStream &ws( QTextStream &s ) -{ - s.skipWhiteSpace(); - return s; -} - -QTextStream &reset( QTextStream &s ) -{ - s.reset(); - return s; -} - - -/*! - \class QTextIStream qtextstream.h - \brief A convenience class for input streams. - - For simple tasks, code should be simple. Hence this - class is a shorthand to avoid passing the \e mode argument - to the normal QTextStream constructors. - - This makes it easy for example, to write things like this: -\code - QString data = "123 456"; - int a, b; - QTextIStream(&data) >> a >> b; -\endcode - - \sa QTextOStream -*/ - -/*! - \fn QTextIStream::QTextIStream( QString *s ) - - Constructs a stream to read from string \a s. -*/ -/*! - \fn QTextIStream::QTextIStream( QByteArray ba ) - - Constructs a stream to read from the array \a ba. -*/ -/*! - \fn QTextIStream::QTextIStream( FILE *f ) - - Constructs a stream to read from the file \a f. -*/ - - -/*! - \class QTextOStream qtextstream.h - \brief A convenience class for output streams. - - For simple tasks, code should be simple. Hence this - class is a shorthand to avoid passing the \e mode argument - to the normal QTextStream constructors. - - This makes it easy for example, to write things like this: -\code - QString result; - QTextOStream(&result) << "pi = " << 3.14; -\endcode -*/ - -/*! - \fn QTextOStream::QTextOStream( QString *s ) - - Constructs a stream to write to string \a s. -*/ -/*! - \fn QTextOStream::QTextOStream( QByteArray ba ) - - Constructs a stream to write to the array \a ba. -*/ -/*! - \fn QTextOStream::QTextOStream( FILE *f ) - - Constructs a stream to write to the file \a f. -*/ - - - -/*! - Sets the encoding of this stream to \a e, where \a e is one of: -
      -
    • \c Locale Using local file format (Latin1 if locale is not - set), but autodetecting Unicode(utf16) on input. -
    • \c Unicode Using Unicode(utf16) for input and output. Output - will be written in the order most efficient for the current platform - (i.e. the order used internally in QString). -
    • \c UnicodeUTF8 Using Unicode(utf8) for input and output. If you use it - for input it will autodetect utf16 and use it instead of utf8. -
    • \c Latin1 ISO-8859-1. Will not autodetect utf16. -
    • \c UnicodeNetworkOrder Using network order Unicode(utf16) for - input and output. Useful when reading Unicode data that does not - start with the byte order marker. -
    • \c UnicodeReverse Using reverse network order Unicode(utf16) - for input and output. Useful when reading Unicode data that does not - start with the byte order marker, or writing data that should be - read by buggy Windows applications. -
    • \c RawUnicode Like Unicode, but does not write the byte order - marker, nor does it autodetect the byte order. Only useful when - writing to non-persistent storage used by a single process. -
    - - \c Locale and all Unicode encodings, except \c RawUnicode, will look at - the first two bytes in a input stream to determine the byte order. The - initial byte order marker will be stripped off before data is read. - - Note that this function should be called before any data is read - to/written from the stream. - \sa setCodec() -*/ - -void QTextStream::setEncoding( Encoding e ) -{ - if ( d->sourceType == QTextStreamPrivate::String ) - return; // QString does not need any encoding - switch ( e ) { - case Unicode: - mapper = 0; - latin1 = FALSE; - doUnicodeHeader = TRUE; - internalOrder = TRUE; - break; - case UnicodeUTF8: -#ifndef QT_NO_CODECS - mapper = QTextCodec::codecForMib( 106 ); - latin1 = FALSE; - doUnicodeHeader = TRUE; - internalOrder = TRUE; -#else - mapper = 0; - latin1 = TRUE; - doUnicodeHeader = TRUE; -#endif - break; - case UnicodeNetworkOrder: - mapper = 0; - latin1 = FALSE; - doUnicodeHeader = TRUE; - internalOrder = QChar::networkOrdered(); - break; - case UnicodeReverse: - mapper = 0; - latin1 = FALSE; - doUnicodeHeader = TRUE; - internalOrder = !QChar::networkOrdered(); //reverse network ordered - break; - case RawUnicode: - mapper = 0; - latin1 = FALSE; - doUnicodeHeader = FALSE; - internalOrder = TRUE; - break; - case Locale: - latin1 = TRUE; // fallback to Latin 1 -#ifndef QT_NO_TEXTCODEC - mapper = QTextCodec::codecForLocale(); -#if defined(_OS_WIN32_) - if ( GetACP() == 1252 ) - mapper = 0; // Optimized latin1 processing -#endif - if ( mapper && mapper->mibEnum() == 4 ) -#endif - mapper = 0; // Optimized latin1 processing - doUnicodeHeader = TRUE; // If it reads as Unicode, accept it - break; - case Latin1: - mapper = 0; - doUnicodeHeader = FALSE; - latin1 = TRUE; - break; - } -} - - -#ifndef QT_NO_TEXTCODEC -/*! Sets the codec for this stream to \a codec. Will not try to - autodetect Unicode. - - Note that this function should be called before any data is read - to/written from the stream. - - \sa setEncoding() -*/ - -void QTextStream::setCodec( QTextCodec *codec ) -{ - if ( d->sourceType == QTextStreamPrivate::String ) - return; // QString does not need any codec - mapper = codec; - doUnicodeHeader = FALSE; -} -#endif - -#endif // QT_NO_TEXTSTREAM diff --git a/qtools/qtextstream.h b/qtools/qtextstream.h deleted file mode 100644 index c5f5ba1..0000000 --- a/qtools/qtextstream.h +++ /dev/null @@ -1,351 +0,0 @@ -/**************************************************************************** -** -** -** Definition of QTextStream class -** -** Created : 940922 -** -** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. -** -** This file is part of the tools module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition -** licenses may use this file in accordance with the Qt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#ifndef QTEXTSTREAM_H -#define QTEXTSTREAM_H - -#ifndef QT_H -#include "qiodevice.h" -#include "qstring.h" -#include -#endif // QT_H - -#ifndef QT_NO_TEXTSTREAM -class QTextCodec; -class QTextDecoder; - -class QTextStreamPrivate; - -class Q_EXPORT QTextStream // text stream class -{ -public: - enum Encoding { Locale, Latin1, Unicode, UnicodeNetworkOrder, - UnicodeReverse, RawUnicode, UnicodeUTF8 }; - - void setEncoding( Encoding ); -#ifndef QT_NO_TEXTCODEC - void setCodec( QTextCodec* ); -#endif - - // Encoding encoding() const { return cmode; } - - QTextStream(); - QTextStream( QIODevice * ); - QTextStream( QString*, int mode ); - QTextStream( QString&, int mode ); // obsolete - QTextStream( QByteArray, int mode ); - QTextStream( FILE *, int mode ); - virtual ~QTextStream(); - - QIODevice *device() const; - void setDevice( QIODevice * ); - void unsetDevice(); - - bool atEnd() const; - bool eof() const; - - QTextStream &operator>>( QChar & ); - QTextStream &operator>>( char & ); - QTextStream &operator>>( signed short & ); - QTextStream &operator>>( unsigned short & ); - QTextStream &operator>>( signed int & ); - QTextStream &operator>>( unsigned int & ); - QTextStream &operator>>( signed long & ); - QTextStream &operator>>( unsigned long & ); - QTextStream &operator>>( float & ); - QTextStream &operator>>( double & ); - QTextStream &operator>>( char * ); - QTextStream &operator>>( QString & ); - QTextStream &operator>>( QCString & ); - - QTextStream &operator<<( QChar ); - QTextStream &operator<<( char ); - QTextStream &operator<<( signed short ); - QTextStream &operator<<( unsigned short ); - QTextStream &operator<<( signed int ); - QTextStream &operator<<( unsigned int ); - QTextStream &operator<<( signed long ); - QTextStream &operator<<( unsigned long ); - QTextStream &operator<<( float ); - QTextStream &operator<<( double ); - QTextStream &operator<<( const char* ); - QTextStream &operator<<( const QString & ); - QTextStream &operator<<( const QCString & ); - QTextStream &operator<<( void * ); // any pointer - - QTextStream &readRawBytes( char *, uint len ); - QTextStream &writeRawBytes( const char* , uint len ); - - QString readLine(); - QString read(); - void skipWhiteSpace(); - - enum { - skipws = 0x0001, // skip whitespace on input - left = 0x0002, // left-adjust output - right = 0x0004, // right-adjust output - internal = 0x0008, // pad after sign - bin = 0x0010, // binary format integer - oct = 0x0020, // octal format integer - dec = 0x0040, // decimal format integer - hex = 0x0080, // hex format integer - showbase = 0x0100, // show base indicator - showpoint = 0x0200, // force decimal point (float) - uppercase = 0x0400, // upper-case hex output - showpos = 0x0800, // add '+' to positive integers - scientific= 0x1000, // scientific float output - fixed = 0x2000 // fixed float output - }; - - static const int basefield; // bin | oct | dec | hex - static const int adjustfield; // left | right | internal - static const int floatfield; // scientific | fixed - - int flags() const; - int flags( int f ); - int setf( int bits ); - int setf( int bits, int mask ); - int unsetf( int bits ); - - void reset(); - - int width() const; - int width( int ); - int fill() const; - int fill( int ); - int precision() const; - int precision( int ); - -private: - long input_int(); - void init(); - QTextStream &output_int( int, ulong, bool ); - QIODevice *dev; - bool isNetworkOrder() { return internalOrder == QChar::networkOrdered(); } - - int fflags; - int fwidth; - int fillchar; - int fprec; - bool fstrm; - bool owndev; - QTextCodec *mapper; - QTextStreamPrivate * d; - QChar ungetcBuf; - bool latin1; - bool internalOrder; - bool doUnicodeHeader; - void *reserved_ptr; - - QChar eat_ws(); - void ts_ungetc( QChar ); - QChar ts_getc(); - uint ts_getbuf( QChar*, uint ); - void ts_putc(int); - void ts_putc(QChar); - bool ts_isspace(QChar); - bool ts_isdigit(QChar); - ulong input_bin(); - ulong input_oct(); - ulong input_dec(); - ulong input_hex(); - double input_double(); - QTextStream &writeBlock( const char* p, uint len ); - QTextStream &writeBlock( const QChar* p, uint len ); - -private: // Disabled copy constructor and operator= -#if defined(Q_DISABLE_COPY) - QTextStream( const QTextStream & ); - QTextStream &operator=( const QTextStream & ); -#endif -}; - -typedef QTextStream QTS; - -class Q_EXPORT QTextIStream : public QTextStream { -public: - QTextIStream( QString* s ) : - QTextStream(s,IO_ReadOnly) { } - QTextIStream( QByteArray ba ) : - QTextStream(ba,IO_ReadOnly) { } - QTextIStream( FILE *f ) : - QTextStream(f,IO_ReadOnly) { } -}; - -class Q_EXPORT QTextOStream : public QTextStream { -public: - QTextOStream( QString* s ) : - QTextStream(s,IO_WriteOnly) { } - QTextOStream( QByteArray ba ) : - QTextStream(ba,IO_WriteOnly) { } - QTextOStream( FILE *f ) : - QTextStream(f,IO_WriteOnly) { } -}; - -/***************************************************************************** - QTextStream inline functions - *****************************************************************************/ - -inline QIODevice *QTextStream::device() const -{ return dev; } - -inline bool QTextStream::atEnd() const -{ return dev ? dev->atEnd() : FALSE; } - -inline bool QTextStream::eof() const -{ return atEnd(); } - -inline int QTextStream::flags() const -{ return fflags; } - -inline int QTextStream::flags( int f ) -{ int oldf = fflags; fflags = f; return oldf; } - -inline int QTextStream::setf( int bits ) -{ int oldf = fflags; fflags |= bits; return oldf; } - -inline int QTextStream::setf( int bits, int mask ) -{ int oldf = fflags; fflags = (fflags & ~mask) | (bits & mask); return oldf; } - -inline int QTextStream::unsetf( int bits ) -{ int oldf = fflags; fflags &= ~bits; return oldf; } - -inline int QTextStream::width() const -{ return fwidth; } - -inline int QTextStream::width( int w ) -{ int oldw = fwidth; fwidth = w; return oldw; } - -inline int QTextStream::fill() const -{ return fillchar; } - -inline int QTextStream::fill( int f ) -{ int oldc = fillchar; fillchar = f; return oldc; } - -inline int QTextStream::precision() const -{ return fprec; } - -inline int QTextStream::precision( int p ) -{ int oldp = fprec; fprec = p; return oldp; } - -/*! - Returns one character from the stream, or EOF. -*/ -inline QChar QTextStream::ts_getc() -{ QChar r; return ( ts_getbuf( &r,1 ) == 1 ? r : QChar((ushort)0xffff) ); } - -/***************************************************************************** - QTextStream manipulators - *****************************************************************************/ - -typedef QTextStream & (*QTSFUNC)(QTextStream &);// manipulator function -typedef int (QTextStream::*QTSMFI)(int); // manipulator w/int argument - -class Q_EXPORT QTSManip { // text stream manipulator -public: - QTSManip( QTSMFI m, int a ) { mf=m; arg=a; } - void exec( QTextStream &s ) { (s.*mf)(arg); } -private: - QTSMFI mf; // QTextStream member function - int arg; // member function argument -}; - -Q_EXPORT inline QTextStream &operator>>( QTextStream &s, QTSFUNC f ) -{ return (*f)( s ); } - -Q_EXPORT inline QTextStream &operator<<( QTextStream &s, QTSFUNC f ) -{ return (*f)( s ); } - -Q_EXPORT inline QTextStream &operator<<( QTextStream &s, QTSManip m ) -{ m.exec(s); return s; } - -Q_EXPORT QTextStream &bin( QTextStream &s ); // set bin notation -Q_EXPORT QTextStream &oct( QTextStream &s ); // set oct notation -Q_EXPORT QTextStream &dec( QTextStream &s ); // set dec notation -Q_EXPORT QTextStream &hex( QTextStream &s ); // set hex notation -Q_EXPORT QTextStream &endl( QTextStream &s ); // insert EOL ('\n') -Q_EXPORT QTextStream &flush( QTextStream &s ); // flush output -Q_EXPORT QTextStream &ws( QTextStream &s ); // eat whitespace on input -Q_EXPORT QTextStream &reset( QTextStream &s ); // set default flags - -Q_EXPORT inline QTSManip qSetW( int w ) -{ - QTSMFI func = &QTextStream::width; - return QTSManip(func,w); -} - -Q_EXPORT inline QTSManip qSetFill( int f ) -{ - QTSMFI func = &QTextStream::fill; - return QTSManip(func,f); -} - -Q_EXPORT inline QTSManip qSetPrecision( int p ) -{ - QTSMFI func = &QTextStream::precision; - return QTSManip(func,p); -} - - -#ifndef QT_ALTERNATE_QTSMANIP - -// These will go away in Qt 3.0, as they conflict with std libs -// -// If you get conflicts now, #define QT_ALTERNATE_QTSMANIP before -// including this file. - -Q_EXPORT inline QTSManip setw( int w ) -{ - QTSMFI func = &QTextStream::width; - return QTSManip(func,w); -} - -Q_EXPORT inline QTSManip setfill( int f ) -{ - QTSMFI func = &QTextStream::fill; - return QTSManip(func,f); -} - -Q_EXPORT inline QTSManip setprecision( int p ) -{ - QTSMFI func = &QTextStream::precision; - return QTSManip(func,p); -} -#endif - -#endif // QT_NO_TEXTSTREAM -#endif // QTEXTSTREAM_H diff --git a/qtools/qtl.h b/qtools/qtl.h index bd72e7d..64825e9 100644 --- a/qtools/qtl.h +++ b/qtools/qtl.h @@ -1,5 +1,5 @@ /**************************************************************************** -** +** ** ** Definition of Qt template library classes ** @@ -38,34 +38,9 @@ #define QTL_H #ifndef QT_H -#include "qtextstream.h" #include "qstring.h" #endif // QT_H -#ifndef QT_NO_TEXTSTREAM -template -class QTextOStreamIterator -{ -protected: - QTextOStream& stream; - QString separator; - -public: - QTextOStreamIterator( QTextOStream& s) : stream( s ) {} - QTextOStreamIterator( QTextOStream& s, const QString& sep ) - : stream( s ), separator( sep ) {} - QTextOStreamIterator& operator= ( const T& x ) { - stream << x; - if ( !separator.isEmpty() ) - stream << separator; - return *this; - } - QTextOStreamIterator& operator*() { return *this; } - QTextOStreamIterator& operator++() { return *this; } - QTextOStreamIterator& operator++(int) { return *this; } -}; -#endif //QT_NO_TEXTSTREAM - template inline OutputIterator qCopy( InputIterator _begin, InputIterator _end, OutputIterator _dest ) diff --git a/src/bufstr.h b/src/bufstr.h index ca733ad..fcdce6b 100644 --- a/src/bufstr.h +++ b/src/bufstr.h @@ -19,6 +19,7 @@ #define _BUFSTR_H #include +#include /*! @brief Buffer used to store strings * diff --git a/src/commentcnv.l b/src/commentcnv.l index d3b5362..cacbffa 100644 --- a/src/commentcnv.l +++ b/src/commentcnv.l @@ -29,7 +29,6 @@ #include #include -#include #include #include "bufstr.h" diff --git a/src/commentscan.l b/src/commentscan.l index c17d9f6..89b8052 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -2918,7 +2918,7 @@ static QCString addFormula(yyscan_t yyscanner) struct yyguts_t *yyg = (struct yyguts_t*)yyscanner; QCString formLabel; QCString fText=yyextra->formulaText.simplifyWhiteSpace(); - int id = FormulaManager::instance().addFormula(fText); + int id = FormulaManager::instance().addFormula(fText.str()); formLabel.sprintf("\\_form#%d",id); for (int i=0;iformulaNewLines;i++) formLabel+="@_fakenl"; // add fake newlines to // keep the warnings diff --git a/src/defgen.cpp b/src/defgen.cpp index 514c077..1cb09f5 100644 --- a/src/defgen.cpp +++ b/src/defgen.cpp @@ -36,7 +36,6 @@ #include #include -#include #define DEF_DB(x) diff --git a/src/docbookgen.cpp b/src/docbookgen.cpp index 984d685..4319dda 100644 --- a/src/docbookgen.cpp +++ b/src/docbookgen.cpp @@ -19,7 +19,6 @@ #include #include -#include #include "docbookgen.h" #include "doxygen.h" #include "message.h" diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 70153ab..233861c 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -25,7 +25,6 @@ #include #include #include -#include #include #include diff --git a/src/formula.cpp b/src/formula.cpp index 8ba9729..629af45 100644 --- a/src/formula.cpp +++ b/src/formula.cpp @@ -22,13 +22,13 @@ #include "image.h" #include -#include #include #include #include #include #include +#include // TODO: remove these dependencies #include "doxygen.h" // for Doxygen::indexList @@ -72,50 +72,40 @@ FormulaManager &FormulaManager::instance() void FormulaManager::readFormulas(const char *dir,bool doCompare) { - QFile f(QCString(dir)+"/formula.repository"); - if (f.open(IO_ReadOnly)) // open repository + std::ifstream f(std::string(dir)+"/formula.repository"); + if (f.is_open()) { uint formulaCount=0; msg("Reading formula repository...\n"); - QTextStream t(&f); - QCString line; + std::string line; int lineNr=1; - while (!t.eof()) + while (getline(f,line)) { - line=t.readLine().utf8(); - // old format: \_form#:formula - // new format: \_form#=x:formula - int hi=line.find('#'); - int ei=line.find('='); - int se=line.find(':'); // find name and text separator. - if (hi==-1 || se==-1 || hi>se) + // format: \_form#=x:formula + size_t hi=line.find('#'); + size_t ei=line.find('='); + size_t se=line.find(':'); // find name and text separator. + if (ei==std::string::npos || hi==std::string::npos || se==std::string::npos || hi>se || eise) { warn_uncond("%s/formula.repository is corrupted at line %d!\n",dir,lineNr); break; } else { - QCString formName = line.left(se); - QCString formText = line.right(line.length()-se-1); + std::string formName = line.substr(0,se); // '\_form#=x' part + std::string formText = line.substr(se+1); // 'formula' part int w=-1,h=-1; - if (ei!=-1 && ei>hi && eix' part as int + h=std::stoi(formName.substr(xi+1)); // digits from 'x' part as int } + formName = formName.substr(0,ei); // keep only the '\_form#' part if (doCompare) { - int formId = formName.mid(hi+1,ei-hi-1).toInt(); - QCString storedFormText = FormulaManager::instance().findFormula(formId); + int formId = stoi(formName.substr(hi+1)); + std::string storedFormText = FormulaManager::instance().findFormula(formId); if (storedFormText!=formText) { term("discrepancy between formula repositories! Remove " @@ -123,13 +113,10 @@ void FormulaManager::readFormulas(const char *dir,bool doCompare) } formulaCount++; } - else + int id = addFormula(formText); + if (w!=-1 && h!=-1) { - int id = addFormula(formText); - if (w!=-1 && h!=-1) - { - p->storeDisplaySize(id,w,h); - } + p->storeDisplaySize(id,w,h); } } lineNr++; @@ -476,28 +463,27 @@ void FormulaManager::clear() p->formulaMap.clear(); } -int FormulaManager::addFormula(const char *formulaText) +int FormulaManager::addFormula(const std::string &formulaText) { - std::string key = toStdString(formulaText); - auto it = p->formulaMap.find(key); + auto it = p->formulaMap.find(formulaText); if (it!=p->formulaMap.end()) // already stored { return it->second; } // store new formula int id = (int)p->formulas.size(); - p->formulaMap.insert(std::pair(key,id)); - p->formulas.push_back(key); + p->formulaMap.insert(std::pair(formulaText,id)); + p->formulas.push_back(formulaText); return id; } -QCString FormulaManager::findFormula(int formulaId) const +std::string FormulaManager::findFormula(int formulaId) const { if (formulaId>=0 && formulaId<(int)p->formulas.size()) { - return p->formulas[formulaId].c_str(); + return p->formulas[formulaId]; } - return QCString(); + return std::string(); } bool FormulaManager::hasFormulas() const diff --git a/src/formula.h b/src/formula.h index 4bd90af..686cea2 100644 --- a/src/formula.h +++ b/src/formula.h @@ -1,12 +1,12 @@ /****************************************************************************** * - * + * * * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * @@ -19,6 +19,7 @@ #define FORMULA_H #include +#include #include /*! Manager class to handle formulas */ @@ -36,9 +37,9 @@ class FormulaManager static FormulaManager &instance(); void readFormulas(const char *dir,bool doCompare=false); void clear(); - int addFormula(const char *formulaText); + int addFormula(const std::string &formulaText); void generateImages(const char *outputDir,Format format,HighDPI hd = HighDPI::Off) const; - QCString findFormula(int formulaId) const; + std::string findFormula(int formulaId) const; bool hasFormulas() const; DisplaySize displaySize(int formulaId) const; private: diff --git a/src/index.cpp b/src/index.cpp index 0984ac2..d9eb7ab 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -24,7 +24,6 @@ #include #include -#include #include #include "message.h" diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index cf032d6..3f74da1 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -17,7 +17,6 @@ #include #include -#include #include "xmlgen.h" #include "doxygen.h" -- cgit v0.12