g4tools  5.4.0
tree_index
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_rroot_tree_index
5 #define tools_rroot_tree_index
6 
7 #include "named"
8 
9 namespace tools {
10 namespace rroot {
11 
12 class tree_index : public virtual iro {
13  static const std::string& s_store_class() {
14  static const std::string s_v("TTreeIndex");
15  return s_v;
16  }
17 public:
18  static const std::string& s_class() {
19  static const std::string s_v("tools::rroot::tree_index");
20  return s_v;
21  }
22 public: //iro
23  virtual void* cast(const std::string& a_class) const {
24  if(void* p = cmp_cast<tree_index>(this,a_class)) return p;
25  return 0;
26  }
27  virtual const std::string& s_cls() const {return s_class();}
28 public:
29  static cid id_class() {return branch_cid();}
30  virtual void* cast(cid a_class) const {
31  if(void* p = cmp_cast<tree_index>(this,a_class)) {return p;}
32  else return 0;
33  }
34 public:
35  virtual iro* copy() const {return new tree_index(*this);}
36  virtual bool stream(buffer& a_buffer) {
37  uint32 startpos = a_buffer.length();
38 
39  unsigned int s,c;
40  short v;
41  if(!a_buffer.read_version(v,s,c)) return false;
42  //::printf("debug : tree_index::stream : version %d count %d\n",v,c);
43 
44  if(!virtual_index_stream(a_buffer)) return false;
45 
46  std::string ds;
47  if(!a_buffer.read(ds)) return false; //fMajorName
48  //::printf("debug : tree_index::stream : fMajorName \"%s\"\n",ds.c_str());
49  if(!a_buffer.read(ds)) return false; //fMinorName
50  //::printf("debug : tree_index::stream : fMinorName \"%s\"\n",ds.c_str());
51 
52  int64 m_n;
53  if(!a_buffer.read(m_n)) return false; //fN
54  //::printf("debug : tree_index::stream : fN %ld\n",m_n);
55 
56  if(!dummy_array_stream<int64>(a_buffer,int(m_n))) return false;
57  if(!dummy_array_stream<int64>(a_buffer,int(m_n))) return false;
58 
59  //FIXME : still problem with this streamer.
60 
61  a_buffer.set_offset(startpos+c+sizeof(unsigned int));
62 
63  if(!a_buffer.check_byte_count(s,c,s_store_class())) return false;
64 
65  //::printf("debug : tree_index::stream : ok\n");
66  return true;
67  }
68 
69 public:
71  {
72 #ifdef TOOLS_MEM
73  mem::increment(s_class().c_str());
74 #endif
75  }
76  virtual ~tree_index(){
77 #ifdef TOOLS_MEM
78  mem::decrement(s_class().c_str());
79 #endif
80  }
81 protected:
82  tree_index(const tree_index& a_from):iro(a_from){}
83  tree_index& operator=(const tree_index&){return *this;}
84 protected:
85  static const std::string& virtual_index_s_store_class() {
86  static const std::string s_v("TVirtualIndex");
87  return s_v;
88  }
89  bool virtual_index_stream(buffer& a_buffer){
90  short v;
91  unsigned int s, c;
92  if(!a_buffer.read_version(v,s,c)) return false;
93  //::printf("debug : virtual_index::stream : version %d count %d\n",v,c);
94  std::string ds;
95  if(!Named_stream(a_buffer,ds,ds)) return false;
97  return false;
98  return true;
99  }
100 
101 };
102 
103 }}
104 
105 #endif
tools::rroot::tree_index
Definition: tree_index:12
tools::int64
long long int64
Definition: typedefs:67
tools::rroot::buffer::check_byte_count
bool check_byte_count(uint32 a_start_pos, uint32 a_byte_count, const std::string &a_store_cls)
Definition: buffer:568
tools::rroot::tree_index::s_cls
virtual const std::string & s_cls() const
Definition: tree_index:27
tools::rroot::Named_stream
bool Named_stream(buffer &a_buffer, std::string &a_name, std::string &a_title)
Definition: named:15
named
tools::rroot::tree_index::virtual_index_stream
bool virtual_index_stream(buffer &a_buffer)
Definition: tree_index:89
tools::rroot::tree_index::operator=
tree_index & operator=(const tree_index &)
Definition: tree_index:83
tools::rroot::tree_index::stream
virtual bool stream(buffer &a_buffer)
Definition: tree_index:36
tools::rroot::buffer::read_version
bool read_version(short &a_version)
Definition: buffer:503
tools::rroot::tree_index::virtual_index_s_store_class
static const std::string & virtual_index_s_store_class()
Definition: tree_index:85
tools::rroot::branch_cid
cid branch_cid()
Definition: cids:24
tools::rroot::buffer::length
uint32 length() const
Definition: buffer:120
tools::rroot::tree_index::id_class
static cid id_class()
Definition: tree_index:29
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::rroot::buffer::set_offset
void set_offset(unsigned int a_off)
Definition: buffer:117
tools::rroot::buffer
Definition: buffer:43
tools::rroot::tree_index::tree_index
tree_index(const tree_index &a_from)
Definition: tree_index:82
tools::rroot::tree_index::~tree_index
virtual ~tree_index()
Definition: tree_index:76
tools::rroot::tree_index::cast
virtual void * cast(cid a_class) const
Definition: tree_index:30
tools::rroot::rbuf::read
bool read(unsigned char &a_x)
Definition: rbuf:146
tools::rroot::tree_index::copy
virtual iro * copy() const
Definition: tree_index:35
tools::rroot::iro
Definition: iro:19
tools::rroot::tree_index::s_class
static const std::string & s_class()
Definition: tree_index:18
tools::uint32
unsigned int uint32
Definition: typedefs:71
tools::rroot::tree_index::tree_index
tree_index()
Definition: tree_index:70
tools::rroot::tree_index::cast
virtual void * cast(const std::string &a_class) const
Definition: tree_index:23
tools::cid
unsigned short cid
Definition: cid:9