g4tools  5.4.0
named
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_named
5 #define tools_wroot_named
6 
7 #include "buffer"
8 #include "../vmanip"
9 //#include "../vdata"
10 
11 namespace tools {
12 namespace wroot {
13 
14 inline bool Object_stream(buffer& a_buffer) {
15  short v = 1;
16  if(!a_buffer.write_version(v)) return false;
17  if(!a_buffer.write((unsigned int)0)) return false;
18  static const unsigned int kNotDeleted = 0x02000000;
19  if(!a_buffer.write(kNotDeleted)) return false;
20  return true;
21 }
22 
23 inline bool Named_stream(buffer& a_buffer,const std::string& a_name,const std::string& a_title) {
24  unsigned int beg;
25  if(!a_buffer.write_version(1,beg)) return false;
26  if(!Object_stream(a_buffer)) return false;
27  if(!a_buffer.write(a_name)) return false;
28  if(!a_buffer.write(a_title)) return false;
29  if(!a_buffer.set_byte_count(beg)) return false;
30  return true;
31 }
32 
33 template <class T>
34 class obj_array : public virtual ibo, public std::vector<T*> {
35  static unsigned int kNullTag() {return 0;}
36 public: //ibo
37  virtual const std::string& store_cls() const {
38  static const std::string s_v("TObjArray");
39  return s_v;
40  }
41  virtual bool stream(buffer& a_buffer) const {
42  unsigned int c;
43  if(!a_buffer.write_version(3,c)) return false;
44  if(!Object_stream(a_buffer)) return false;
45  if(!a_buffer.write(std::string(""))) return false;
46  int nobjects = int(std::vector<T*>::size());
47  if(!a_buffer.write(nobjects)) return false;
48  int lowerBound = 0;
49  if(!a_buffer.write(lowerBound)) return false;
50 
51  typedef typename std::vector<T*>::const_iterator it_t;
52  it_t it;
53  for(it=std::vector<T*>::begin();it!=std::vector<T*>::end();++it) {
54  if(*it) {
55  if(!a_buffer.write_object(*(*it))) return false;
56  } else { //Could happen with branch::m_baskets.
57  if(!a_buffer.write(kNullTag())) return false;
58  }
59  }
60  if(!a_buffer.set_byte_count(c)) return false;
61  return true;
62  }
63 public:
65  virtual ~obj_array(){safe_clear<T>(*this);}
66 public:
67  obj_array(const obj_array& a_from): ibo(a_from),std::vector<T*>() {
68  typedef typename std::vector<T*>::const_iterator it_t;
69  it_t it;
70  for(it=a_from.begin();it!=a_from.end();++it) {
71  std::vector<T*>::push_back((*it)->copy());
72  }
73  }
74  obj_array& operator=(const obj_array& a_from){
75  if(&a_from==this) return *this;
76  safe_clear<T>(*this);
77 
78  typedef typename std::vector<T*>::const_iterator it_t;
79  it_t it;
80  for(it=a_from.begin();it!=a_from.end();++it) {
81  std::vector<T*>::push_back((*it)->copy());
82  }
83  return *this;
84  }
85 public:
86  void clear_objs() {safe_clear<T>(*this);}
87 };
88 
89 template <class T>
90 class obj_list : public virtual ibo, public std::vector<T*> {
91 public: //ibo
92  virtual const std::string& store_cls() const {
93  static const std::string s_v("TList");
94  return s_v;
95  }
96  virtual bool stream(buffer& a_buffer) const {
97  unsigned int c;
98  if(!a_buffer.write_version(4,c)) return false;
99  if(!Object_stream(a_buffer)) return false;
100  if(!a_buffer.write(std::string(""))) return false; //fName
101  int nobjects = int(std::vector<T*>::size());
102  if(!a_buffer.write(nobjects)) return false;
103 
104  typedef typename std::vector<T*>::const_iterator it_t;
105  it_t it;
106  for(it=std::vector<T*>::begin();it!=std::vector<T*>::end();++it) {
107  if(!a_buffer.write_object(*(*it))) return false;
108  std::string opt;
109  unsigned char nch = (unsigned char)opt.size();
110  if(!a_buffer.write(nch)) return false;
111  if(!a_buffer.write_fast_array<char>(opt.c_str(),nch)) return false;
112  }
113  if(!a_buffer.set_byte_count(c)) return false;
114  return true;
115  }
116 public:
118  virtual ~obj_list(){safe_clear<T>(*this);}
119 protected:
120  obj_list(const obj_list& a_from):ibo(a_from),std::vector<T*>(){}
121  obj_list& operator=(const obj_list&){return *this;}
122 };
123 
124 inline bool AttLine_stream(buffer& a_buffer){
125  short fLineColor = 1;
126  short fLineStyle = 1;
127  short fLineWidth = 1;
128  unsigned int c;
129  if(!a_buffer.write_version(1,c)) return false;
130  if(!a_buffer.write(fLineColor)) return false;
131  if(!a_buffer.write(fLineStyle)) return false;
132  if(!a_buffer.write(fLineWidth)) return false;
133  if(!a_buffer.set_byte_count(c)) return false;
134  return true;
135 }
136 
137 inline bool AttFill_stream(buffer& a_buffer){
138  short fFillColor = 0;
139  short fFillStyle = 101;
140  unsigned int c;
141  if(!a_buffer.write_version(1,c)) return false;
142  if(!a_buffer.write(fFillColor)) return false;
143  if(!a_buffer.write(fFillStyle)) return false;
144  if(!a_buffer.set_byte_count(c)) return false;
145  return true;
146 }
147 
148 inline bool AttMarker_stream(buffer& a_buffer) {
149  short fMarkerColor = 1;
150  short fMarkerStyle = 1;
151  float fMarkerWidth = 1;
152  unsigned int c;
153  if(!a_buffer.write_version(1,c)) return false;
154  if(!a_buffer.write(fMarkerColor)) return false;
155  if(!a_buffer.write(fMarkerStyle)) return false;
156  if(!a_buffer.write(fMarkerWidth)) return false;
157  if(!a_buffer.set_byte_count(c)) return false;
158  return true;
159 }
160 
161 inline bool Att3D_stream(buffer& a_buffer){
162  unsigned int c;
163  if(!a_buffer.write_version(1,c)) return false;
164  if(!a_buffer.set_byte_count(c)) return false;
165  return true;
166 }
167 
168 //template <class T>
169 //inline bool Array_stream(buffer& a_buffer,const std::vector<T>& a_v) {
170 // if(!a_buffer.write((int)a_v.size())) return false;
171 // if(!a_buffer.write_fast_array(vec_data(a_v),a_v.size())) return false;
172 // return true;
173 //}
174 
175 }}
176 
177 #endif
tools::wroot::obj_list::operator=
obj_list & operator=(const obj_list &)
Definition: named:121
tools::wroot::obj_array::obj_array
obj_array(const obj_array &a_from)
Definition: named:67
tools::wroot::obj_list::obj_list
obj_list(const obj_list &a_from)
Definition: named:120
tools::wroot::Att3D_stream
bool Att3D_stream(buffer &a_buffer)
Definition: named:161
tools::wroot::obj_list::~obj_list
virtual ~obj_list()
Definition: named:118
tools::wroot::obj_list::obj_list
obj_list()
Definition: named:117
tools::wroot::obj_array::clear_objs
void clear_objs()
Definition: named:86
buffer
tools::wroot::obj_array::obj_array
obj_array()
Definition: named:64
tools::wroot::ibo
Definition: ibo:17
tools::wroot::buffer::write_object
bool write_object(const ibo &a_obj)
Definition: buffer:231
tools::wroot::buffer::set_byte_count
bool set_byte_count(uint32 a_pos)
Definition: buffer:199
tools::wroot::obj_array
Definition: named:34
tools::waxml::begin
void begin(std::ostream &a_writer)
Definition: begend:15
tools::wroot::Named_stream
bool Named_stream(buffer &a_buffer, const std::string &a_name, const std::string &a_title)
Definition: named:23
tools::wroot::obj_list::stream
virtual bool stream(buffer &a_buffer) const
Definition: named:96
tools::wroot::obj_array::stream
virtual bool stream(buffer &a_buffer) const
Definition: named:41
tools::file::size
bool size(const std::string &a_file, long &a_size)
Definition: fsize:13
tools::wroot::obj_list
Definition: named:90
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::wroot::AttFill_stream
bool AttFill_stream(buffer &a_buffer)
Definition: named:137
tools::wroot::buffer::write_fast_array
bool write_fast_array(const char *a_a, uint32 a_n)
Definition: buffer:114
tools::wroot::obj_array::operator=
obj_array & operator=(const obj_array &a_from)
Definition: named:74
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::wroot::Object_stream
bool Object_stream(buffer &a_buffer)
Definition: named:14
tools::waxml::end
void end(std::ostream &a_writer)
Definition: begend:31
tools::wroot::buffer
Definition: buffer:28
tools::wroot::AttLine_stream
bool AttLine_stream(buffer &a_buffer)
Definition: named:124
tools::wroot::obj_array::store_cls
virtual const std::string & store_cls() const
Definition: named:37
tools::wroot::AttMarker_stream
bool AttMarker_stream(buffer &a_buffer)
Definition: named:148
tools::wroot::obj_list::store_cls
virtual const std::string & store_cls() const
Definition: named:92
tools::wroot::obj_array::~obj_array
virtual ~obj_array()
Definition: named:65