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...
Public Member Functions | |
MWAWInputStream (std::shared_ptr< librevenge::RVNGInputStream > input, bool inverted) | |
creates a stream with given endian | |
MWAWInputStream (librevenge::RVNGInputStream *input, bool inverted, bool checkCompression=false) | |
creates a stream with given endian from an existing input | |
~MWAWInputStream () | |
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 | |
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 | |
void | popLimit () |
pops a section defined by pushLimit | |
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 | 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< MWAWInputStream > | getSubStreamByName (std::string const &name) |
return a new stream for a ole zone | |
std::shared_ptr< MWAWInputStream > | getSubStreamById (unsigned id) |
return a new stream for a ole zone | |
bool | getFinderInfo (std::string &type, std::string &creator) const |
returns the finder info type and creator (if known) | |
bool | hasDataFork () const |
returns true if the data fork block exists | |
bool | hasResourceFork () const |
returns true if the resource fork block exists | |
std::shared_ptr< MWAWInputStream > | getResourceForkStream () |
returns the resource fork if find | |
Static Public Member Functions | |
static std::shared_ptr< MWAWInputStream > | 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 ) | |
bool | unBinHex () |
unbinhex the data in the file is a BinHex 4.0 file of a mac file | |
bool | unzipStream () |
unzip the data in the file is a zip file of a mac file | |
bool | unMacMIME () |
check if some stream are in MacMIME format, if so de MacMIME | |
bool | unMacMIME (MWAWInputStream *input, std::shared_ptr< librevenge::RVNGInputStream > &dataInput, std::shared_ptr< librevenge::RVNGInputStream > &rsrcInput) const |
de MacMIME an input stream | |
bool | unsplitInternalMergeStream () |
check if a stream is an internal merge stream | |
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 | |
long | m_readLimit |
actual section limit (-1 if no limit) | |
std::vector< long > | m_prevLimits |
list of previous limits | |
std::string | m_fInfoType |
finder info type | |
std::string | m_fInfoCreator |
finder info type | |
std::shared_ptr< MWAWInputStream > | m_resourceFork |
the resource fork | |
bool | m_inverseRead |
big or normal endian | |
Private Member Functions | |
MWAWInputStream (MWAWInputStream const &orig)=delete | |
MWAWInputStream & | operator= (MWAWInputStream const &orig)=delete |
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:
libqxp::MWAWInputStream::MWAWInputStream | ( | std::shared_ptr< librevenge::RVNGInputStream > | input, |
bool | inverted ) |
creates a stream with given endian
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(), unBinHex(), unMacMIME(), unsplitInternalMergeStream(), and unzipStream().
libqxp::MWAWInputStream::MWAWInputStream | ( | librevenge::RVNGInputStream * | input, |
bool | inverted, | ||
bool | checkCompression = false ) |
creates a stream with given endian from an existing input
Note: this functions does not delete input
libqxp::MWAWInputStream::~MWAWInputStream | ( | ) |
destructor
|
privatedelete |
|
inline |
checks if a position is or not a valid file position
Referenced by unMacMIME().
|
static |
returns a new input stream corresponding to a librevenge::RVNGBinaryData
|
inline |
returns the finder info type and creator (if known)
Referenced by libqxp::QXPMacFileParser::parse().
|
inline |
returns the resource fork if find
Referenced by unBinHex().
std::shared_ptr< MWAWInputStream > libqxp::MWAWInputStream::getSubStreamById | ( | unsigned | id | ) |
return a new stream for a ole zone
std::shared_ptr< MWAWInputStream > libqxp::MWAWInputStream::getSubStreamByName | ( | std::string const & | name | ) |
return a new stream for a ole zone
|
inline |
returns true if the data fork block exists
Referenced by isEnd(), libqxp::QXPMacFileParser::parse(), read(), readDataBlock(), readEndDataBlock(), seek(), tell(), unBinHex(), and unMacMIME().
|
inline |
returns true if the resource fork block exists
|
inline |
returns the basic librevenge::RVNGInputStream
Referenced by libqxp::QXPMacFileParser::parse().
bool libqxp::MWAWInputStream::isEnd | ( | ) |
returns true if we are at the end of the section/file
Referenced by readULong(), unBinHex(), and unMacMIME().
bool libqxp::MWAWInputStream::isStructured | ( | ) |
return true if the stream is ole
Referenced by unsplitInternalMergeStream(), and unzipStream().
|
privatedelete |
|
inline |
pops a section defined by pushLimit
|
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 * libqxp::MWAWInputStream::read | ( | size_t | numBytes, |
unsigned long & | numBytesRead ) |
! reads numbytes data, WITHOUT using any endian or section consideration
Referenced by unBinHex(), and unMacMIME().
bool libqxp::MWAWInputStream::readDataBlock | ( | long | size, |
librevenge::RVNGBinaryData & | data ) |
reads a librevenge::RVNGBinaryData with a given size in the actual section/file
Referenced by readEndDataBlock().
bool libqxp::MWAWInputStream::readDouble10 | ( | double & | res, |
bool & | isNotANumber ) |
try to read a double of size 10: 2 bytes exponent, 8 bytes mantisse
bool libqxp::MWAWInputStream::readDouble8 | ( | double & | res, |
bool & | isNotANumber ) |
try to read a double of size 8: 1.5 bytes exponent, 6.5 bytes mantisse
bool libqxp::MWAWInputStream::readDoubleReverted8 | ( | double & | res, |
bool & | isNotANumber ) |
try to read a double of size 8: 6.5 bytes mantisse, 1.5 bytes exponent
bool libqxp::MWAWInputStream::readEndDataBlock | ( | librevenge::RVNGBinaryData & | data | ) |
reads a librevenge::RVNGBinaryData from actPos to the end of the section/file
|
inline |
returns the endian mode (see constructor)
long libqxp::MWAWInputStream::readLong | ( | int | num | ) |
return a int8, int16, int32 readed from actualPos
Referenced by unBinHex().
|
staticprotected |
internal function used to read a byte
Referenced by readULong(), and unBinHex().
|
inline |
returns a uint8, uint16, uint32 readed from actualPos
Referenced by readDouble10(), readDouble8(), readDoubleReverted8(), readLong(), readULong(), readULong(), unBinHex(), and unMacMIME().
|
static |
internal function used to read num byte,
int libqxp::MWAWInputStream::seek | ( | long | offset, |
librevenge::RVNG_SEEK_TYPE | seekType ) |
seeks to a offset position, from actual, beginning or ending position
Referenced by getSubStreamById(), getSubStreamByName(), MWAWInputStream(), readDouble10(), unBinHex(), unMacMIME(), and unzipStream().
|
inline |
sets the endian mode
|
inline |
returns the stream size
Referenced by isEnd(), readDataBlock(), readEndDataBlock(), seek(), unBinHex(), and unMacMIME().
unsigned libqxp::MWAWInputStream::subStreamCount | ( | ) |
returns the number of substream
std::string libqxp::MWAWInputStream::subStreamName | ( | unsigned | id | ) |
returns the name of the i^th substream
long libqxp::MWAWInputStream::tell | ( | ) |
returns actual offset position
Referenced by getSubStreamById(), getSubStreamByName(), readDataBlock(), readDouble10(), readDouble8(), readDoubleReverted8(), readEndDataBlock(), seek(), unMacMIME(), and updateStreamSize().
|
protected |
unbinhex the data in the file is a BinHex 4.0 file of a mac file
Referenced by MWAWInputStream().
|
protected |
check if some stream are in MacMIME format, if so de MacMIME
Referenced by MWAWInputStream(), and unMacMIME().
|
protected |
de MacMIME an input stream
|
protected |
check if a stream is an internal merge stream
Referenced by MWAWInputStream().
|
protected |
unzip the data in the file is a zip file of a mac file
Referenced by MWAWInputStream().
|
protected |
update the stream size ( must be called in the constructor )
Referenced by MWAWInputStream(), and MWAWInputStream().
|
mutableprotected |
finder info type
Referenced by getFinderInfo(), unBinHex(), unMacMIME(), and unsplitInternalMergeStream().
|
mutableprotected |
finder info type
Referenced by getFinderInfo(), unBinHex(), unMacMIME(), and unsplitInternalMergeStream().
|
protected |
big or normal endian
Referenced by getSubStreamById(), getSubStreamByName(), readInverted(), readULong(), setReadInverted(), and unsplitInternalMergeStream().
|
protected |
list of previous limits
Referenced by popLimit(), and pushLimit().
|
protected |
actual section limit (-1 if no limit)
Referenced by checkPosition(), isEnd(), popLimit(), pushLimit(), readDataBlock(), readDouble10(), readDouble8(), readDoubleReverted8(), readEndDataBlock(), and seek().
|
protected |
the resource fork
Referenced by getResourceForkStream(), hasResourceFork(), MWAWInputStream(), unBinHex(), unMacMIME(), unsplitInternalMergeStream(), and unzipStream().
|
protected |
the initial input
Referenced by getSubStreamById(), getSubStreamByName(), hasDataFork(), input(), isEnd(), isStructured(), MWAWInputStream(), read(), readDataBlock(), readDouble10(), readDouble8(), readDoubleReverted8(), readULong(), seek(), subStreamCount(), subStreamName(), tell(), unBinHex(), unMacMIME(), unsplitInternalMergeStream(), unzipStream(), and updateStreamSize().
|
protected |
the stream size
Referenced by checkPosition(), pushLimit(), readDouble10(), readDouble8(), readDoubleReverted8(), seek(), size(), and updateStreamSize().