00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef BESCatalogList_h_
00034 #define BESCatalogList_h_ 1
00035
00036 #include <map>
00037 #include <string>
00038
00039 using std::map ;
00040 using std::string ;
00041
00042 #include "BESObj.h"
00043
00044 class BESCatalog ;
00045 class BESInfo ;
00046
00047 #define BES_DEFAULT_CATALOG "catalog"
00048
00069 class BESCatalogList : public BESObj
00070 {
00071 private:
00072 map<string, BESCatalog *> _catalogs ;
00073 string _default_catalog ;
00074 static BESCatalogList * _instance ;
00075 public:
00076 typedef map<string,BESCatalog *>::iterator catalog_iter ;
00077 typedef map<string,BESCatalog *>::const_iterator catalog_citer ;
00078
00079 BESCatalogList() ;
00080 virtual ~BESCatalogList() ;
00081 virtual bool add_catalog( BESCatalog *catalog ) ;
00082 virtual bool ref_catalog( const string &catalog_name ) ;
00083 virtual bool deref_catalog( const string &catalog_name );
00084 virtual BESCatalog * find_catalog( const string &catalog_name ) ;
00085 virtual void show_catalog( const string &container,
00086 const string &catalog_or_info,
00087 BESInfo *info ) ;
00088
00089 virtual void dump( ostream &strm ) const ;
00090
00091 static BESCatalogList * TheCatalogList() ;
00092 } ;
00093
00094 #endif // BESCatalogList_h_
00095