changed: DirContainer - uses std::list instead of std::vector as the main container
we do not have to rebuild indexes after deleting some items added: DirContainer::DelById(long id) changed: Dirs::CheckRootDir() addes the root dir if there is no one added: Dirs::DeleteDir(long id) - deletes specified directory (and its contents) (from the cache and the database) added: Db::DelDirById(long id) - deletes a dir from the database and its first children added: standard function rm can delete directories git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@487 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
#ifndef headerfiledircontainer
|
||||
#define headerfiledircontainer
|
||||
|
||||
#include <vector>
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include "item.h"
|
||||
#include "log.h"
|
||||
@@ -20,9 +20,9 @@ class DirContainer
|
||||
{
|
||||
|
||||
public:
|
||||
typedef std::vector<Item> Table;
|
||||
typedef Table::iterator Iterator;
|
||||
typedef Table::size_type SizeType;
|
||||
typedef std::list<Item> Table;
|
||||
typedef Table::iterator Iterator;
|
||||
typedef Table::size_type SizeType;
|
||||
|
||||
typedef std::map<long, Iterator> TableId;
|
||||
typedef std::multimap<long, Iterator> TableParent;
|
||||
@@ -43,6 +43,8 @@ public:
|
||||
|
||||
Iterator FindId(long id);
|
||||
|
||||
bool DelById(long id);
|
||||
|
||||
ParentIterator ParentBegin();
|
||||
ParentIterator ParentEnd();
|
||||
ParentSizeType ParentSize();
|
||||
@@ -53,17 +55,14 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
void AddIndexes(Iterator item);
|
||||
void RebuildIndexes();
|
||||
|
||||
// main table with dirs
|
||||
Table table;
|
||||
|
||||
// true if there is a root dir in the table
|
||||
bool is_root;
|
||||
|
||||
// root dir
|
||||
SizeType root_index;
|
||||
// root
|
||||
Iterator root_iter;
|
||||
|
||||
// indexes
|
||||
TableId table_id;
|
||||
|
Reference in New Issue
Block a user