This is the verbatim text of the qtstream.h include file. It is is provided only for illustration; the copyright remains with Troll Tech.
/****************************************************************************
** $Id: qtstream.h,v 1.6 1995/02/21 15:41:06 hanord Exp $
**
** Definition of QTextStream class
**
** Author : Haavard Nord
** Created : 940922
**
** Copyright (C) 1994,1995 by Troll Tech AS. All rights reserved.
**
*****************************************************************************/
#ifndef QTSTREAM_H
#define QTSTREAM_H
#include "qiodev.h"
#include <stdio.h>
class QTextStream // text stream class
{
public:
QTextStream();
QTextStream( QIODevice * );
QTextStream( FILE * );
virtual ~QTextStream();
QIODevice *device() const; // get current stream device
void setDevice( QIODevice * ); // set stream device
void unsetDevice(); // set NULL stream device
bool eos() const; // end of stream data?
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<<( 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<<( void * ); // any pointer
QTextStream &readRawBytes( char *, uint len );
QTextStream &writeRawBytes( const char *, uint len );
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 long basefield; // bin | oct | dec | hex
static const long adjustfield; // left | right | internal
static const long floatfield; // scientific | fixed
long flags() const; // get/set flags
long flags( long f );
long setf( long bits );
long setf( long bits, long mask );
long unsetf( long bits );
void reset(); // set default flags
int width() const; // get/set field width
int width( int );
int fill() const; // get/set fill char
int fill( int );
int precision() const; // get/set float precision
int precision( int );
private:
long input_int();
QTextStream &output_int( int, ulong, bool );
QIODevice *dev; // I/O device
long fflags; // formatting flags
int fwidth; // field width
int fillchar; // fill char
int fprec; // float precision
bool fstrm; // using file stream (cheat flag)
bool owndev; // self-created device
};
typedef QTextStream QTS;
// --------------------------------------------------------------------------
// QTextStream inline functions
//
inline QIODevice *QTextStream::device() const
{ return dev; }
inline bool QTextStream::eos() const
{ return dev ? dev->atEnd() : TRUE; }
inline long QTextStream::flags() const
{ return fflags; }
inline long QTextStream::flags( long newf )
{ long f = fflags; fflags = newf; return f; }
inline long QTextStream::setf( long bits )
{ long f = fflags; fflags |= bits; return f; }
inline long QTextStream::setf( long bits, long mask )
{ long f = fflags; fflags = (fflags & ~mask) | (bits & mask); return f; }
inline long QTextStream::unsetf( long mask )
{ long f = fflags; fflags &= ~mask; return f; }
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; }
// --------------------------------------------------------------------------
// QTextStream manipulators
//
typedef QTextStream & (*QTSFUNC)(QTextStream &);// manipulator function
typedef int (QTextStream::*QTSMFI)(int); // manipulator w/int argument
class 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
};
inline QTextStream &operator>>( QTextStream &s, QTSFUNC f )
{ return (*f)( s ); }
inline QTextStream &operator<<( QTextStream &s, QTSFUNC f )
{ return (*f)( s ); }
inline QTextStream &operator<<( QTextStream &s, QTSManip m )
{ m.exec(s); return s; }
QTextStream &bin( QTextStream &s ); // set bin notation
QTextStream &oct( QTextStream &s ); // set oct notation
QTextStream &dec( QTextStream &s ); // set dec notation
QTextStream &hex( QTextStream &s ); // set hex notation
QTextStream &endl( QTextStream &s ); // insert EOL ('\n')
QTextStream &flush( QTextStream &s ); // flush output
QTextStream &ws( QTextStream &s ); // eat whitespace on input
QTextStream &reset( QTextStream &s ); // set default flags
inline QTSManip setw( int w )
{ return QTSManip(QTextStream::width,w); }
inline QTSManip setfill( int f )
{ return QTSManip(QTextStream::fill,f); }
inline QTSManip setprecision( int p )
{ return QTSManip(QTextStream::precision,p); }
#endif // QTSTREAM_H