g4tools  5.4.0
branch_object
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_wroot_branch_object
5 #define tools_wroot_branch_object
6 
7 #include "branch"
8 
9 namespace tools {
10 namespace wroot {
11 
12 class branch_object : public branch {
13  typedef branch parent;
14 #ifdef TOOLS_MEM
15  static const std::string& s_class() {
16  static const std::string s_v("tools::wroot::branch_object");
17  return s_v;
18  }
19 #endif
20 public: //ibo
21  virtual const std::string& store_cls() const {
22  static const std::string s_v("TBranchObject");
23  return s_v;
24  }
25  virtual bool stream(buffer& a_buffer) const {
26  if(fClassName.empty()) {
27  m_out << "tools::wroot::branch_object::stream : fClassName is empty." << std::endl;
28  return false;
29  }
30  unsigned int c;
31  if(!a_buffer.write_version(1,c)) return false;
32  if(!parent::stream(a_buffer)) return false;
33  if(!a_buffer.write(fClassName)) return false;
34  if(!a_buffer.set_byte_count(c)) return false;
35  return true;
36  }
37 
38 public:
39  branch_object(std::ostream& a_out,bool a_byte_swap,uint32 a_compression,
40  seek a_seek_directory,const std::string& a_name,const std::string& a_title,
41  bool a_verbose)
42  :parent(a_out,a_byte_swap,a_compression,a_seek_directory,a_name,a_title,a_verbose)
43  ,fClassName()
44  {
45 #ifdef TOOLS_MEM
46  mem::increment(s_class().c_str());
47 #endif
48  }
49  virtual ~branch_object(){
50 #ifdef TOOLS_MEM
51  mem::decrement(s_class().c_str());
52 #endif
53  }
54 protected:
55  branch_object(const branch_object& a_from):ibo(a_from),parent(a_from) {}
56  branch_object& operator=(const branch_object& a_from){parent::operator=(a_from);return *this;}
57 public:
58  leaf_object* create_leaf(const std::string& a_name,const iobject& a_obj){
59  fClassName = a_obj.store_class_name();
60  leaf_object* lf = new leaf_object(m_out,a_name,a_obj);
61  m_leaves.push_back(lf);
62  return lf;
63  }
64 protected:
65  std::string fClassName; //Class name of referenced object
66 };
67 
68 }}
69 
70 #endif
tools::wroot::seek
int64 seek
Definition: seek:16
tools::wroot::branch_object::~branch_object
virtual ~branch_object()
Definition: branch_object:49
tools::wroot::leaf_object
Definition: leaf:318
tools::wroot::iobject
Definition: iobject:17
tools::wroot::branch_object::branch_object
branch_object(const branch_object &a_from)
Definition: branch_object:55
tools::wroot::branch
Definition: branch:16
tools::wroot::branch_object::fClassName
std::string fClassName
Definition: branch_object:65
tools::wroot::ibo
Definition: ibo:17
tools::wroot::branch_object::branch_object
branch_object(std::ostream &a_out, bool a_byte_swap, uint32 a_compression, seek a_seek_directory, const std::string &a_name, const std::string &a_title, bool a_verbose)
Definition: branch_object:39
tools::wroot::buffer::set_byte_count
bool set_byte_count(uint32 a_pos)
Definition: buffer:199
tools::wroot::branch::operator=
branch & operator=(const branch &)
Definition: branch:180
tools::wroot::iobject::store_class_name
virtual const std::string & store_class_name() const =0
tools::wroot::branch::m_out
std::ostream & m_out
Definition: branch:561
branch
tools::wroot::buffer::write_version
bool write_version(short a_version)
Definition: buffer:169
tools::wroot::buffer::write
bool write(T x)
Definition: buffer:97
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::wroot::branch_object::stream
virtual bool stream(buffer &a_buffer) const
Definition: branch_object:25
tools::wroot::branch_object::create_leaf
leaf_object * create_leaf(const std::string &a_name, const iobject &a_obj)
Definition: branch_object:58
tools::wroot::buffer
Definition: buffer:28
tools::wroot::branch_object::store_cls
virtual const std::string & store_cls() const
Definition: branch_object:21
tools::wroot::branch_object::operator=
branch_object & operator=(const branch_object &a_from)
Definition: branch_object:56
tools::wroot::branch::m_leaves
obj_array< base_leaf > m_leaves
Definition: branch:580
tools::wroot::branch::stream
virtual bool stream(buffer &a_buffer) const
Definition: branch:29
tools::uint32
unsigned int uint32
Definition: typedefs:71
tools::wroot::branch_object
Definition: branch_object:12