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
STOFFInputStream & | operator>> (bool &res)
| operator>> for bool
STOFFInputStream & | operator>> (uint8_t &res)
| operator>> for uint8_t
STOFFInputStream & | operator>> (int8_t &res)
| operator>> for int8_t
STOFFInputStream & | operator>> (uint16_t &res)
| operator>> for uint16_t
STOFFInputStream & | operator>> (int16_t &res)
| operator>> for int16_t
STOFFInputStream & | operator>> (uint32_t &res)
| operator>> for uint32_t
STOFFInputStream & | operator>> (int32_t &res)
| operator>> for int32_t
STOFFInputStream & | operator>> (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)
| !
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< STOFFInputStream > | getSubStreamByName (std::string const &name)
| return a new stream for a ole zone
std::shared_ptr< STOFFInputStream > | getSubStreamById (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< 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
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)
STOFFInputStream & | operator= (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

  input | the given input
  inverted | must be set to true for pc doc and ole part and to false for mac doc

Referenced by get(), getSubStreamById(), getSubStreamByName(), operator=(), operator>>(), operator>>(), operator>>(), operator>>(), operator>>(), operator>>(), operator>>(), operator>>(), and STOFFInputStream().

## ◆ 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 | ) |
| static protected

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>>(), operator>>(), operator>>(), operator>>(), peek(), readColor(), readCompressedLong(), readCompressedULong(), readDouble10(), readDouble8(), readDoubleReverted8(), readLong(), readULong(), 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()

long STOFFInputStream::tell | ( |  | ) |

returns actual offset position

Referenced by getSubStreamById(), getSubStreamByName(), operator>>(), readColor(), readCompressedLong(), readDataBlock(), readDouble10(), readDouble8(), readDoubleReverted8(), readEndDataBlock(), seek(), and updateStreamSize().

## ◆ 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

big or normal endian

Referenced by getSubStreamById(), getSubStreamByName(), readInverted(), readULong(), setReadInverted(), STOFFInputStream(), and STOFFInputStream().

## ◆ m_stream

std::shared_ptr<librevenge::RVNGInputStream> STOFFInputStream::m_stream
| protected

the initial input

Referenced by getSubStreamById(), getSubStreamByName(), hasDataFork(), input(), isEnd(), isStructured(), read(), readColor(), readCompressedLong(), readCompressedULong(), readDataBlock(), readDouble10(), readDouble8(), readDoubleReverted8(), readULong(), seek(), STOFFInputStream(), STOFFInputStream(), subStreamCount(), subStreamName(), tell(), and updateStreamSize().

## ◆ m_streamSize

long STOFFInputStream::m_streamSize
| protected

the stream size

Referenced by checkPosition(), readCompressedLong(), readDouble10(), readDouble8(), readDoubleReverted8(), seek(), size(), STOFFInputStream(), STOFFInputStream(), and updateStreamSize().

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

- STOFFInputStream.hxx
- STOFFInputStream.cxx