Go to the documentation of this file.
32 #ifndef RVNGOLESTREAM_H
33 #define RVNGOLESTREAM_H
42 class RVNGInputStream;
83 std::unique_ptr<IStorage>
m_io;
111 unsigned long size();
116 unsigned long read(
unsigned char *data,
unsigned long maxlen);
128 #endif // RVNGOLESTREAM_H
~IStorage()
Definition: RVNGOLEStream.cpp:480
unsigned long m_size
the red/black color: 0 means red
Definition: RVNGOLEStream.cpp:284
RVNGInputStream * m_input
Definition: RVNGOLEStream.cpp:469
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:496
unsigned long loadBigBlock(unsigned long block, unsigned char *buffer, unsigned long maxlen) const
Definition: RVNGOLEStream.cpp:1301
Definition: RVNGOLEStream.h:92
unsigned long readUsingStorage(unsigned long pos, unsigned char *data, unsigned long maxlen)
try to read maxlen data using m_iStorage
Definition: RVNGOLEStream.cpp:1587
unsigned long operator[](unsigned long index) const
Definition: RVNGOLEStream.cpp:176
@ NotOLE
Definition: RVNGOLEStream.h:55
static unsigned short readU16(const unsigned char *ptr)
Definition: RVNGOLEStream.cpp:66
~Storage()
Destroys the storage.
Definition: RVNGOLEStream.cpp:1753
bool getFileData(std::vector< unsigned char > &data)
try to return in data the contain of the file
Definition: RVNGOLEStream.cpp:589
CompareEntryName(DirTree &tree)
constructor
Definition: RVNGOLEStream.cpp:433
DirTree m_dirtree
Definition: RVNGOLEStream.cpp:668
@ 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:619
std::vector< unsigned long > m_sb_blocks
Definition: RVNGOLEStream.cpp:477
bool addDirectory(std::string const &dir)
add a new directory (usefull to create empty leaf dir )
Definition: RVNGOLEStream.cpp:1366
AllocTable m_bbat
Definition: RVNGOLEStream.cpp:669
AllocTable m_sbat
Definition: RVNGOLEStream.cpp:475
@ 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:1101
unsigned long m_pos
Definition: RVNGOLEStream.cpp:732
DirEntry * createEntry(std::string const &name)
return a new dir entry, if it does not exists
Definition: RVNGOLEStream.cpp:646
std::unique_ptr< IStorage > m_io
Definition: RVNGOLEStream.h:83
bool m_isLoad
Definition: RVNGOLEStream.cpp:538
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:1529
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:55
void save(unsigned char *buffer) const
saves a entry content in buffer */
Definition: RVNGOLEStream.cpp:897
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:614
unsigned long loadSmallBlocks(std::vector< unsigned long > const &blocks, unsigned char *buffer, unsigned long maxlen)
Definition: RVNGOLEStream.cpp:1316
unsigned long m_start
size (not valid if directory)
Definition: RVNGOLEStream.cpp:285
void load()
Definition: RVNGOLEStream.cpp:1172
IStorage(const IStorage &)
unsigned m_num_bbat
Definition: RVNGOLEStream.cpp:670
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:1499
bool addStream(std::string const &name, unsigned char const *buffer, unsigned long len)
add a new stream knowing its data
Definition: RVNGOLEStream.cpp:1375
unsigned long loadBigBlocks(std::vector< unsigned long > const &blocks, unsigned char *buffer, unsigned long maxlen) const
Definition: RVNGOLEStream.cpp:1274
Definition: RVNGOLEStream.cpp:547
std::vector< std::string > getSubStreamList(unsigned ind=0, bool retrieveAll=false)
returns the list of subStream given a dirEntry index
Definition: RVNGOLEStream.cpp:515
unsigned m_num_sbat
Definition: RVNGOLEStream.cpp:672
@ Eof
Definition: RVNGOLEStream.cpp:64
unsigned saveSize() const
return space required to save a dir entry
Definition: RVNGOLEStream.cpp:370
@ Ok
Definition: RVNGOLEStream.h:55
Header m_header
Definition: RVNGOLEStream.cpp:667
unsigned long m_size
the stream size
Definition: RVNGOLEStream.cpp:688
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:841
std::vector< unsigned char > m_data
Definition: RVNGOLEStream.cpp:676
Result
Definition: RVNGOLEStream.h:55
Header m_header
Definition: RVNGOLEStream.cpp:472
unsigned long loadSmallBlock(unsigned long block, unsigned char *buffer, unsigned long maxlen)
Definition: RVNGOLEStream.cpp:1351
DirEntry * entry(unsigned ind)
returns the entry with a given index
Definition: RVNGOLEStream.cpp:324
AllocTable(const AllocTable &)
@ UnknownError
Definition: RVNGOLEStream.h:55
@ OpenFailed
Definition: RVNGOLEStream.h:55
unsigned long size() const
Definition: RVNGOLEStream.cpp:695
std::string m_name
the file information
Definition: RVNGOLEStream.cpp:292
std::string m_name
Definition: RVNGOLEStream.cpp:689
void setRootType(bool pc)
set the root to a mac/pc root */
Definition: RVNGOLEStream.cpp:569
DirTree m_dirtree
Definition: RVNGOLEStream.cpp:473
bool operator()(unsigned ind1, unsigned ind2) const
comparaison function
Definition: RVNGOLEStream.cpp:437
OStorage(unsigned long minSize=0)
constructor
Definition: RVNGOLEStream.cpp:550
bool updateToSave()
finish to update the file ( note: it is better to call this function only one time )
Definition: RVNGOLEStream.cpp:1390
bool use_big_block_for(unsigned long size) const
Definition: RVNGOLEStream.cpp:525
AllocTable m_bbat
Definition: RVNGOLEStream.cpp:474
void setName(std::string const &nm)
sets the file name
Definition: RVNGOLEStream.cpp:266
std::vector< unsigned long > m_blocks
Definition: RVNGOLEStream.cpp:725
unsigned m_colour
the type
Definition: RVNGOLEStream.cpp:283
bool hasRootTypePc() const
returns true if it is a pc file
Definition: RVNGOLEStream.cpp:508
bool createOleFromDirectory(IStorage *io, std::string const &name)
create the data corresponding to a directory
Definition: RVNGOLEStream.cpp:1642
std::vector< std::string > getSubStreamNamesList()
Definition: RVNGOLEStream.cpp:1153
@ RVNG_SEEK_SET
Definition: RVNGStream.h:29
~OStorage()
destructor
Definition: RVNGOLEStream.cpp:556
std::vector< unsigned long > m_sb_blocks
Definition: RVNGOLEStream.cpp:674
static void writeU16(unsigned char *ptr, unsigned long data)
Definition: RVNGOLEStream.cpp:76
AllocTable m_sbat
Definition: RVNGOLEStream.cpp:671
void setInformation(std::string const &name, DirInfo const &info)
set a node information
Definition: RVNGOLEStream.cpp:578
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:489
@ MetaBat
Definition: RVNGOLEStream.cpp:64
void clear()
clear all entries, leaving only a root entries
Definition: RVNGOLEStream.cpp:927
@ 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
std::unique_ptr< IStream > m_io
Definition: RVNGOLEStream.h:119
AllocTable()
Definition: RVNGOLEStream.cpp:156
unsigned long size()
Returns the stream size.
Definition: RVNGOLEStream.cpp:1795
bool useBigBlockFor(unsigned long size) const
return true if we need to use big block
Definition: RVNGOLEStream.cpp:609
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:1161
IStorage * m_iStorage
Definition: RVNGOLEStream.cpp:686
unsigned long read(unsigned char *data, unsigned long maxlen)
Reads a block of data.
Definition: RVNGOLEStream.cpp:1800
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:851
librevenge::Storage::Result m_result
Definition: RVNGOLEStream.cpp:470
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:703
OStorage(const OStorage &)
Storage(RVNGInputStream *is)
Constructs a storage with data.
Definition: RVNGOLEStream.cpp:1748
Definition: RVNGOLEStream.cpp:684
unsigned revision() const
returns the OLE revision
Definition: RVNGOLEStream.cpp:503
void setRevision(unsigned rev)
set the OLE revision
Definition: RVNGOLEStream.cpp:564
DirInfo()
constructor
Definition: RVNGOLEStream.cpp:216
std::vector< unsigned long > follow(unsigned long start) const
Definition: RVNGOLEStream.cpp:822
@ 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
~Stream()
Destroys the stream.
Definition: RVNGOLEStream.cpp:1791
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:461
bool isStructured()
Definition: RVNGOLEStream.cpp:1147
unsigned long tell() const
Definition: RVNGOLEStream.cpp:699
Definition: RVNGOLEStream.cpp:467
~IStream()
Definition: RVNGOLEStream.cpp:692
Definition: RVNGOLEStream.cpp:296
DirEntry * entry(unsigned ind)
returns a directory entry corresponding to a index
Definition: RVNGOLEStream.cpp:483
Definition: RVNGOLEStream.cpp:213
Storage & operator=(const Storage &)
unsigned offset
Definition: RVNGZipStream.cpp:79
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:40
unsigned long readData(unsigned long pos, unsigned char *data, unsigned long maxlen)
try to read maxlen data using m_data
Definition: RVNGOLEStream.cpp:1573
void load(unsigned char *buffer, unsigned len)
tries to read the different entries
Definition: RVNGOLEStream.cpp:1011
DirEntry()
constructor
Definition: RVNGOLEStream.cpp:242
a comparaison funcion of DirTree used to sort the entry by name
Definition: RVNGOLEStream.cpp:431
void setRootType(bool pc=true)
set the root to a mac/pc root
Definition: RVNGOLEStream.cpp:933
IStorage & operator=(const IStorage &)
std::vector< unsigned char > m_data
Definition: RVNGOLEStream.cpp:735
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:400
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:952
std::vector< std::string > getSubStreamList(unsigned ind=0, bool all=false)
function to retrieve the list of actual direntry
Definition: RVNGOLEStream.cpp:559
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:628
IStorage(RVNGInputStream *is)
Definition: RVNGOLEStream.cpp:1136
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:636
DirTree & m_tree
the main tree
Definition: RVNGOLEStream.cpp:457
Definition: RVNGOLEStream.h:49
Generated for librevenge by
doxygen 1.8.20