libUTL++
utl::Stream Class Referenceabstract

Stream I/O abstraction. More...

#include <Stream.h>

Inheritance diagram for utl::Stream:

Public Member Functions

virtual void copy (const Object &rhs)
 Copy another instance. More...
 
virtual void close ()=0
 Close the stream. More...
 
virtual Streamflush (uint_t mode=io_wr)
 Flush the stream (if it is buffered). More...
 
Accessors
bool isOwner () const
 Get the owner flag. More...
 
void setOwner (bool owner)
 Set the owner flag. More...
 
size_t getInputCount () const
 Get the count of input bytes. More...
 
size_t getOutputCount () const
 Get the count of output bytes. More...
 
uint_t getMode () const
 Get the current mode. More...
 
const StringgetName () const
 Get the stream's name. More...
 
const StringgetNamePtr () const
 Get the stream's name. More...
 
void setName (const String &name)
 Set the name. More...
 
void setName (String *name)
 Set the name. More...
 
virtual bool isBOL () const
 Get the begin-of-line flag. More...
 
virtual void setBOL (bool p_bol)
 Set the BOL flag. More...
 
virtual bool isInput () const
 Determine whether the stream is an input stream. More...
 
virtual void setInput (bool input)
 Set the input mode flag. More...
 
virtual bool isOutput () const
 Determine whether the stream is an output stream. More...
 
virtual void setOutput (bool output)
 Set the output mode flag. More...
 
bool isRDWR () const
 Determine whether the stream is an input/output stream. More...
 
void setBase (uint_t base)
 Set the base, for writing integer values. More...
 
void setMode (uint_t mode)
 Set the mode. More...
 
Output
Streamput (byte_t b)
 Write the given character. More...
 
Streamput (char c)
 Write the given character. More...
 
Streamput (int c)
 Write the given character. More...
 
Streamput (const char *str)
 Write the given string. More...
 
Streamput (const char *str, size_t len)
 Write the given string. More...
 
StreamputBit (bool b)
 Write the given bit. More...
 
StreamputBits ()
 Write all outstanding bits. More...
 
StreamputBits (uint32_t n, uint_t numBits)
 Write multiple bits. More...
 
virtual Streamnewline ()
 Write a newline. More...
 
StreamputLine (const char *str)
 Write the given string, followed by a newline. More...
 
void writeSpaces (size_t num)
 Write spaces. More...
 
virtual void write (const byte_t *array, size_t num)=0
 Write a sequence of bytes. More...
 
