- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

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

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

Referenced by readULong().

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

return a new stream for a ole zone

Referenced by readULong().

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 checkPosition(), and peek().

bool STOFFInputStream::isStructured | ( |  | ) |

return true if the stream is ole

Referenced by readULong().

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

Referenced by hasDataFork().

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

Referenced by popLimit().

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

Referenced by readULong().

bool STOFFInputStream::readColor | ( | STOFFColor & | color | ) |

try to read a color

Referenced by readULong().

bool STOFFInputStream::readCompressedLong | ( | long & | res | ) |

read a compressed long (pstm.cxx:ReadCompressed)

Referenced by readULong().

bool STOFFInputStream::readCompressedULong | ( | unsigned long & | res | ) |

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

Referenced by readULong().

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

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

Referenced by readEndDataBlock(), and readULong().

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

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

Referenced by readULong().

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

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

Referenced by readULong().

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>>(), and readULong().

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

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

Referenced by readULong().

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>>(), and readULong().

uint8_t STOFFInputStream::readU8 | ( | librevenge::RVNGInputStream * | stream | ) |
| static protected

internal function used to read a byte

Referenced by hasDataFork(), and 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(), setReadInverted(), 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(), readULong(), and seek().

unsigned STOFFInputStream::subStreamCount | ( |  | ) |

returns the number of substream

Referenced by readULong().

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

returns the name of the i^th substream

Referenced by readULong().

long STOFFInputStream::tell | ( |  | ) |

returns actual offset position

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

void STOFFInputStream::updateStreamSize | ( |  | ) |
| protected

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

Referenced by hasDataFork(), and STOFFInputStream().

## Member Data Documentation

bool STOFFInputStream::m_inverseRead
| protected

big or normal endian

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

std::vector<long> STOFFInputStream::m_prevLimits
| protected

list of previous limits

Referenced by popLimit(), and pushLimit().

long STOFFInputStream::m_readLimit
| protected

actual section limit (-1 if no limit)

Referenced by checkPosition(), isEnd(), popLimit(), pushLimit(), readCompressedLong(), readDataBlock(), readDouble10(), readDouble8(), readDoubleReverted8(), readEndDataBlock(), and seek().

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

long STOFFInputStream::m_streamSize
| protected

the stream size

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

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

- STOFFInputStream.hxx
- STOFFInputStream.cxx