STOFFInputStream Class Reference

Internal class used to read the file stream Internal class used to read the file stream, this class adds some usefull functions to the basic librevenge::RVNGInputStream: More...

#include <STOFFInputStream.hxx>

List of all members.

Public Member Functions

 STOFFInputStream (shared_ptr< librevenge::RVNGInputStream > input, bool inverted)
 creates a stream with given endian
 STOFFInputStream (librevenge::RVNGInputStream *input, bool inverted)
 creates a stream with given endian from an existing input
 ~STOFFInputStream ()
 destructor
shared_ptr
< librevenge::RVNGInputStream > 
input ()
 returns the basic librevenge::RVNGInputStream
bool readInverted () const
 returns the endian mode (see constructor)
void setReadInverted (bool newVal)
 sets the endian mode
int seek (long offset, librevenge::RVNG_SEEK_TYPE seekType)
 seeks to a offset position, from actual, beginning or ending position
long tell ()
 returns actual offset position
long size () const
 returns the stream size
bool checkPosition (long pos) const
 checks if a position is or not a valid file position
bool isEnd ()
 returns true if we are at the end of the section/file
void pushLimit (long newLimit)
 defines a new section in the file (from actualPos to newLimit) next call of seek, tell, atEos, ... will be restrained to this section
void popLimit ()
 pops a section defined by pushLimit
int peek ()
 returns the value of the next caracters or -1, but does not increment the position counter
STOFFInputStreamoperator>> (bool &res)
 operator>> for bool
STOFFInputStreamoperator>> (uint8_t &res)
 operator>> for uint8_t
STOFFInputStreamoperator>> (int8_t &res)
 operator>> for int8_t
STOFFInputStreamoperator>> (uint16_t &res)
 operator>> for uint16_t
STOFFInputStreamoperator>> (int16_t &res)
 operator>> for int16_t
STOFFInputStreamoperator>> (uint32_t &res)
 operator>> for uint32_t
STOFFInputStreamoperator>> (int32_t &res)
 operator>> for int32_t
STOFFInputStreamoperator>> (double &res)
 operator>> for double
unsigned long readULong (int num)
 returns a uint8, uint16, uint32 readed from actualPos
long readLong (int num)
 return a int8, int16, int32 readed from actualPos
bool readColor (STOFFColor &color)
 try to read a color
bool readCompressedLong (long &res)
 read a compressed long (pstm.cxx:ReadCompressed)
bool readCompressedULong (unsigned long &res)
 read a compressed unsigned long (sw_sw3imp.cxx Sw3IoImp::InULong)
bool readDouble8 (double &res, bool &isNotANumber)
 try to read a double of size 8: 1.5 bytes exponent, 6.5 bytes mantisse
bool readDoubleReverted8 (double &res, bool &isNotANumber)
 try to read a double of size 8: 6.5 bytes mantisse, 1.5 bytes exponent
bool readDouble10 (double &res, bool &isNotANumber)
 try to read a double of size 10: 2 bytes exponent, 8 bytes mantisse
const uint8_t * read (size_t numBytes, unsigned long &numBytesRead)
 ! reads numbytes data, WITHOUT using any endian or section consideration
bool readDataBlock (long size, librevenge::RVNGBinaryData &data)
 reads a librevenge::RVNGBinaryData with a given size in the actual section/file
bool readEndDataBlock (librevenge::RVNGBinaryData &data)
 reads a librevenge::RVNGBinaryData from actPos to the end of the section/file
bool isStructured ()
 return true if the stream is ole
unsigned subStreamCount ()
 returns the number of substream
std::string subStreamName (unsigned id)
 returns the name of the i^th substream
shared_ptr< STOFFInputStreamgetSubStreamByName (std::string const &name)
 return a new stream for a ole zone
shared_ptr< STOFFInputStreamgetSubStreamById (unsigned id)
 return a new stream for a ole zone
bool hasDataFork () const
 returns true if the data fork block exists

