Go to the documentation of this file.
32 #ifndef RVNGOLESTREAM_H
33 #define RVNGOLESTREAM_H
41 class RVNGInputStream;
110 unsigned long size();
115 unsigned long read(
unsigned char *data,
unsigned long maxlen);
127 #endif // RVNGOLESTREAM_H
~IStorage()
Definition: RVNGOLEStream.cpp:481
unsigned long m_size
the red/black color: 0 means red
Definition: RVNGOLEStream.cpp:284
IStorage * m_io
Definition: RVNGOLEStream.h:82
RVNGInputStream * m_input
Definition: RVNGOLEStream.cpp:470
unsigned saveSize() const
Definition: RVNGOLEStream.cpp:201
Definition: RVNGOLEStream.cpp:238
unsigned index(const std::string &name)
returns a directory entry corresponding to a index
Definition: RVNGOLEStream.cpp:497
Definition: RVNGOLEStream.h:91
unsigned long readUsingStorage(unsigned long pos, unsigned char *data, unsigned long maxlen)
try to read maxlen data using m_iStorage
Definition: RVNGOLEStream.cpp:1585
unsigned long operator[](unsigned long index) const
Definition: RVNGOLEStream.cpp:176
@ NotOLE
Definition: RVNGOLEStream.h:54
static unsigned short readU16(const unsigned char *ptr)
Definition: RVNGOLEStream.cpp:66
~Storage()
Destroys the storage.
Definition: RVNGOLEStream.cpp:1752
bool getFileData(std::vector< unsigned char > &data)
try to return in data the contain of the file
Definition: RVNGOLEStream.cpp:590
CompareEntryName(DirTree &tree)
constructor
Definition: RVNGOLEStream.cpp:434
DirTree m_dirtree
Definition: RVNGOLEStream.cpp:669
@ RVNG_SEEK_END
Definition: RVNGStream.h:30
std::vector< std::string > getSubStreamList(unsigned ind=0, bool retrieveAll=false)
returns the list of ind substream
Definition: RVNGOLEStream.cpp:352
unsigned m_left
previous sibling
Definition: RVNGOLEStream.cpp:287
size_t getDataAddress(unsigned block, bool isBig) const
returns the address of a big/small block
Definition: RVNGOLEStream.cpp:620
std::vector< unsigned long > m_sb_blocks
Definition: RVNGOLEStream.cpp:478
bool addDirectory(std::string const &dir)
add a new directory (usefull to create empty leaf dir )
Definition: RVNGOLEStream.cpp:1364
AllocTable m_bbat
Definition: RVNGOLEStream.cpp:670
AllocTable m_sbat
Definition: RVNGOLEStream.cpp:476
@ Avail
Definition: RVNGOLEStream.cpp:64
bool hasCLSId() const
returns true if the clsid field is filed
Definition: RVNGOLEStream.cpp:225
unsigned setInRBTForm(std::vector< unsigned > const &childList, unsigned firstInd, unsigned lastInd, unsigned height)
rebuild all the childs m_left, m_right index as a red black tree, returns the root index.
Definition: RVNGOLEStream.cpp:1099
unsigned long m_pos
Definition: RVNGOLEStream.cpp:733
DirEntry * createEntry(std::string const &name)
return a new dir entry, if it does not exists
Definition: RVNGOLEStream.cpp:647
bool m_isLoad
Definition: RVNGOLEStream.cpp:539
bool isStructured()
Checks whether the storage is OLE2 storage.
Definition: RVNGOLEStream.cpp:1762
#define RVNG_DEBUG_MSG(M)
Definition: librevenge_internal.h:33
IStream(IStorage *io, std::string const &name)
Definition: RVNGOLEStream.cpp:1527
bool is_dir() const
returns true for a directory
Definition: RVNGOLEStream.cpp:247
std::string const & filename() const
returns the string which was store inside the file.
Definition: RVNGOLEStream.cpp:261
unsigned count() const
returns the number of entries
Definition: RVNGOLEStream.cpp:313
@ BadOLE
Definition: RVNGOLEStream.h:54
void save(unsigned char *buffer) const
saves a entry content in buffer */
Definition: RVNGOLEStream.cpp:894
DirTree & operator=(const DirTree &)
unsigned m_right
starting block
Definition: RVNGOLEStream.cpp:286
DirEntry * entry(const std::string &name)
returns the entry with a given name
Definition: RVNGOLEStream.cpp:330
static unsigned long getMaximumSize(bool isBig)
returns the maximum size of a big/small block
Definition: RVNGOLEStream.cpp:615
unsigned long loadSmallBlocks(std::vector< unsigned long > const &blocks, unsigned char *buffer, unsigned long maxlen)
Definition: RVNGOLEStream.cpp:1314
unsigned long m_start
size (not valid if directory)
Definition: RVNGOLEStream.cpp:285
void load()
Definition: RVNGOLEStream.cpp:1170
IStorage(const IStorage &)
unsigned m_num_bbat
Definition: RVNGOLEStream.cpp:671
Definition: RVNGOLEStream.cpp:153
IStream & operator=(const IStream &)
void setInRedBlackTreeForm()
check/update so that the sibling are store with a red black tree
Definition: RVNGOLEStream.cpp:364
unsigned insertData(unsigned char const *buffer, unsigned long len, bool useBigBlock, unsigned end=Eof)
add stream data in a file, returns the first index
Definition: RVNGOLEStream.cpp:1497
bool addStream(std::string const &name, unsigned char const *buffer, unsigned long len)
add a new stream knowing its data
Definition: RVNGOLEStream.cpp:1373
Definition: RVNGOLEStream.cpp:548
std::vector< std::string > getSubStreamList(unsigned ind=0, bool retrieveAll=false)
returns the list of subStream given a dirEntry index
Definition: RVNGOLEStream.cpp:516
unsigned m_num_sbat
Definition: RVNGOLEStream.cpp:673
@ Eof
Definition: RVNGOLEStream.cpp:64
unsigned saveSize() const
return space required to save a dir entry
Definition: RVNGOLEStream.cpp:370
@ Ok
Definition: RVNGOLEStream.h:54
Header m_header
Definition: RVNGOLEStream.cpp:668
unsigned long m_size
the stream size
Definition: RVNGOLEStream.cpp:689
Definition: librevenge_internal.h:37
bool hasRootTypePc() const
returns true if it is a pc file
Definition: RVNGOLEStream.cpp:308
void setChain(std::vector< unsigned long > chain, unsigned end)
Definition: RVNGOLEStream.cpp:838
std::vector< unsigned char > m_data
Definition: RVNGOLEStream.cpp:677
Result
Definition: RVNGOLEStream.h:54
Header m_header
Definition: RVNGOLEStream.cpp:473
unsigned long loadSmallBlock(unsigned long block, unsigned char *buffer, unsigned long maxlen)
Definition: RVNGOLEStream.cpp:1349
DirEntry * entry(unsigned ind)
returns the entry with a given index
Definition: RVNGOLEStream.cpp:324
AllocTable(const AllocTable &)
@ UnknownError
Definition: RVNGOLEStream.h:54
@ OpenFailed
Definition: RVNGOLEStream.h:54
unsigned long size() const
Definition: RVNGOLEStream.cpp:696
std::string m_name
the file information
Definition: RVNGOLEStream.cpp:292
std::string m_name
Definition: RVNGOLEStream.cpp:690
void setRootType(bool pc)
set the root to a mac/pc root */
Definition: RVNGOLEStream.cpp:570
DirTree m_dirtree
Definition: RVNGOLEStream.cpp:474
bool operator()(unsigned ind1, unsigned ind2) const
comparaison function
Definition: RVNGOLEStream.cpp:438
OStorage(unsigned long minSize=0)
constructor
Definition: RVNGOLEStream.cpp:551
bool updateToSave()
finish to update the file ( note: it is better to call this function only one time )
Definition: RVNGOLEStream.cpp:1388
bool use_big_block_for(unsigned long size) const
Definition: RVNGOLEStream.cpp:526
AllocTable m_bbat
Definition: RVNGOLEStream.cpp:475
void setName(std::string const &nm)
sets the file name
Definition: RVNGOLEStream.cpp:266
std::vector< unsigned long > m_blocks
Definition: RVNGOLEStream.cpp:726
unsigned m_colour
the type
Definition: RVNGOLEStream.cpp:283
bool hasRootTypePc() const
returns true if it is a pc file
Definition: RVNGOLEStream.cpp:509
bool createOleFromDirectory(IStorage *io, std::string const &name)
create the data corresponding to a directory
Definition: RVNGOLEStream.cpp:1640
std::vector< std::string > getSubStreamNamesList()
Definition: RVNGOLEStream.cpp:1151
@ RVNG_SEEK_SET
Definition: RVNGStream.h:29
~OStorage()
destructor
Definition: RVNGOLEStream.cpp:557
std::vector< unsigned long > m_sb_blocks
Definition: RVNGOLEStream.cpp:675
static void writeU16(unsigned char *ptr, unsigned long data)
Definition: RVNGOLEStream.cpp:76
AllocTable m_sbat
Definition: RVNGOLEStream.cpp:672
void setInformation(std::string const &name, DirInfo const &info)
set a node information
Definition: RVNGOLEStream.cpp:579
std::vector< unsigned long > m_data
Definition: RVNGOLEStream.cpp:207
bool m_valid
Definition: RVNGOLEStream.cpp:280
unsigned m_child
next sibling
Definition: RVNGOLEStream.cpp:288
DirEntry * entry(const std::string &name)
returns a directory entry corresponding to a name
Definition: RVNGOLEStream.cpp:490
@ MetaBat
Definition: RVNGOLEStream.cpp:64
void clear()
clear all entries, leaving only a root entries
Definition: RVNGOLEStream.cpp:924
@ End
Definition: RVNGOLEStream.cpp:240
unsigned long count() const
Definition: RVNGOLEStream.cpp:161
unsigned m_time[4]
four uint32_t : the first two used for creation, the last for modification time
Definition: RVNGOLEStream.cpp:232
AllocTable()
Definition: RVNGOLEStream.cpp:156
unsigned long size()
Returns the stream size.
Definition: RVNGOLEStream.cpp:1797
bool useBigBlockFor(unsigned long size) const
return true if we need to use big block
Definition: RVNGOLEStream.cpp:610
void load(const unsigned char *buffer, unsigned len)
Definition: RVNGOLEStream.cpp:180
bool isSubStream(const std::string &name, bool &isDir)
returns true if the entry exists in the OLE, if so fills isDir
Definition: RVNGOLEStream.cpp:1159
IStorage * m_iStorage
Definition: RVNGOLEStream.cpp:687
unsigned long read(unsigned char *data, unsigned long maxlen)
Reads a block of data.
Definition: RVNGOLEStream.cpp:1802
Stream(Storage *storage, const std::string &name)
Creates a new stream.
Definition: RVNGOLEStream.cpp:1785
void load(unsigned char *buffer, unsigned len)
reads a entry content in buffer
Definition: RVNGOLEStream.cpp:848
librevenge::Storage::Result m_result
Definition: RVNGOLEStream.cpp:471
OStorage & operator=(const OStorage &)
DirEntry const * entry(unsigned ind) const
returns the entry with a given index
Definition: RVNGOLEStream.cpp:318
void save(unsigned char *buffer) const
save the list of direntry in buffer
Definition: RVNGOLEStream.cpp:377
Result result()
Returns the error code of last operation.
Definition: RVNGOLEStream.cpp:1757
unsigned long read(unsigned char *data, unsigned long maxlen)
Definition: RVNGOLEStream.cpp:704
OStorage(const OStorage &)
Storage(RVNGInputStream *is)
Constructs a storage with data.
Definition: RVNGOLEStream.cpp:1746
Definition: RVNGOLEStream.cpp:685
unsigned revision() const
returns the OLE revision
Definition: RVNGOLEStream.cpp:504
void setRevision(unsigned rev)
set the OLE revision
Definition: RVNGOLEStream.cpp:565
DirInfo()
constructor
Definition: RVNGOLEStream.cpp:216
std::vector< unsigned long > follow(unsigned long start) const
Definition: RVNGOLEStream.cpp:819
@ Bat
Definition: RVNGOLEStream.cpp:64
static unsigned saveSize()
returns space required to save a dir entry
Definition: RVNGOLEStream.cpp:275
unsigned m_blockSize
Definition: RVNGOLEStream.cpp:155
static unsigned readU32(const unsigned char *ptr)
Definition: RVNGOLEStream.cpp:71
IStream * m_io
Definition: RVNGOLEStream.h:118
~Stream()
Destroys the stream.
Definition: RVNGOLEStream.cpp:1792
AllocTable & operator=(const AllocTable &)
unsigned m_type
true if this is a classic mac directory entry
Definition: RVNGOLEStream.cpp:282
std::vector< DirEntry > m_entries
Definition: RVNGOLEStream.cpp:462
bool isStructured()
Definition: RVNGOLEStream.cpp:1145
unsigned long tell() const
Definition: RVNGOLEStream.cpp:700
Definition: RVNGOLEStream.cpp:468
unsigned long loadBigBlocks(std::vector< unsigned long > const &blocks, unsigned char *buffer, unsigned long maxlen)
Definition: RVNGOLEStream.cpp:1272
unsigned long loadBigBlock(unsigned long block, unsigned char *buffer, unsigned long maxlen)
Definition: RVNGOLEStream.cpp:1299
~IStream()
Definition: RVNGOLEStream.cpp:693
Definition: RVNGOLEStream.cpp:296
DirEntry * entry(unsigned ind)
returns a directory entry corresponding to a index
Definition: RVNGOLEStream.cpp:484
Definition: RVNGOLEStream.cpp:213
Storage & operator=(const Storage &)
unsigned offset
Definition: RVNGZipStream.cpp:77
DirTree()
constructor
Definition: RVNGOLEStream.cpp:299
static void writeU32(unsigned char *ptr, unsigned long data)
Definition: RVNGOLEStream.cpp:82
DirInfo m_info
first child
Definition: RVNGOLEStream.cpp:290
void resize(unsigned long newsize)
Definition: RVNGOLEStream.cpp:165
static unsigned long getLength(RVNGInputStream *const input)
Definition: RVNGOLEStream.cpp:90
std::string name() const
returns the simplified file name
Definition: RVNGOLEStream.cpp:252
Definition: RVNGBinaryData.cpp:39
unsigned long readData(unsigned long pos, unsigned char *data, unsigned long maxlen)
try to read maxlen data using m_data
Definition: RVNGOLEStream.cpp:1571
void load(unsigned char *buffer, unsigned len)
tries to read the different entries
Definition: RVNGOLEStream.cpp:1008
DirEntry()
constructor
Definition: RVNGOLEStream.cpp:242
a comparaison funcion of DirTree used to sort the entry by name
Definition: RVNGOLEStream.cpp:432
void setRootType(bool pc=true)
set the root to a mac/pc root
Definition: RVNGOLEStream.cpp:930
IStorage & operator=(const IStorage &)
std::vector< unsigned char > m_data
Definition: RVNGOLEStream.cpp:736
bool m_macRootEntry
false if invalid (should be skipped)
Definition: RVNGOLEStream.cpp:281
Stream & operator=(const Stream &)
void save(unsigned char *buffer) const
Definition: RVNGOLEStream.cpp:189
void get_siblings(unsigned ind, std::set< unsigned > &seens) const
constructs the list of siblings ( by filling the seens set )
Definition: RVNGOLEStream.cpp:401
unsigned find_child(unsigned ind, const std::string &name) const
tries to find a child of ind with a given name
Definition: RVNGOLEStream.cpp:337
void set(unsigned long index, unsigned long val)
Definition: RVNGOLEStream.cpp:169
unsigned index(const std::string &name, bool create=false)
given a fullname (e.g "/ObjectPool/_1020961869"), find the entry
Definition: RVNGOLEStream.cpp:949
std::vector< std::string > getSubStreamList(unsigned ind=0, bool all=false)
function to retrieve the list of actual direntry
Definition: RVNGOLEStream.cpp:560
std::vector< unsigned > get_siblings(unsigned ind) const
returns a list of siblings corresponding to a node
Definition: RVNGOLEStream.cpp:390
unsigned newBBlock()
create a new big block, resize m_data; ... and return is identifier
Definition: RVNGOLEStream.cpp:629
IStorage(RVNGInputStream *is)
Definition: RVNGOLEStream.cpp:1134
unsigned m_clsid[4]
four uint32_t: the clsid data
Definition: RVNGOLEStream.cpp:234
std::vector< std::string > getSubStreamNamesList()
Returns the list of substream name.
Definition: RVNGOLEStream.cpp:1767
@ NotFound
Definition: RVNGOLEStream.cpp:64
unsigned newSBlock()
create a new small block, ... and returns is identifier
Definition: RVNGOLEStream.cpp:637
DirTree & m_tree
the main tree
Definition: RVNGOLEStream.cpp:458
Definition: RVNGOLEStream.h:48
Generated for librevenge by
doxygen 1.8.18