Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
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)
| ! 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< 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(), 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 | ) |
| 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(), and setReadInverted().

## ◆ 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(), subStreamCount(), subStreamName(), tell(), and updateStreamSize().

## ◆ m_streamSize

long STOFFInputStream::m_streamSize
| protected

the stream size

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

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

- STOFFInputStream.hxx
- STOFFInputStream.cxx