ATLAS Offline Software
MiniConfigTreeNode.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef dqiMiniConfigTreeNode_h
6 #define dqiMiniConfigTreeNode_h
7 
8 #include <map>
9 #include <set>
10 #include <string>
11 
12 #include <TObject.h>
13 
14 
15 namespace dqi {
16 
25 class MiniConfigTreeNode : public TObject {
26 public:
27 
28  class Visitor {
29  public:
30  virtual ~Visitor() { }
31  virtual void Visit( const MiniConfigTreeNode* node ) = 0;
32  };
33 
34  class Writer {
35  public:
36  virtual ~Writer() { }
37  virtual void Write(MiniConfigTreeNode* node ) = 0;
38  };
39 
40  MiniConfigTreeNode( std::string name_, MiniConfigTreeNode* parent_ );
41 
42  virtual ~MiniConfigTreeNode();
43 
44  virtual const char* GetName() const;
45 
46  virtual std::string GetPathName() const;
47 
48 
54  virtual MiniConfigTreeNode* GetNewDaughter( std::string name_ );
55 
56  virtual MiniConfigTreeNode* GetDaughter( std::string name_ ) const;
57 
58  virtual const MiniConfigTreeNode* GetParent() const { return m_parent; }
59  virtual MiniConfigTreeNode* GetParent() { return m_parent; }
60 
61  virtual std::map<std::string,dqi::MiniConfigTreeNode*> GetDaughters() const;
62 
70  virtual const MiniConfigTreeNode* GetNode( std::string name_ ) const;
71 
72 
73  virtual void SetAttribute( std::string attName, std::string attValue, bool isAttribKeyword = false );
74 
75  virtual std::string GetAttribute( std::string attName, bool calledFromDaughter = false ) const;
76 
77  virtual std::string GetAttributeLocal( std::string attName ) const;
78 
79  virtual void GetAttributeNames( std::set<std::string>& attSet, bool calledFromDaughter = false ) const;
80 
81  virtual void GetAttributeNamesLocal( std::set<std::string>& attSet ) const;
82 
83 
84  virtual void Accept( Visitor& visitor ) const;
85 
86  virtual void Accept(Writer& writer );
87 
88  virtual void SetAttribKeywordPropagateDown( bool propagateDown );
89 
90  virtual bool GetAttribKeywordPropagateDown() const;
91 
92 protected:
93 
94  typedef std::map<std::string,MiniConfigTreeNode*> NodeMap_t;
95  typedef NodeMap_t::const_iterator NodeIter_t;
96 
97  typedef std::map<std::string,std::pair<std::string,bool> > AttMap_t;
98  typedef AttMap_t::const_iterator AttIter_t;
99 
100  const std::string m_name;
102 
105 
107 
108 private:
109 
110 //Get rid of Root macros that confuse Doxygen
112  ClassDef( MiniConfigTreeNode, 0 ) // A node in a configuration tree
114 };
115 
116 } // namespace dqi
117 
118 #endif
dqi::MiniConfigTreeNode::Visitor::~Visitor
virtual ~Visitor()
Definition: MiniConfigTreeNode.h:30
dqi::MiniConfigTreeNode
A node of a tree structure holding a configuration, where each node may be given attributes,...
Definition: MiniConfigTreeNode.h:25
dqi::MiniConfigTreeNode::Writer::~Writer
virtual ~Writer()
Definition: MiniConfigTreeNode.h:36
dqi::MiniConfigTreeNode::m_propagateDown
bool m_propagateDown
Definition: MiniConfigTreeNode.h:106
dqi::MiniConfigTreeNode::GetAttribute
virtual std::string GetAttribute(std::string attName, bool calledFromDaughter=false) const
Definition: MiniConfigTreeNode.cxx:148
dqi::MiniConfigTreeNode::NodeIter_t
NodeMap_t::const_iterator NodeIter_t
Definition: MiniConfigTreeNode.h:95
dqi::MiniConfigTreeNode::SetAttribKeywordPropagateDown
virtual void SetAttribKeywordPropagateDown(bool propagateDown)
Definition: MiniConfigTreeNode.cxx:232
dqi::MiniConfigTreeNode::AttIter_t
AttMap_t::const_iterator AttIter_t
Definition: MiniConfigTreeNode.h:98
dqi::MiniConfigTreeNode::SetAttribute
virtual void SetAttribute(std::string attName, std::string attValue, bool isAttribKeyword=false)
Definition: MiniConfigTreeNode.cxx:139
dqi::MiniConfigTreeNode::Visitor::Visit
virtual void Visit(const MiniConfigTreeNode *node)=0
dqi::MiniConfigTreeNode::GetAttributeNames
virtual void GetAttributeNames(std::set< std::string > &attSet, bool calledFromDaughter=false) const
Definition: MiniConfigTreeNode.cxx:179
dqi::MiniConfigTreeNode::GetPathName
virtual std::string GetPathName() const
Definition: MiniConfigTreeNode.cxx:55
dqi::MiniConfigTreeNode::AttMap_t
std::map< std::string, std::pair< std::string, bool > > AttMap_t
Definition: MiniConfigTreeNode.h:97
dqi::MiniConfigTreeNode::GetParent
virtual const MiniConfigTreeNode * GetParent() const
Definition: MiniConfigTreeNode.h:58
dqi::MiniConfigTreeNode::Visitor
Definition: MiniConfigTreeNode.h:28
dqi::MiniConfigTreeNode::m_attributes
AttMap_t m_attributes
Definition: MiniConfigTreeNode.h:104
dqi::MiniConfigTreeNode::Writer
Definition: MiniConfigTreeNode.h:34
dqi::MiniConfigTreeNode::GetDaughter
virtual MiniConfigTreeNode * GetDaughter(std::string name_) const
Definition: MiniConfigTreeNode.cxx:89
dqi::MiniConfigTreeNode::Writer::Write
virtual void Write(MiniConfigTreeNode *node)=0
dqi::MiniConfigTreeNode::GetNode
virtual const MiniConfigTreeNode * GetNode(std::string name_) const
This function takes the full path name of a subnode (in UNIX directory style) and returns the corresp...
Definition: MiniConfigTreeNode.cxx:108
dqi::MiniConfigTreeNode::GetNewDaughter
virtual MiniConfigTreeNode * GetNewDaughter(std::string name_)
Returns a daughter of this node, creating one if necessary.
Definition: MiniConfigTreeNode.cxx:72
dqi::MiniConfigTreeNode::GetAttributeLocal
virtual std::string GetAttributeLocal(std::string attName) const
Definition: MiniConfigTreeNode.cxx:167
dqi::MiniConfigTreeNode::GetParent
virtual MiniConfigTreeNode * GetParent()
Definition: MiniConfigTreeNode.h:59
dqi::MiniConfigTreeNode::GetAttribKeywordPropagateDown
virtual bool GetAttribKeywordPropagateDown() const
Definition: MiniConfigTreeNode.cxx:239
dqi::MiniConfigTreeNode::NodeMap_t
std::map< std::string, MiniConfigTreeNode * > NodeMap_t
Definition: MiniConfigTreeNode.h:94
dqi::MiniConfigTreeNode::MiniConfigTreeNode
MiniConfigTreeNode(std::string name_, MiniConfigTreeNode *parent_)
Definition: MiniConfigTreeNode.cxx:26
dqi::MiniConfigTreeNode::GetName
virtual const char * GetName() const
Definition: MiniConfigTreeNode.cxx:47
dqi::MiniConfigTreeNode::m_daughters
NodeMap_t m_daughters
Definition: MiniConfigTreeNode.h:103
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
dqi::MiniConfigTreeNode::Accept
virtual void Accept(Visitor &visitor) const
Definition: MiniConfigTreeNode.cxx:208
dqi::MiniConfigTreeNode::~MiniConfigTreeNode
virtual ~MiniConfigTreeNode()
Definition: MiniConfigTreeNode.cxx:35
example.writer
writer
show summary of content
Definition: example.py:36
dqi
Definition: CompositeAlgorithm.h:16
dqi::MiniConfigTreeNode::m_parent
MiniConfigTreeNode * m_parent
Definition: MiniConfigTreeNode.h:101
dqi::MiniConfigTreeNode::GetAttributeNamesLocal
virtual void GetAttributeNamesLocal(std::set< std::string > &attSet) const
Definition: MiniConfigTreeNode.cxx:197
node
Definition: memory_hooks-stdcmalloc.h:74
dqi::MiniConfigTreeNode::GetDaughters
virtual std::map< std::string, dqi::MiniConfigTreeNode * > GetDaughters() const
Definition: MiniConfigTreeNode.cxx:101
dqi::MiniConfigTreeNode::m_name
const std::string m_name
Definition: MiniConfigTreeNode.h:100