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

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

◆ 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>>(), operator>>(), and 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

◆ 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(), and 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 Mon Apr 22 2024 12:48:55 for libstaroffice by doxygen 1.10.0