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