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>

Public Member Functions

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

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 More...
 
static unsigned long readULong (librevenge::RVNGInputStream *stream, int num, unsigned long a, bool inverseRead)
 internal function used to read num byte, More...
 

Protected Member Functions

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

Static Protected Member Functions

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

Protected Attributes

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

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

STOFFInputStream::~STOFFInputStream ( )

destructor

STOFFInputStream::STOFFInputStream ( STOFFInputStream const &  orig)
private

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

bool STOFFInputStream::isEnd ( )

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

Referenced by peek().

bool STOFFInputStream::isStructured ( )

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

int STOFFInputStream::peek ( )

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
bool STOFFInputStream::readColor ( STOFFColor color)

try to read a color

bool STOFFInputStream::readCompressedLong ( long &  res)

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)
staticprotected

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().

unsigned STOFFInputStream::subStreamCount ( )

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

bool STOFFInputStream::m_inverseRead
protected
std::vector<long> STOFFInputStream::m_prevLimits
protected

list of previous limits

Referenced by popLimit(), and pushLimit().

long STOFFInputStream::m_readLimit
protected
long STOFFInputStream::m_streamSize
protected

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

Generated on Sat Jul 29 2017 14:32:45 for libstaroffice by doxygen 1.8.8