Static Public Member Functions

static shared_ptr
< STOFFInputStream
get (librevenge::RVNGBinaryData const &data, bool inverted)
 returns a new input stream corresponding to a librevenge::RVNGBinaryData
static unsigned long readULong (librevenge::RVNGInputStream *stream, int num, unsigned long a, bool inverseRead)
 internal function used to read num byte,

Protected Member Functions

void updateStreamSize ()
 update the stream size ( must be called in the constructor )

Static Protected Member Functions

static uint8_t readU8 (librevenge::RVNGInputStream *stream)
 internal function used to read a byte

Protected Attributes

shared_ptr
< librevenge::RVNGInputStream > 
m_stream
 the initial input
long m_streamSize
 the stream size
bool m_inverseRead
 big or normal endian
long m_readLimit
 actual section limit (-1 if no limit)
std::vector< long > m_prevLimits
 list of previous limits

Private Member Functions

 STOFFInputStream (STOFFInputStream const &orig)
STOFFInputStreamoperator= (STOFFInputStream const &orig)

Detailed Description

Internal class used to read the file stream Internal class used to read the file stream, this class adds some usefull functions to the basic librevenge::RVNGInputStream:

  • read number (int8, int16, int32) in low or end endian
  • selection of a section of a stream
  • read block of data
  • interface with modified librevenge::RVNGOLEStream

Constructor & Destructor Documentation

STOFFInputStream::STOFFInputStream ( shared_ptr< librevenge::RVNGInputStream >  input,
bool  inverted 
)

creates a stream with given endian

Parameters:
inputthe given input
invertedmust be set to true for pc doc and ole part and to false for mac doc

Referenced by get(), getSubStreamById(), and getSubStreamByName().

STOFFInputStream::STOFFInputStream ( librevenge::RVNGInputStream *  input,
bool  inverted 
)

creates a stream with given endian from an existing input

Note: this functions does not delete input


Member Function Documentation

bool STOFFInputStream::checkPosition ( long  pos) const [inline]

checks if a position is or not a valid file position

Referenced by readColor().

shared_ptr< STOFFInputStream > STOFFInputStream::get ( librevenge::RVNGBinaryData const &  data,
bool  inverted 
) [static]

returns a new input stream corresponding to a librevenge::RVNGBinaryData

shared_ptr< STOFFInputStream > STOFFInputStream::getSubStreamById ( unsigned  id)

return a new stream for a ole zone

shared_ptr< STOFFInputStream > STOFFInputStream::getSubStreamByName ( std::string const &  name)

return a new stream for a ole zone

bool STOFFInputStream::hasDataFork ( ) const [inline]

returns true if the data fork block exists

Referenced by isEnd(), read(), readDataBlock(), readEndDataBlock(), seek(), and tell().

shared_ptr<librevenge::RVNGInputStream> STOFFInputStream::input ( ) [inline]

returns the basic librevenge::RVNGInputStream

returns true if we are at the end of the section/file

Referenced by peek().

return true if the stream is ole

STOFFInputStream& STOFFInputStream::operator= ( STOFFInputStream const &  orig) [private]
STOFFInputStream& STOFFInputStream::operator>> ( bool &  res) [inline]

operator>> for bool

STOFFInputStream& STOFFInputStream::operator>> ( uint8_t &  res) [inline]

operator>> for uint8_t

STOFFInputStream& STOFFInputStream::operator>> ( int8_t &  res) [inline]

operator>> for int8_t

STOFFInputStream& STOFFInputStream::operator>> ( uint16_t &  res) [inline]

operator>> for uint16_t

STOFFInputStream& STOFFInputStream::operator>> ( int16_t &  res) [inline]

operator>> for int16_t

STOFFInputStream& STOFFInputStream::operator>> ( uint32_t &  res) [inline]

operator>> for uint32_t

STOFFInputStream& STOFFInputStream::operator>> ( int32_t &  res) [inline]

operator>> for int32_t

STOFFInputStream& STOFFInputStream::operator>> ( double &  res) [inline]

operator>> for double

returns the value of the next caracters or -1, but does not increment the position counter

void STOFFInputStream::popLimit ( ) [inline]

pops a section defined by pushLimit

void STOFFInputStream::pushLimit ( long  newLimit) [inline]

defines a new section in the file (from actualPos to newLimit) next call of seek, tell, atEos, ... will be restrained to this section

const uint8_t * STOFFInputStream::read ( size_t  numBytes,
unsigned long &  numBytesRead 
)

! reads numbytes data, WITHOUT using any endian or section consideration

Returns:
a pointer to the read elements

try to read a color

read a compressed long (pstm.cxx:ReadCompressed)

bool STOFFInputStream::readCompressedULong ( unsigned long &  res)

read a compressed unsigned long (sw_sw3imp.cxx Sw3IoImp::InULong)

bool STOFFInputStream::readDataBlock ( long  size,
librevenge::RVNGBinaryData &  data 
)

reads a librevenge::RVNGBinaryData with a given size in the actual section/file

Referenced by readEndDataBlock().

bool STOFFInputStream::readDouble10 ( double &  res,
bool &  isNotANumber 
)

try to read a double of size 10: 2 bytes exponent, 8 bytes mantisse

bool STOFFInputStream::readDouble8 ( double &  res,
bool &  isNotANumber 
)

try to read a double of size 8: 1.5 bytes exponent, 6.5 bytes mantisse

bool STOFFInputStream::readDoubleReverted8 ( double &  res,
bool &  isNotANumber 
)

try to read a double of size 8: 6.5 bytes mantisse, 1.5 bytes exponent

Referenced by operator>>().

bool STOFFInputStream::readEndDataBlock ( librevenge::RVNGBinaryData &  data)

reads a librevenge::RVNGBinaryData from actPos to the end of the section/file

bool STOFFInputStream::readInverted ( ) const [inline]

returns the endian mode (see constructor)

long STOFFInputStream::readLong ( int  num)

return a int8, int16, int32 readed from actualPos

Referenced by operator>>().

uint8_t STOFFInputStream::readU8 ( librevenge::RVNGInputStream *  stream) [static, protected]

internal function used to read a byte

Referenced by readULong().

unsigned long STOFFInputStream::readULong ( int  num) [inline]

returns a uint8, uint16, uint32 readed from actualPos

Referenced by operator>>(), peek(), readColor(), readCompressedLong(), readCompressedULong(), readDouble10(), readDouble8(), readDoubleReverted8(), readLong(), and readULong().

unsigned long STOFFInputStream::readULong ( librevenge::RVNGInputStream *  stream,
int  num,
unsigned long  a,
bool  inverseRead 
) [static]

internal function used to read num byte,

  • where a is the previous read data
int STOFFInputStream::seek ( long  offset,
librevenge::RVNG_SEEK_TYPE  seekType 
)

seeks to a offset position, from actual, beginning or ending position

Returns:
0 if ok
See also:
pushLimit popLimit

Referenced by getSubStreamById(), getSubStreamByName(), operator>>(), peek(), readDouble10(), and STOFFInputStream().

void STOFFInputStream::setReadInverted ( bool  newVal) [inline]

sets the endian mode

long STOFFInputStream::size ( ) const [inline]

returns the stream size

Referenced by isEnd(), readDataBlock(), readEndDataBlock(), and seek().

returns the number of substream

std::string STOFFInputStream::subStreamName ( unsigned  id)

returns the name of the i^th substream

void STOFFInputStream::updateStreamSize ( ) [protected]

update the stream size ( must be called in the constructor )

Referenced by STOFFInputStream().


Member Data Documentation

std::vector<long> STOFFInputStream::m_prevLimits [protected]

list of previous limits

Referenced by popLimit(), and pushLimit().


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