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 STDBCONFIGNODEIMPL_HH
00034 #define STDBCONFIGNODEIMPL_HH
00035
00036 #include "StDbConfigNode.hh"
00037 #include "StDbElementIndex.hh"
00038
00039 #include <list>
00040 #ifdef ST_NO_TEMPLATE_DEF_ARGS
00041 typedef list<StDbTable*, allocator<StDbTable*> > TableList;
00042 #else
00043 #if !defined(ST_NO_NAMESPACES)
00044 using std::list;
00045 #endif
00046 typedef list<StDbTable*> TableList;
00047 #endif
00048
00049 class StDbConfigNodeImpl : public StDbConfigNode {
00050
00051 friend class StDbTableIterImpl;
00052
00053 protected:
00054
00055 StDbElementIndex* melementIndex;
00056 int mindexRef;
00057 TableList mTables;
00058
00059 void deleteTables();
00060 void updateDbInfo();
00061 void updateDbTables(int opt=0);
00062 void updateDbTable(StDbTable* table,int opt=0);
00063
00064 public:
00065
00066 StDbConfigNodeImpl( StDbConfigNode* parent,
00067 const char* nodeName, const char* configName);
00068 StDbConfigNodeImpl( StDbConfigNode* parent, StDbNode& node);
00069 StDbConfigNodeImpl( StDbType type, StDbDomain domain,
00070 const char* nodeName, const char* configName="none");
00071 virtual ~StDbConfigNodeImpl();
00072
00073 virtual void addChildren(dbEnvList* elist);
00074
00075
00076 virtual void resetConfig(const char* config, int opt=0);
00077 virtual int buildTree(int opt=0);
00078 virtual StDbElementIndex* getElementIndex();
00079 virtual void setElementIndexInfo(const char* indexName, int indexID);
00080 virtual void getElementIndexInfo(char*& indexname, int& indexID);
00081 virtual int getNumIndeces() const;
00082
00083
00084 virtual StDbTable* addDbTable(const char* tableName,
00085 const char* version="default");
00086 virtual StDbTable* addTable(const char* tableName,
00087 const char* version="default");
00088 virtual StDbTable* addTable(StDbNode* node);
00089 virtual StDbTable* findTable(const char* name, const char* subPath="/");
00090 virtual StDbTable* findLocalTable(const char* name);
00091 virtual void removeTable(StDbTable* table);
00092
00093 virtual StDbTableIter* getStDbTableIter();
00094 virtual bool compareTables(StDbTable* tab1, StDbTable* tab2);
00095 virtual void printTables(int depth);
00096 virtual void printNumberStats();
00097
00098 virtual void getNumberStats(unsigned int& nNodes,
00099 unsigned int& ntables,
00100 unsigned int& numBytes);
00101
00102
00103 virtual void setTablesFlavor(const char* flavor);
00104 virtual void setTablesProdTime(unsigned int ptime);
00105 virtual void setTablesProdTimeOverride(unsigned int ptime, char* dbType = 0, char* dbDomain = 0);
00106 };
00107
00108 #endif
00109
00110
00111
00112
00113