I/O Operators
Streamoperator<< (smanip0 manip)
 Execute a manipulator (e.g. More...
 
Streamoperator<< (void *ptr)
 Write a void pointer. More...
 
Streamoperator<< (const char *str)
 Write a string. More...
 
Streamoperator<< (char c)
 
Streamoperator>> (char &c)
 
Streamoperator<< (byte_t b)
 
Streamoperator>> (byte_t &b)
 
Streamoperator<< (int16_t n)
 
Streamoperator>> (int16_t &n)
 
Streamoperator<< (uint16_t n)
 
Streamoperator>> (uint16_t &n)
 
Streamoperator<< (int32_t n)
 
Streamoperator>> (int32_t &n)
 
Streamoperator<< (uint32_t n)
 
Streamoperator>> (uint32_t &n)
 
Streamoperator<< (long n)
 
Streamoperator>> (long &n)
 
Streamoperator<< (ulong_t n)
 
Streamoperator>> (ulong_t &n)
 
Streamoperator<< (double n)
 
Streamoperator>> (double &n)
 
- Public Member Functions inherited from utl::Object
void clear ()
 Revert to initial state. More...
 
virtual int compare (const Object &rhs) const
 Compare with another object. More...
 
virtual void vclone (const Object &rhs)
 Make an exact copy of another instance. More...
 
virtual void steal (Object &rhs)
 "Steal" the internal representation from another instance. More...
 
virtual void dump (Stream &os, uint_t level=uint_t_max) const
 Dump a human-readable representation of self to the given output stream. More...
 
void dumpWithClassName (Stream &os, uint_t indent=4, uint_t level=uint_t_max) const
 Front-end for dump() that prints the object's class name. More...
 
virtual const ObjectgetKey () const
 Get the key for this object. More...
 
bool hasKey () const
 Determine whether or not the object has a key. More...
 
virtual const ObjectgetProxiedObject () const
 Get the proxied object (= self if none). More...
 
virtual ObjectgetProxiedObject ()
 Get the proxied object (= self if none). More...
 
virtual size_t hash (size_t size) const
 Get the hash code for the object. More...
 
bool _isA (const RunTimeClass *runTimeClass) const
 Determine whether self's class is a descendent of the given class. More...
 
virtual String toString () const
 Return a string representation of self. More...
 
 operator String () const
 Conversion to String. More...
 
size_t allocatedSize () const
 Get the total allocated size of this object. More...
 
virtual size_t innerAllocatedSize () const
 Get the "inner" allocated size. More...
 
virtual void addOwnedIt (const class FwdIt *it) const
 Notify self that it owns the given iterator. More...
 
virtual void removeOwnedIt (const class FwdIt *it) const
 Notify self that the given owned iterator has been destroyed. More...
 
bool operator< (const Object &rhs) const
 Less-than operator. More...
 
bool operator<= (const Object &rhs) const
 Less-than-or-equal-to operator. More...
 
bool operator> (const Object &rhs) const
 Greater-than operator. More...
 
bool operator>= (const Object &rhs) const
 Greater-than-or-equal-to operator. More...
 
bool operator== (const Object &rhs) const
 Equal-to operator. More...
 
bool operator!= (const Object &rhs) const
 Unequal-to operator. More...
 
void serializeIn (Stream &is, uint_t mode=ser_default)
 Serialize from an input stream. More...
 
void serializeOut (Stream &os, uint_t mode=ser_default) const
 Serialize to an output stream. More...
 
virtual void serialize (Stream &stream, uint_t io, uint_t mode=ser_default)
 Serialize to or from a stream. More...
 
void serializeOutBoxed (Stream &os, uint_t mode=ser_default) const
 Serialize a boxed object to an output stream. More...
 

Auto-Indentation

uint_t getIndent () const
 Get the indentation level. More...
 
void setIndent (uint_t indent)
 Set the indentation level. More...
 
void indent (uint_t num=4)
 Increase indentation by the given number of spaces. More...
 
void unindent (uint_t num=4)
 Decrease indentation by the given number of spaces. More...
 
void indentIfBOL ()
 If begin-of-line flag is true, clear the flag and indent. More...
 
void _indentIfBOL ()
 Write _indent spaces at beginning of line. More...
 

Error Conditions

void checkOK ()
 If there is an error condition (error()), throw StreamErrorEx. More...
 
void clearEOF ()
 Clear the EOF condition. More...
 
void clearError ()
 Clear the error condition. More...
 
virtual bool eof () const
 Determine whether an EOF condition exists. More...
 
virtual void setEOF (bool p_eof)
 Set the EOF flag. More...
 
virtual bool error () const
 Determine whether an error condition exists. More...
 
virtual void setError (bool p_error)
 Set the error flag. More...
 
bool ok () const
 Determine whether an error condition exists. More...
 
void throwStreamEOFex ()
 Throw a StreamEOFex exception. More...
 
void throwStreamErrorEx ()
 Throw a StreamErrorEx exception. More...
 

Input

size_t copyData (Stream &in, size_t numBytes=size_t_max, size_t bufSize=KB(4))
 Copy data from another stream. More...
 
void get (byte_t &b)
 Get a single byte. More...
 
void get (char &c)
 Get a single char. More...
 
byte_t get ()
 Get a single byte. More...
 
bool getBit ()
 Get a single bit. More...
 
uint32_t getBits (uint_t numBits)
 Get multiple bits. More...
 
virtual StreamreadLine (String &str)
 Read a line from stream into the given String object. More...
 
virtual size_t read (byte_t *array, size_t maxBytes, size_t minBytes=size_t_max)=0
 Read data into a given buffer. More...
 
void readToken (char *buf, size_t size)
 Read a token from the stream. More...
 
void readUntilWS (char *buf, size_t size)
 Read until a whitespace character is encountered. More...
 
byte_t skipWS ()
 Skip past whitespace. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from utl::Object
static ObjectserializeInNullable (Stream &is, uint_t mode=ser_default)
 Serialize a nullptr-able object from an input stream. More...
 
static void serializeOutNullable (const Object *object, Stream &os, uint_t mode=ser_default)
 Serialize a nullptr-able object to an output stream. More...
 
static void serializeNullable (Object *&object, Stream &stream, uint_t io, uint_t mode=ser_default)
 Serialize a nullptr-able object to or from a stream. More...
 
static ObjectserializeInBoxed (Stream &is, uint_t mode=ser_default)
 Serialize a boxed object from an input stream. More...
 
static void serializeBoxed (Object *&object, Stream &stream, uint_t io, uint_t mode=ser_default)
 Serialize a boxed object to or from a stream. More...
 
- Protected Member Functions inherited from utl::FlagsMI
 FlagsMI ()
 Constructor. More...
 
virtual ~FlagsMI ()
 Destructor. More...
 
void copyFlags (const FlagsMI &rhs)
 Copy the given flags. More...
 
void copyFlags (const FlagsMI &rhs, uint_t lsb, uint_t msb)
 Copy (some of) the given flags. More...
 
void copyFlags (uint64_t flags, uint_t lsb, uint_t msb)
 Copy (some of) the given flags. More...
 
bool getFlag (uint_t flagNum) const
 Get a user-defined flag. More...
 
void setFlag (uint_t flagNum, bool val)
 Set a user-defined flag. More...
 
uint64_t getFlagsNumber (uint64_t mask, uint64_t shift=0)
 Get a multi-bit value in the flags data (which is stored as one 64-bit integer). More...
 
void setFlagsNumber (uint64_t mask, uint64_t shift, uint64_t num)
 Set a multi-bit value in the flags data (which is stored as one 64-bit integer). More...
 
uint64_t getFlags () const
 Get the flags. More...
 
void setFlags (uint64_t flags)
 Set the flags. More...
 

Detailed Description

Stream I/O abstraction.

A stream is anything you want to read data from or write data to. For example, a disk file is a stream and so is a TCP socket.

Attributes

  • begin-of-line flag : If true, indicates that the last character written to the stream was a newline.
  • lineBuffered flag : For a line-buffered stream, the utl::endl manipulator will flush the stream's output.
  • base : When an integer is written to the stream, it will be shown in the given base (10 by default).
  • name : A stream's name is sometimes useful to know. For example, for an FileStream, the name should be the path to the open file. For a Socket, the name should be the FQDN/IP address of the other end. This allows exceptions on the stream to be more informative.
  • inCount : Count of input bytes.
  • outCount : Count of output bytes.
  • indent : Indent each output line by indent spaces.
Author
Adam McKee

Definition at line 68 of file Stream.h.

Member Function Documentation

◆ copy()

virtual void utl::Stream::copy ( const Object rhs)
virtual

Copy another instance.

When you override copy(), you should usually call the superclass's copy().

Parameters
rhsobject to copy

Reimplemented from utl::Object.

Reimplemented in utl::BufferedStream, and utl::IOmux.

◆ close()

virtual void utl::Stream::close ( )
pure virtual

◆ isOwner()

bool utl::Stream::isOwner ( ) const
inline

Get the owner flag.

Definition at line 82 of file Stream.h.

◆ setOwner()

void utl::Stream::setOwner ( bool  owner)
inline

Set the owner flag.

Definition at line 89 of file Stream.h.

◆ getInputCount()

size_t utl::Stream::getInputCount ( ) const
inline

Get the count of input bytes.

Definition at line 96 of file Stream.h.

◆ getOutputCount()

size_t utl::Stream::getOutputCount ( ) const
inline

Get the count of output bytes.

Definition at line 103 of file Stream.h.

◆ getMode()

uint_t utl::Stream::getMode ( ) const
inline

Get the current mode.

Definition at line 110 of file Stream.h.

References utl::io_rd, and utl::io_wr.

◆ getName()

const String& utl::Stream::getName ( ) const

Get the stream's name.

◆ getNamePtr()

const String* utl::Stream::getNamePtr ( ) const

Get the stream's name.

◆ setName() [1/2]

void utl::Stream::setName ( const String name)

Set the name.

◆ setName() [2/2]

void utl::Stream::setName ( String name)

Set the name.

◆ isBOL()

virtual bool utl::Stream::isBOL ( ) const
virtual

Get the begin-of-line flag.

◆ setBOL()

virtual void utl::Stream::setBOL ( bool  p_bol)
virtual

Set the BOL flag.

◆ isInput()

virtual bool utl::Stream::isInput ( ) const
virtual

Determine whether the stream is an input stream.

Reimplemented in utl::BufferedStream.

◆ setInput()

virtual void utl::Stream::setInput ( bool  input)
virtual

Set the input mode flag.

Reimplemented in utl::BufferedStream.

◆ isOutput()

virtual bool utl::Stream::isOutput ( ) const
virtual

Determine whether the stream is an output stream.

Reimplemented in utl::BufferedStream.

◆ setOutput()

virtual void utl::Stream::setOutput ( bool  output)
virtual

Set the output mode flag.

Reimplemented in utl::BufferedStream.

◆ isRDWR()

bool utl::Stream::isRDWR ( ) const
inline

Determine whether the stream is an input/output stream.

Definition at line 150 of file Stream.h.

◆ setBase()

void utl::Stream::setBase ( uint_t  base)
inline

Set the base, for writing integer values.

Definition at line 157 of file Stream.h.

◆ setMode()

void utl::Stream::setMode ( uint_t  mode)
inline

Set the mode.

Parameters
modeI/O mode (see utl::io_t)

Definition at line 167 of file Stream.h.

References utl::io_rd, and utl::io_wr.

◆ getIndent()

uint_t utl::Stream::getIndent ( ) const
inline

Get the indentation level.

Definition at line 178 of file Stream.h.

◆ setIndent()

void utl::Stream::setIndent ( uint_t  indent)
inline

Set the indentation level.

Definition at line 185 of file Stream.h.

◆ indent()

void utl::Stream::indent ( uint_t  num = 4)
inline

Increase indentation by the given number of spaces.

Definition at line 192 of file Stream.h.

◆ unindent()

void utl::Stream::unindent ( uint_t  num = 4)
inline

Decrease indentation by the given number of spaces.

Definition at line 199 of file Stream.h.

References utl::KB(), and utl::size_t_max.

◆ checkOK()

void utl::Stream::checkOK ( )

If there is an error condition (error()), throw StreamErrorEx.

If there is an EOF condition (eof()), throw StreamEOFex.

◆ clearEOF()

void utl::Stream::clearEOF ( )

Clear the EOF condition.

◆ clearError()

void utl::Stream::clearError ( )

Clear the error condition.

◆ eof()

virtual bool utl::Stream::eof ( ) const
virtual

Determine whether an EOF condition exists.

Reimplemented in utl::BufferedStream.

◆ setEOF()

virtual void utl::Stream::setEOF ( bool  p_eof)
virtual

Set the EOF flag.

Reimplemented in utl::BufferedStream.

◆ error()

virtual bool utl::Stream::error ( ) const
virtual

Determine whether an error condition exists.

Reimplemented in utl::BufferedStream.

◆ setError()

virtual void utl::Stream::setError ( bool  p_error)
virtual

Set the error flag.

Reimplemented in utl::BufferedStream.

◆ ok()

bool utl::Stream::ok ( ) const

Determine whether an error condition exists.

◆ copyData()

size_t utl::Stream::copyData ( Stream in,
size_t  numBytes = size_t_max,
size_t  bufSize = KB(4) 
)

Copy data from another stream.

Returns
number of bytes successfully copied
Parameters
ininput stream
numBytesnumber of bytes to copy
bufSizebuffer size

◆ get() [1/3]

void utl::Stream::get ( byte_t b)
inline

Get a single byte.

Parameters
bbyte reference

Definition at line 254 of file Stream.h.

◆ get() [2/3]

void utl::Stream::get ( char &  c)
inline

Get a single char.

Parameters
cchar reference

Definition at line 264 of file Stream.h.

◆ get() [3/3]

byte_t utl::Stream::get ( )
inline

Get a single byte.

Returns
byte

Definition at line 274 of file Stream.h.

◆ getBit()

bool utl::Stream::getBit ( )
inline

Get a single bit.

Returns
true if bit == 1, false if bit == 0

Definition at line 286 of file Stream.h.

◆ getBits()

uint32_t utl::Stream::getBits ( uint_t  numBits)
inline

Get multiple bits.

Returns
32-bit word (bit 0 = last bit)
Parameters
numBitsnumber of bits to read

Definition at line 301 of file Stream.h.

References ASSERTD, and utl::size_t_max.

◆ readLine()

virtual Stream& utl::Stream::readLine ( String str)
virtual

Read a line from stream into the given String object.

Reimplemented in utl::BufferedStream.

◆ read()

virtual size_t utl::Stream::read ( byte_t array,
size_t  maxBytes,
size_t  minBytes = size_t_max 
)
pure virtual

Read data into a given buffer.

Returns
number of bytes read
Parameters
arraybuffer to read into
maxBytesmaximum number of bytes to read
minBytes(optional : maxBytes) minimum number of bytes to read

Implemented in utl::BufferedStream, utl::IOmux, utl::FDstream, utl::MemStream, and utl::SSLsocket.

◆ put() [1/5]

Stream& utl::Stream::put ( byte_t  b)
inline

Write the given character.

Definition at line 330 of file Stream.h.

References ASSERTD.

Referenced by utl::endl().

◆ put() [2/5]

Stream& utl::Stream::put ( char  c)
inline

Write the given character.

Definition at line 339 of file Stream.h.

◆ put() [3/5]

Stream& utl::Stream::put ( int  c)
inline

Write the given character.

Definition at line 352 of file Stream.h.

◆ put() [4/5]

Stream& utl::Stream::put ( const char *  str)

Write the given string.

◆ put() [5/5]

Stream& utl::Stream::put ( const char *  str,
size_t  len 
)

Write the given string.

◆ putBit()

Stream& utl::Stream::putBit ( bool  b)
inline

Write the given bit.

Definition at line 365 of file Stream.h.

◆ putBits() [1/2]

Stream& utl::Stream::putBits ( )
inline

Write all outstanding bits.

Definition at line 380 of file Stream.h.

◆ putBits() [2/2]

Stream& utl::Stream::putBits ( uint32_t  n,
uint_t  numBits 
)
inline

Write multiple bits.

Parameters
nbits to write (bit 0 is last bit)
numBitsnumber of bits

Definition at line 392 of file Stream.h.

◆ newline()

virtual Stream& utl::Stream::newline ( )
inlinevirtual

Write a newline.

Reimplemented in utl::BufferedStream.

Definition at line 405 of file Stream.h.

Referenced by utl::endlf().

◆ putLine()

Stream& utl::Stream::putLine ( const char *  str)
inline

Write the given string, followed by a newline.

Definition at line 414 of file Stream.h.

◆ writeSpaces()

void utl::Stream::writeSpaces ( size_t  num)

Write spaces.

◆ write()

virtual void utl::Stream::write ( const byte_t array,
size_t  num 
)
pure virtual

Write a sequence of bytes.

Parameters
arraydata to write
numnumber of bytes to write

Implemented in utl::BufferedStream, utl::IOmux, utl::FDstream, utl::MemStream, and utl::SSLsocket.

◆ flush()

virtual Stream& utl::Stream::flush ( uint_t  mode = io_wr)
inlinevirtual

Flush the stream (if it is buffered).

Parameters
modesee utl::io_t

Reimplemented in utl::BufferedStream.

Definition at line 436 of file Stream.h.

Referenced by utl::endlf(), and utl::flush().

◆ operator<<() [1/3]

Stream& utl::Stream::operator<< ( smanip0  manip)
inline

Execute a manipulator (e.g.

endl, endlf, flush).

Definition at line 444 of file Stream.h.

References operator<<(), and operator>>().

◆ operator<<() [2/3]

Stream& utl::Stream::operator<< ( void *  ptr)

Write a void pointer.

◆ operator<<() [3/3]

Stream& utl::Stream::operator<< ( const char *  str)

Write a string.

◆ indentIfBOL()

void utl::Stream::indentIfBOL ( )
inlineprotected

If begin-of-line flag is true, clear the flag and indent.

Definition at line 527 of file Stream.h.

◆ _indentIfBOL()

void utl::Stream::_indentIfBOL ( )
inlineprotected

Write _indent spaces at beginning of line.

Definition at line 536 of file Stream.h.

References utl::deInit(), and utl::init().

◆ throwStreamEOFex()

void utl::Stream::throwStreamEOFex ( )
protected

Throw a StreamEOFex exception.

◆ throwStreamErrorEx()

void utl::Stream::throwStreamErrorEx ( )
protected

Throw a StreamErrorEx exception.

◆ readToken()

void utl::Stream::readToken ( char *  buf,
size_t  size 
)
protected

Read a token from the stream.

Parameters
buftoken buffer
sizesize of buffer

◆ readUntilWS()

void utl::Stream::readUntilWS ( char *  buf,
size_t  size 
)
protected

Read until a whitespace character is encountered.

The whitespace character will be put back into the input buffer.

Parameters
bufbuffer to read into
sizesize of buffer

◆ skipWS()

byte_t utl::Stream::skipWS ( )
protected

Skip past whitespace.


The documentation for this class was generated from the following file: