Cat
Element.cpp
Go to the documentation of this file.
1 // $Id: $
2 
3 #include <algorithm>
4 // Include files
5 #include "StatusCode.h"
6 
7 // local
8 #include "Element.h"
9 
10 //-----------------------------------------------------------------------------
11 // Implementation file for class : Element
12 //
13 // 2006-10-23 :
14 //-----------------------------------------------------------------------------
15 
16 //=============================================================================
17 // Standard constructor, initializes variables
18 //=============================================================================
20 {
21  m_connection=0;
22 }
23 //=============================================================================
24 // Destructor
25 //=============================================================================
27 }
28 
29 //=========================================================================
30 //
31 //=========================================================================
33  init();
34  std::vector<Hierarchy*> list = children();
35  std::vector<Hierarchy*>::iterator iter;
36  for (iter=list.begin() ; iter!=list.end() ; ++iter){
37  dynamic_cast<Element*>((*iter))->recursiveInitElement();
38  }
39 }
40 
41 //=========================================================================
42 //
43 //=========================================================================
45  std::vector<Hierarchy*> list = children();
46  std::vector<Hierarchy*>::const_iterator iter;
47  for (iter=list.begin();iter!=list.end();iter++){
48  dynamic_cast<Element*>((*iter))->recursiveInitCommunications();
49  }
50 }
51 
52 //=========================================================================
53 //
54 //=========================================================================
56  if (0==connection){
57  fatal("Try to define a connection with a null pointer.",
58  "Element::setConnection");
59  return StatusCode::FAILURE;
60  }
61  if (connection->is(Attrib::INTERFACE)){
62  m_connection=dynamic_cast<Hierarchy*>(connection);
63  return StatusCode::SUCCESS;
64  }
65  else {
66  debug(connection->name()+
67  " is not a Attrib::INTERFACE hardware. Connection refused.",
68  "Element::setConnection");
69  if (0!=connection->parent()){
70  return setConnection(connection->parent());
71  }
72  else{
73  fatal("Could not find a connection for element "+
74  name()+"["+type()+"].","element::setConnection");
75  return StatusCode::FAILURE;
76  }
77  }
78 }
79 
80 //=========================================================================
81 //
82 //=========================================================================
83 
85  if (0==m_connection){
86  warning("no connection defined for "+name()+".","Element::connection");
87  return (Hierarchy*)0;
88  }
89  return m_connection;
90 }
91 
92 //=============================================================================
Hierarchy * connection()
Definition: Element.cpp:84
Hierarchy * m_connection
Definition: Element.h:70
StatusCode setConnection(Hierarchy *)
Definition: Element.cpp:55
bool is(int attribut)
Definition: Attrib.h:50
std::vector< Hierarchy * > children()
Definition: Hierarchy.h:33
Hierarchy * parent()
Definition: Hierarchy.h:28
void fatal(std::string mymsg)
Definition: Object.h:41
Element()
Standard constructor.
Definition: Element.cpp:19
void debug(std::string mymsg)
Definition: Object.h:37
virtual ~Element()
Destructor.
Definition: Element.cpp:26
virtual StatusCode init()=0
void recursiveInitCommunications()
Definition: Element.cpp:44
std::string name() const
Definition: Object.h:28
std::string type()
Definition: Object.h:29
void warning(std::string mymsg)
Definition: Object.h:39
void recursiveInitElement()
Definition: Element.cpp:32