/* * This file is a part of CMSLU -- Content Management System like Unix * and is not publicly distributed * * Copyright (c) 2008-2009, Tomasz Sowa * All rights reserved. * */ #ifndef headerfilecmslucoredircontainer #define headerfilecmslucoredircontainer #include #include #include "item.h" class DirContainer { public: typedef std::list Table; typedef Table::iterator Iterator; typedef Table::size_type SizeType; typedef std::map TableId; typedef std::multimap TableParent; typedef TableParent::iterator ParentIterator; typedef TableParent::size_type ParentSizeType; DirContainer(); Iterator GetRoot(); Iterator Begin(); Iterator End(); SizeType Size(); bool Empty(); Iterator PushBack(const Item & item); void Clear(); Iterator FindId(long id); bool DelById(long id); ParentIterator ParentBegin(); ParentIterator ParentEnd(); ParentSizeType ParentSize(); bool ParentEmpty(); ParentIterator FindFirstParent(long parent); ParentIterator NextParent(ParentIterator pi); private: // main table with dirs Table table; // true if there is a root dir in the table bool is_root; // root Iterator root_iter; // indexes TableId table_id; TableParent table_parent; }; #endif