librevenge::DirTree Class Reference

Classes

struct  CompareEntryName
 a comparaison funcion of DirTree used to sort the entry by name More...
 

Public Member Functions

 DirTree ()
 constructor More...
 
void clear ()
 clear all entries, leaving only a root entries More...
 
void setRootType (bool pc=true)
 set the root to a mac/pc root More...
 
bool hasRootTypePc () const
 returns true if it is a pc file More...
 
unsigned count () const
 returns the number of entries More...
 
DirEntry const * entry (unsigned ind) const
 returns the entry with a given index More...
 
DirEntryentry (unsigned ind)
 returns the entry with a given index More...
 
DirEntryentry (const std::string &name)
 returns the entry with a given name More...
 
unsigned index (const std::string &name, bool create=false)
 given a fullname (e.g "/ObjectPool/_1020961869"), find the entry More...
 
unsigned find_child (unsigned ind, const std::string &name) const
 tries to find a child of ind with a given name More...
 
std::vector< std::string > getSubStreamList (unsigned ind=0, bool retrieveAll=false)
 returns the list of ind substream More...
 
void load (unsigned char *buffer, unsigned len)
 tries to read the different entries More...
 
void setInRedBlackTreeForm ()
 check/update so that the sibling are store with a red black tree More...
 
unsigned saveSize () const
 return space required to save a dir entry More...
 
void save (unsigned char *buffer) const
 save the list of direntry in buffer More...
 

Protected Member Functions

std::vector< unsigned > get_siblings (unsigned ind) const
 returns a list of siblings corresponding to a node More...
 
void get_siblings (unsigned ind, std::set< unsigned > &seens) const
 constructs the list of siblings ( by filling the seens set ) More...
 
void getSubStreamList (unsigned ind, bool all, const std::string &prefix, std::vector< std::string > &res, std::set< unsigned > &seen, bool isRoot=false) const
 returns a substream list More...
 
void setInRedBlackTreeForm (unsigned id, std::set< unsigned > &seen)
 check that the subtrees of index is a red black tree, if not rebuild it More...
 
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. More...
 

Private Member Functions

 DirTree (const DirTree &)
 
DirTreeoperator= (const DirTree &)
 

Private Attributes

std::vector< DirEntrym_entries
 

Constructor & Destructor Documentation

◆ DirTree() [1/2]

librevenge::DirTree::DirTree ( )
inline

constructor

◆ DirTree() [2/2]

librevenge::DirTree::DirTree ( const DirTree )
private

Member Function Documentation

◆ clear()

void librevenge::DirTree::clear ( )

clear all entries, leaving only a root entries

Referenced by DirTree().

◆ count()

unsigned librevenge::DirTree::count ( ) const
inline

returns the number of entries

Referenced by entry(), get_siblings(), save(), and saveSize().

◆ entry() [1/3]

DirEntry const* librevenge::DirTree::entry ( unsigned  ind) const
inline

◆ entry() [2/3]

DirEntry* librevenge::DirTree::entry ( unsigned  ind)
inline

returns the entry with a given index

◆ entry() [3/3]

DirEntry* librevenge::DirTree::entry ( const std::string &  name)
inline

returns the entry with a given name

◆ find_child()

unsigned librevenge::DirTree::find_child ( unsigned  ind,
const std::string &  name 
) const
inline

tries to find a child of ind with a given name

◆ get_siblings() [1/2]

std::vector<unsigned> librevenge::DirTree::get_siblings ( unsigned  ind) const
inlineprotected

returns a list of siblings corresponding to a node

Referenced by find_child(), and get_siblings().

◆ get_siblings() [2/2]

void librevenge::DirTree::get_siblings ( unsigned  ind,
std::set< unsigned > &  seens 
) const
inlineprotected

constructs the list of siblings ( by filling the seens set )

◆ getSubStreamList() [1/2]

std::vector<std::string> librevenge::DirTree::getSubStreamList ( unsigned  ind = 0,
bool  retrieveAll = false 
)
inline

returns the list of ind substream

Referenced by librevenge::IStorage::getSubStreamList(), and librevenge::OStorage::getSubStreamList().

◆ getSubStreamList() [2/2]

void librevenge::DirTree::getSubStreamList ( unsigned  ind,
bool  all,
const std::string &  prefix,
std::vector< std::string > &  res,
std::set< unsigned > &  seen,
bool  isRoot = false 
) const
protected

returns a substream list

◆ hasRootTypePc()

bool librevenge::DirTree::hasRootTypePc ( ) const
inline

returns true if it is a pc file

Referenced by librevenge::IStorage::hasRootTypePc().

◆ index()

unsigned librevenge::DirTree::index ( const std::string &  name,
bool  create = false 
)

given a fullname (e.g "/ObjectPool/_1020961869"), find the entry

Referenced by librevenge::OStorage::createEntry(), entry(), and librevenge::IStorage::index().

◆ load()

void librevenge::DirTree::load ( unsigned char *  buffer,
unsigned  len 
)

tries to read the different entries

◆ operator=()

DirTree& librevenge::DirTree::operator= ( const DirTree )
private

◆ save()

void librevenge::DirTree::save ( unsigned char *  buffer) const
inline

save the list of direntry in buffer

◆ saveSize()

unsigned librevenge::DirTree::saveSize ( ) const
inline

return space required to save a dir entry

◆ setInRBTForm()

unsigned librevenge::DirTree::setInRBTForm ( std::vector< unsigned > const &  childList,
unsigned  firstInd,
unsigned  lastInd,
unsigned  height 
)
protected

rebuild all the childs m_left, m_right index as a red black tree, returns the root index.

Note
: this function supposes that the childs list is already sorted

◆ setInRedBlackTreeForm() [1/2]

void librevenge::DirTree::setInRedBlackTreeForm ( )
inline

check/update so that the sibling are store with a red black tree

◆ setInRedBlackTreeForm() [2/2]

void librevenge::DirTree::setInRedBlackTreeForm ( unsigned  id,
std::set< unsigned > &  seen 
)
protected

check that the subtrees of index is a red black tree, if not rebuild it

◆ setRootType()

void librevenge::DirTree::setRootType ( bool  pc = true)

set the root to a mac/pc root

Referenced by librevenge::OStorage::setRootType().

Member Data Documentation

◆ m_entries

std::vector<DirEntry> librevenge::DirTree::m_entries
private

Referenced by count(), entry(), hasRootTypePc(), and save().


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

Generated for librevenge by doxygen 1.8.14