00001 #ifndef __cmt_database_h__ 00002 #define __cmt_database_h__ 00003 00004 #include "cmt_vector.h" 00005 00006 #include "cmt_branch.h" 00007 #include "cmt_constituent.h" 00008 #include "cmt_fragment.h" 00009 #include "cmt_group.h" 00010 #include "cmt_language.h" 00011 #include "cmt_pattern.h" 00012 #include "cmt_use.h" 00013 #include "cmt_symbol.h" 00014 #include "cmt_project.h" 00015 #include "cmt_cmtpath_pattern.h" 00016 00017 class Database 00018 { 00019 public: 00020 00021 static Database& instance (); 00022 00023 static void clear (); 00024 00025 static Branch::BranchVector& branches (); 00026 static Constituent::ConstituentVector& constituents (); 00027 static Fragment::FragmentVector& fragments (); 00028 static Group::GroupVector& groups (); 00029 static Language::LanguageVector& languages (); 00030 00031 static Package::PackageVector& packages (); 00032 static Package::PackageMap& package_map (); 00033 00034 static Pattern::PatternVector& patterns (); 00035 00036 static PatternList::PatternListMap& pattern_list_map (); 00037 static PatternList::PatternListVector& pattern_lists (); 00038 00039 static Use::UseVector& all_uses (); 00040 static Use::UsePtrVector& uses (); 00041 00042 static Symbol::SymbolVector& symbols (); 00043 static Symbol::SymbolMap& symbol_map (); 00044 00045 static Tag::TagVector& all_tags (); 00046 static Tag::TagPtrVector& tags (); 00047 static Tag::TagMap& tag_map (); 00048 00049 static Project::ProjectVector& projects (); 00050 00051 static CmtPathPattern::CmtPathPatternVector& cmtpath_patterns (); 00052 00053 private: 00054 00055 Database (); 00056 00057 Branch::BranchVector m_branches; 00058 Constituent::ConstituentVector m_constituents; 00059 Fragment::FragmentVector m_fragments; 00060 Group::GroupVector m_groups; 00061 Language::LanguageVector m_languages; 00062 00063 Package::PackageVector m_packages; 00064 Package::PackageMap m_package_map; 00065 00066 Pattern::PatternVector m_patterns; 00067 00068 PatternList::PatternListMap m_pattern_list_map; 00069 PatternList::PatternListVector m_pattern_lists; 00070 00071 Use::UseVector m_all_uses; 00072 Use::UsePtrVector m_uses; 00073 Symbol::SymbolVector m_symbols; 00074 Symbol::SymbolMap m_symbol_map; 00075 Tag::TagVector m_all_tags; 00076 Tag::TagPtrVector m_tags; 00077 Tag::TagMap m_tag_map; 00078 Project::ProjectVector m_projects; 00079 00080 CmtPathPattern::CmtPathPatternVector m_cmtpath_patterns; 00081 00082 }; 00083 00084 #endif