librevenge::DirTree Class Reference documentation

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Classes | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
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...
DirEntry * | entry (unsigned ind)
| returns the entry with a given index More...
DirEntry * | entry (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 &)
DirTree & | operator= (const DirTree &)

## Private Attributes
std::vector< DirEntry > | m_entries

## Constructor & Destructor Documentation

librevenge::DirTree::DirTree | ( |  | ) |
| inline

constructor

librevenge::DirTree::DirTree | ( | const DirTree & |  | ) |
| private

## Member Function Documentation

void librevenge::DirTree::clear | ( |  | ) |

clear all entries, leaving only a root entries

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

returns the number of entries

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

returns the entry with a given index

Referenced by librevenge::IStorage::entry(), librevenge::IStorage::isSubStream(), and librevenge::OStorage::updateToSave().

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
| inlineprotected

returns a list of siblings corresponding to a node

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

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::IStorage::getSubStreamNamesList().

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::IStorage::index().

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

tries to read the different entries

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

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

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

save the list of direntry in buffer

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

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

return space required to save a dir entry

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

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

void librevenge::DirTree::setInRedBlackTreeForm | ( |  | ) |
| inline

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

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

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

## Member Data Documentation

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

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

- RVNGOLEStream.cpp