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 (std::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
 
std::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
 
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
 
std::shared_ptr< STOFFInputStreamgetSubStreamByName (std::string const &name)
 return a new stream for a ole zone
 
std::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 std::shared_ptr< STOFFInputStreamget (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

std::shared_ptr< librevenge::RVNGInputStream > m_stream
 the initial input
 
long m_streamSize
 the stream size
 
bool m_inverseRead
 big or normal endian
 

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() [1/3]

STOFFInputStream::STOFFInputStream ( std::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

◆ STOFFInputStream() [2/3]

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::~STOFFInputStream ( )

destructor

◆ STOFFInputStream() [3/3]

STOFFInputStream::STOFFInputStream ( STOFFInputStream const &  orig)
private

Member Function Documentation

◆ checkPosition()

bool STOFFInputStream::checkPosition ( long  pos) const
inline

checks if a position is or not a valid file position

Referenced by readColor().

◆ get()

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

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

◆ getSubStreamById()

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

return a new stream for a ole zone

◆ getSubStreamByName()

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

return a new stream for a ole zone

◆ hasDataFork()

bool STOFFInputStream::hasDataFork ( ) const
inline

returns true if the data fork block exists

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

◆ input()

std::shared_ptr< librevenge::RVNGInputStream > STOFFInputStream::input ( )
inline

returns the basic librevenge::RVNGInputStream

◆ isEnd()

bool STOFFInputStream::isEnd ( )

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

Referenced by peek().

◆ isStructured()

bool STOFFInputStream::isStructured ( )

return true if the stream is ole

◆ operator=()

STOFFInputStream & STOFFInputStream::operator= ( STOFFInputStream const &  orig)
private

◆ operator>>() [1/8]

STOFFInputStream & STOFFInputStream::operator>> ( bool &  res)
inline

operator>> for bool

◆ operator>>() [2/8]

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

operator>> for double

◆ operator>>() [3/8]

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

operator>> for int16_t

◆ operator>>() [4/8]

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

operator>> for int32_t

◆ operator>>() [5/8]

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

operator>> for int8_t

◆ operator>>() [6/8]

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

operator>> for uint16_t

◆ operator>>() [7/8]

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

operator>> for uint32_t

◆ operator>>() [8/8]

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

operator>> for uint8_t

◆ peek()

int STOFFInputStream::peek ( )

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

◆ read()

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

◆ readColor()

bool STOFFInputStream::readColor ( STOFFColor color)

try to read a color

◆ readCompressedLong()

bool STOFFInputStream::readCompressedLong ( long &  res)

read a compressed long (pstm.cxx:ReadCompressed)

◆ readCompressedULong()

bool STOFFInputStream::readCompressedULong ( unsigned long &  res)

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

◆ readDataBlock()

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

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

Referenced by readEndDataBlock().

◆ readDouble10()

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

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

◆ readDouble8()

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

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

◆ readDoubleReverted8()

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

◆ readEndDataBlock()

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

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

◆ readInverted()

bool STOFFInputStream::readInverted ( ) const
inline

returns the endian mode (see constructor)

◆ readLong()

long STOFFInputStream::readLong ( int  num)

return a int8, int16, int32 readed from actualPos

Referenced by operator>>().

◆ readU8()

uint8_t STOFFInputStream::readU8 ( librevenge::RVNGInputStream *  stream)
staticprotected

internal function used to read a byte

Referenced by readULong().

◆ readULong() [1/2]

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

◆ readULong() [2/2]

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

◆ seek()

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

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

◆ setReadInverted()

void STOFFInputStream::setReadInverted ( bool  newVal)
inline

sets the endian mode

◆ size()

long STOFFInputStream::size ( ) const
inline

returns the stream size

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

◆ subStreamCount()

unsigned STOFFInputStream::subStreamCount ( )

returns the number of substream

◆ subStreamName()

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

returns the name of the i^th substream

◆ tell()

◆ updateStreamSize()

void STOFFInputStream::updateStreamSize ( )
protected

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

Referenced by STOFFInputStream().

Member Data Documentation

◆ m_inverseRead

bool STOFFInputStream::m_inverseRead
protected

◆ m_stream

◆ m_streamSize

long STOFFInputStream::m_streamSize
protected

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

Generated on Fri Apr 14 2023 04:41:10 for libstaroffice by doxygen 1.9.6