00001 #ifndef DTBufferTree_H
00002 #define DTBufferTree_H
00003
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <map>
00028 #include <vector>
00029
00030
00031
00032
00033
00034 template <class Key, class Content>
00035 class DTBufferTree {
00036
00037 public:
00038
00039 typedef typename std::vector<Key> CompositeKey;
00040 typedef typename std::vector<Key>::const_iterator ElementKey;
00041
00044 DTBufferTree();
00045
00048 virtual ~DTBufferTree();
00049
00052
00053 int insert( ElementKey fKey, ElementKey lKey, const Content& cont );
00054 int insert( const Key& k, const Content& cont );
00055 int find( ElementKey fKey, ElementKey lKey, Content& cont );
00056 int find( const Key& k, Content& cont );
00057 std::vector<Content> contList();
00058 static void setDefault( const Content& def );
00059
00060 private:
00061
00062 typedef DTBufferTree<Key,Content> map_node;
00063 typedef typename std::map<Key,DTBufferTree<Key,Content>*> map_cont;
00064 typedef typename std::map<Key,DTBufferTree<Key,Content>*>::iterator map_iter;
00065
00066 Content bufferContent;
00067 map_cont bufferMap;
00068
00069 static Content defaultContent;
00070
00071 void treeCont( std::vector<Content>& contentList );
00072 void leafCont( std::vector<Content>& contentList );
00073
00074 };
00075
00076 #include "CondFormats/DTObjects/interface/DTBufferTree.icc"
00077
00078 #endif // DTBufferTree_H
00079