g4tools  5.4.0
noderef
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_sg_noderef
5 #define tools_sg_noderef
6 
7 #include "node"
8 
9 //#define TOOLS_SG_NODEREF_DEBUG
10 
11 namespace tools {
12 namespace sg {
13 
14 class noderef : public node {
15 public:
17 public:
18  virtual void render(render_action& a_action) {
19 #ifdef TOOLS_SG_NODEREF_DEBUG
20  std::ostream& out = a_action.out();
21  out << "debug : tools::sg::noderef::render : " << m_node.s_cls() << " begin : " << std::endl;
22  m_node.render(a_action);
23  out << "debug : tools::sg::noderef::render : " << m_node.s_cls() << " end," << std::endl;
24 #else
25  m_node.render(a_action);
26 #endif
27  }
28  virtual void pick(pick_action& a_action) {m_node.pick(a_action);}
29  virtual void bbox(bbox_action& a_action) {m_node.bbox(a_action);}
30  virtual void event(event_action& a_action) {m_node.event(a_action);}
31  virtual void search(search_action& a_action) {
32  if(a_action.do_path()) a_action.path_push(this);
33  m_node.search(a_action);
34  if(a_action.done()) return;
35  if(a_action.do_path()) a_action.path_pop();
36  }
37  virtual void get_matrix(get_matrix_action& a_action) {m_node.get_matrix(a_action);}
38  virtual bool write(write_action& a_action) {return m_node.write(a_action);}
39  virtual void is_visible(visible_action& a_action) {m_node.is_visible(a_action);}
40 public:
41  noderef(node& a_node):parent(),m_node(a_node){}
42  virtual ~noderef(){}
43 public:
44  noderef(const noderef& a_from)
45  :parent(a_from)
46  ,m_node(a_from.m_node)
47  {}
48  noderef& operator=(const noderef& a_from){
49  parent::operator=(a_from);
50  return *this;
51  }
52  const sg::node& node() const {return m_node;}
53  sg::node& node() {return m_node;}
54 protected:
56 };
57 
58 template <class NODE>
59 class clrref : public noderef {
60 public:
62 public:
63  clrref(NODE& a_node):parent(a_node){}
64  virtual ~clrref(){
65  NODE* _node = safe_cast<sg::node,NODE>(m_node);
66  if(_node) _node->clear();
67  }
68 public:
69  clrref(const clrref& a_from):parent(a_from){}
70  clrref& operator=(const clrref& a_from){
71  parent::operator=(a_from);
72  return *this;
73  }
74 };
75 
76 }}
77 
78 #endif
tools::sg::noderef::get_matrix
virtual void get_matrix(get_matrix_action &a_action)
Definition: noderef:37
tools::sg::node::write
virtual bool write(write_action &a_action)
Definition: node:82
tools::sg::clrref::clrref
clrref(NODE &a_node)
Definition: noderef:63
node
tools::sg::noderef::noderef
noderef(node &a_node)
Definition: noderef:41
tools::sg::node::s_cls
virtual const std::string & s_cls() const =0
tools::sg::noderef::search
virtual void search(search_action &a_action)
Definition: noderef:31
tools::sg::node::event
virtual void event(event_action &)
Definition: node:88
tools::sg::event_action
Definition: event_action:14
tools::sg::clrref
Definition: noderef:59
tools::sg::noderef::node
const sg::node & node() const
Definition: noderef:52
tools::sg::node
Definition: node:28
tools::sg::bbox_action
Definition: bbox_action:15
TOOLS_NODE
#define TOOLS_NODE(a__class, a__sclass, a__parent)
Definition: node:324
tools::sg::search_action::done
bool done() const
Definition: search_action:68
tools::sg::write_action
Definition: write_action:21
tools::sg::node::render
virtual void render(render_action &)
Definition: node:53
tools::sg::noderef::~noderef
virtual ~noderef()
Definition: noderef:42
tools::sg::noderef::noderef
noderef(const noderef &a_from)
Definition: noderef:44
tools::sg::node::bbox
virtual void bbox(bbox_action &)
Definition: node:55
tools::sg::search_action::path_push
void path_push(sg::node *a_v)
Definition: search_action:90
tools::sg::noderef::event
virtual void event(event_action &a_action)
Definition: noderef:30
tools::sg::pick_action
Definition: pick_action:59
tools::sg::node::get_matrix
virtual void get_matrix(get_matrix_action &a_action)
Definition: node:76
tools::sg::search_action::do_path
bool do_path() const
Definition: search_action:98
tools::sg::noderef::bbox
virtual void bbox(bbox_action &a_action)
Definition: noderef:29
tools::sg::search_action::path_pop
void path_pop()
Definition: search_action:91
tools::sg::noderef::m_node
sg::node & m_node
Definition: noderef:55
tools::sg::node::is_visible
virtual void is_visible(visible_action &)
Definition: node:90
tools::sg::search_action
Definition: search_action:19
tools::sg::node::search
virtual void search(search_action &a_action)
Definition: node:56
tools::sg::render_action
Definition: render_action:24
tools::sg::clrref::operator=
clrref & operator=(const clrref &a_from)
Definition: noderef:70
tools::sg::noderef::pick
virtual void pick(pick_action &a_action)
Definition: noderef:28
TOOLS_NODE_T
#define TOOLS_NODE_T(a__T, a__class, a__sclass, a__parent)
Definition: node:337
tools::sg::get_matrix_action
Definition: get_matrix_action:17
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::sg::node::pick
virtual void pick(pick_action &)
Definition: node:54
tools::sg::noderef::operator=
noderef & operator=(const noderef &a_from)
Definition: noderef:48
tools::sg::noderef::render
virtual void render(render_action &a_action)
Definition: noderef:18
tools::sg::noderef
Definition: noderef:14
tools::sg::noderef::node
sg::node & node()
Definition: noderef:53
tools::sg::action::out
std::ostream & out() const
Definition: action:51
tools::sg::noderef::write
virtual bool write(write_action &a_action)
Definition: noderef:38
tools::sg::noderef::is_visible
virtual void is_visible(visible_action &a_action)
Definition: noderef:39
tools::sg::clrref::clrref
clrref(const clrref &a_from)
Definition: noderef:69
tools::sg::visible_action
Definition: visible_action:12
tools::sg::clrref::~clrref
virtual ~clrref()
Definition: noderef:64