librevenge::DirTree Class Reference

List of all members.

Classes

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

Public Member Functions

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

Protected Member Functions

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

Private Member Functions

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

Private Attributes

std::vector< DirEntrym_entries

Constructor & Destructor Documentation

constructor

librevenge::DirTree::DirTree ( const DirTree ) [private]

Member Function Documentation

clear all entries, leaving only a root entries

Referenced by DirTree().

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

returns the number of entries

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

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

returns the entry with a given index

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

returns the entry with a given name

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

tries to find a child of ind with a given name

std::vector<unsigned> librevenge::DirTree::get_siblings ( unsigned  ind) const [inline, protected]

returns a list of siblings corresponding to a node

Referenced by find_child(), and get_siblings().

void librevenge::DirTree::get_siblings ( unsigned  ind,
std::set< unsigned > &  seens 
) const [inline, protected]

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

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

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

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

returns true if it is a pc file

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

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

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

tries to read the different entries

DirTree& librevenge::DirTree::operator= ( const DirTree ) [private]
void librevenge::DirTree::save ( unsigned char *  buffer) const [inline]

save the list of direntry in buffer

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

return space required to save a dir entry

Referenced by save().

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

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

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

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

set the root to a mac/pc root

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


Member Data Documentation

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: