Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/wroot/columns.icc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /externals/g4tools/include/tools/wroot/columns.icc (Version 11.3.0) and /externals/g4tools/include/tools/wroot/columns.icc (Version 9.1)


  1 // Copyright (C) 2010, Guy Barrand. All rights      1 
  2 // See the file tools.license for terms.          
  3                                                   
  4 // common columns code for ntuple and base_pnt    
  5                                                   
  6   template <class T>                              
  7   class column_ref : public virtual icol {        
  8 #ifdef TOOLS_MEM                                  
  9     static const std::string& s_class() {         
 10       static const std::string s_v("tools::wro    
 11       return s_v;                                 
 12     }                                             
 13 #endif                                            
 14   public:                                         
 15     static cid id_class() {                       
 16       static const T s_v = T(); //do that for     
 17       return _cid(s_v)+10000;                     
 18     }                                             
 19     virtual void* cast(cid a_class) const {       
 20       if(void* p = cmp_cast<column_ref>(this,a    
 21       else return 0;                              
 22     }                                             
 23     virtual cid id_cls() const {return id_clas    
 24   public: //icol                                  
 25     virtual void add() {}                         
 26     virtual void set_def() {}                     
 27     virtual const std::string& name() const {r    
 28     virtual void set_basket_size(uint32 a_size    
 29     virtual branch& get_branch() const {return    
 30     virtual base_leaf* get_leaf() const {retur    
 31   public:                                         
 32     column_ref(branch& a_branch,const std::str    
 33     :m_branch(a_branch),m_leaf(0)                 
 34     {                                             
 35 #ifdef TOOLS_MEM                                  
 36       mem::increment(s_class().c_str());          
 37 #endif                                            
 38       m_leaf = m_branch.create_leaf_ref<T>(a_n    
 39     }                                             
 40     virtual ~column_ref(){                        
 41 #ifdef TOOLS_MEM                                  
 42       mem::decrement(s_class().c_str());          
 43 #endif                                            
 44     }                                             
 45   protected:                                      
 46     column_ref(const column_ref& a_from)          
 47     :icol(a_from)                                 
 48     ,m_branch(a_from.m_branch)                    
 49     ,m_leaf(0)                                    
 50     {}                                            
 51     column_ref& operator=(const column_ref& a_    
 52       if(&a_from==this) return *this;             
 53       m_leaf = 0;                                 
 54       return *this;                               
 55     }                                             
 56   public:                                         
 57     const T& variable() const {return m_leaf->    
 58     T& variable() {return m_leaf->variable();}    
 59   protected:                                      
 60     branch& m_branch;                             
 61     leaf_ref<T>* m_leaf;                          
 62   };                                              
 63                                                   
 64   template <class T>                              
 65   class column : public column_ref<T> {           
 66     typedef column_ref<T> parent;                 
 67 #ifdef TOOLS_MEM                                  
 68     static const std::string& s_class() {         
 69       static const std::string s_v("tools::wro    
 70       return s_v;                                 
 71     }                                             
 72 #endif                                            
 73   public:                                         
 74     static cid id_class() {                       
 75       static const T s_v = T(); //do that for     
 76       return _cid(s_v);                           
 77     }                                             
 78     virtual void* cast(cid a_class) const {       
 79       if(void* p = cmp_cast<column>(this,a_cla    
 80       else return 0;                              
 81     }                                             
 82     virtual cid id_cls() const {return id_clas    
 83   public: //icol                                  
 84     virtual void set_def() {m_value = m_def;}     
 85   public:                                         
 86     column(branch& a_branch,const std::string&    
 87     :parent(a_branch,a_name,m_value)              
 88     ,m_def(a_def),m_value(a_def)                  
 89     {                                             
 90 #ifdef TOOLS_MEM                                  
 91       mem::increment(s_class().c_str());          
 92 #endif                                            
 93     }                                             
 94     virtual ~column(){                            
 95 #ifdef TOOLS_MEM                                  
 96       mem::decrement(s_class().c_str());          
 97 #endif                                            
 98     }                                             
 99   protected:                                      
100     column(const column& a_from)                  
101     :icol(a_from)                                 
102     ,parent(a_from)                               
103     ,m_def(a_from.m_def)                          
104     ,m_value(a_from.m_value)                      
105     {}                                            
106     column& operator=(const column& a_from){      
107       if(&a_from==this) return *this;             
108       parent::operator=(a_from);                  
109       m_def = a_from.m_def;                       
110       m_value = a_from.m_value;                   
111       return *this;                               
112     }                                             
113   public:                                         
114     column& operator=(const T& a_value){m_valu    
115     bool fill(const T& a_value) {m_value = a_v    
116   protected:                                      
117     T m_def;                                      
118     T m_value;                                    
119   };                                              
120                                                   
121   class column_string_ref : public virtual ico    
122 #ifdef TOOLS_MEM                                  
123     static const std::string& s_class() {         
124       static const std::string s_v("tools::wro    
125       return s_v;                                 
126     }                                             
127 #endif                                            
128   public:                                         
129     static cid id_class() {                       
130       static const std::string s_v;               
131       return _cid(s_v)+10000;                     
132     }                                             
133     virtual void* cast(cid a_class) const {       
134       if(void* p = cmp_cast<column_string_ref>    
135       else return 0;                              
136     }                                             
137     virtual cid id_cls() const {return id_clas    
138   public: //icol                                  
139     virtual void add() {}                         
140     virtual void set_def() {}                     
141     virtual const std::string& name() const {r    
142     virtual void set_basket_size(uint32 a_size    
143     virtual branch& get_branch() const {return    
144     virtual base_leaf* get_leaf() const {retur    
145   public:                                         
146     column_string_ref(branch& a_branch,const s    
147     :m_branch(a_branch),m_leaf(0)                 
148     {                                             
149 #ifdef TOOLS_MEM                                  
150       mem::increment(s_class().c_str());          
151 #endif                                            
152       m_leaf = m_branch.create_leaf_string_ref    
153     }                                             
154     virtual ~column_string_ref(){                 
155 #ifdef TOOLS_MEM                                  
156       mem::decrement(s_class().c_str());          
157 #endif                                            
158     }                                             
159   protected:                                      
160     column_string_ref(const column_string_ref&    
161     :icol(a_from)                                 
162     ,m_branch(a_from.m_branch)                    
163     ,m_leaf(0)                                    
164     {}                                            
165     column_string_ref& operator=(const column_    
166       if(&a_from==this) return *this;             
167       m_leaf = 0;                                 
168       return *this;                               
169     }                                             
170   public:                                         
171     const std::string& variable() const {retur    
172     std::string& variable() {return m_leaf->va    
173   protected:                                      
174     branch& m_branch;                             
175     leaf_string_ref* m_leaf;                      
176   };                                              
177                                                   
178   class column_string : public column_string_r    
179     typedef column_string_ref parent;             
180 #ifdef TOOLS_MEM                                  
181     static const std::string& s_class() {         
182       static const std::string s_v("tools::wro    
183       return s_v;                                 
184     }                                             
185 #endif                                            
186   public:                                         
187     static cid id_class() {                       
188       static const std::string s_v;               
189       return _cid(s_v);                           
190     }                                             
191     virtual void* cast(cid a_class) const {       
192       if(void* p = cmp_cast<column_string>(thi    
193       else return 0;                              
194     }                                             
195     virtual cid id_cls() const {return id_clas    
196   public: //icol                                  
197     virtual void set_def() {m_value = m_def;}     
198   public:                                         
199     column_string(branch& a_branch,const std::    
200     :parent(a_branch,a_name,m_value)              
201     ,m_def(a_def),m_value(a_def)                  
202     {                                             
203 #ifdef TOOLS_MEM                                  
204       mem::increment(s_class().c_str());          
205 #endif                                            
206     }                                             
207     virtual ~column_string(){                     
208 #ifdef TOOLS_MEM                                  
209       mem::decrement(s_class().c_str());          
210 #endif                                            
211     }                                             
212   protected:                                      
213     column_string(const column_string& a_from)    
214     :icol(a_from)                                 
215     ,parent(a_from)                               
216     ,m_def(a_from.m_def)                          
217     ,m_value(a_from.m_value)                      
218     {}                                            
219     column_string& operator=(const column_stri    
220       if(&a_from==this) return *this;             
221       parent::operator=(a_from);                  
222       m_def = a_from.m_def;                       
223       m_value = a_from.m_value;                   
224       return *this;                               
225     }                                             
226   public:                                         
227     column_string& operator=(const std::string    
228     bool fill(const std::string& a_value) {m_v    
229   protected:                                      
230     std::string m_def;                            
231     std::string m_value;                          
232   };                                              
233                                                   
234   class column_vector_string_ref : public colu    
235     typedef column_string_ref parent;             
236 #ifdef TOOLS_MEM                                  
237     static const std::string& s_class() {         
238       static const std::string s_v("tools::wro    
239       return s_v;                                 
240     }                                             
241 #endif                                            
242   public:                                         
243     static cid id_class() {return _cid_std_vec    
244     virtual void* cast(cid a_class) const {       
245       if(void* p = cmp_cast<column_vector_stri    
246       else return 0;                              
247     }                                             
248     virtual cid id_cls() const {return id_clas    
249   public: //icol                                  
250     virtual void add() {                          
251       m_string.clear();                           
252       tools_vforcit(std::string,m_ref,it) {       
253         if(it!=m_ref.begin()) m_string += m_se    
254         m_string += *it;                          
255       }                                           
256       parent::add();                              
257     }                                             
258   public:                                         
259     column_vector_string_ref(branch& a_branch,    
260     :parent(a_branch,a_name,m_string)             
261     ,m_ref(a_ref)                                 
262     ,m_sep(a_sep)                                 
263     {                                             
264 #ifdef TOOLS_MEM                                  
265       mem::increment(s_class().c_str());          
266 #endif                                            
267     }                                             
268     virtual ~column_vector_string_ref(){          
269 #ifdef TOOLS_MEM                                  
270       mem::decrement(s_class().c_str());          
271 #endif                                            
272     }                                             
273   protected:                                      
274     column_vector_string_ref(const column_vect    
275     :icol(a_from)                                 
276     ,parent(a_from)                               
277     ,m_ref(a_from.m_ref)                          
278     ,m_sep(a_from.m_sep)                          
279     {}                                            
280     column_vector_string_ref& operator=(const     
281       if(&a_from==this) return *this;             
282       m_sep = a_from.m_sep;                       
283       return *this;                               
284     }                                             
285   public:                                         
286     const std::vector<std::string>& variable()    
287     std::vector<std::string>& variable() {retu    
288   protected:                                      
289     const std::vector<std::string>& m_ref;        
290     char m_sep;                                   
291     std::string m_string;                         
292   };                                              
293                                                   
294   class column_vector_string : public column_v    
295     typedef column_vector_string_ref parent;      
296 #ifdef TOOLS_MEM                                  
297     static const std::string& s_class() {         
298       static const std::string s_v("tools::wro    
299       return s_v;                                 
300     }                                             
301 #endif                                            
302   public:                                         
303     static cid id_class() {return _cid_std_vec    
304     virtual void* cast(cid a_class) const {       
305       if(void* p = cmp_cast<column_vector_stri    
306       else return 0;                              
307     }                                             
308     virtual cid id_cls() const {return id_clas    
309   public: //icol                                  
310     virtual void set_def() {m_value = m_def;}     
311   public:                                         
312     column_vector_string(branch& a_branch,cons    
313     :parent(a_branch,a_name,m_value,a_sep)        
314     ,m_def(a_def),m_value(a_def)                  
315     {                                             
316 #ifdef TOOLS_MEM                                  
317       mem::increment(s_class().c_str());          
318 #endif                                            
319     }                                             
320     virtual ~column_vector_string(){              
321 #ifdef TOOLS_MEM                                  
322       mem::decrement(s_class().c_str());          
323 #endif                                            
324     }                                             
325   protected:                                      
326     column_vector_string(const column_vector_s    
327     :icol(a_from)                                 
328     ,parent(a_from)                               
329     ,m_def(a_from.m_def)                          
330     ,m_value(a_from.m_value)                      
331     {}                                            
332     column_vector_string& operator=(const colu    
333       if(&a_from==this) return *this;             
334       parent::operator=(a_from);                  
335       m_def = a_from.m_def;                       
336       m_value = a_from.m_value;                   
337       return *this;                               
338     }                                             
339   public:                                         
340     column_vector_string& operator=(const std:    
341     bool fill(const std::vector<std::string>&     
342   protected:                                      
343     std::vector<std::string> m_def;               
344     std::vector<std::string> m_value;             
345   };                                              
346                                                   
347   template <class T>                              
348   class std_vector_column_ref : public virtual    
349 #ifdef TOOLS_MEM                                  
350     static const std::string& s_class() {         
351       static const std::string s_v("tools::wro    
352       return s_v;                                 
353     }                                             
354 #endif                                            
355   public:                                         
356     static cid id_class() {return _cid_std_vec    
357     virtual void* cast(cid a_class) const {       
358       if(void* p = cmp_cast<std_vector_column_    
359       else return 0;                              
360     }                                             
361     virtual cid id_cls() const {return id_clas    
362   public: //icol                                  
363     virtual void add() {                          
364       if(m_leaf_count) m_leaf_count->fill((int    
365     }                                             
366     virtual void set_def() {}                     
367     virtual const std::string& name() const {r    
368     virtual void set_basket_size(uint32 a_size    
369     virtual branch& get_branch() const {return    
370     virtual base_leaf* get_leaf() const {retur    
371   public:                                         
372     std_vector_column_ref(branch& a_branch,con    
373     :m_branch(a_branch)                           
374     ,m_ref(a_ref)                                 
375     ,m_leaf(0)                                    
376     ,m_leaf_count(0) //row_wise                   
377     {                                             
378 #ifdef TOOLS_MEM                                  
379       mem::increment(s_class().c_str());          
380 #endif                                            
381       if(a_branch.store_cls()==branch_element_    
382         //::printf("debug : std_vector_column_    
383         int id = -1;  //same as in std_vector_    
384         int type = 0;                             
385         m_leaf = m_branch.create_leaf_element(    
386       } else { //row_wise.                        
387         //::printf("debug : std_vector_column_    
388         std::string leaf_count_name = a_name+"    
389         m_leaf_count = m_branch.create_leaf<in    
390         m_leaf = m_branch.create_leaf_std_vect    
391         m_leaf->set_title(a_name+"["+leaf_coun    
392       }                                           
393     }                                             
394     virtual ~std_vector_column_ref(){             
395 #ifdef TOOLS_MEM                                  
396       mem::decrement(s_class().c_str());          
397 #endif                                            
398     }                                             
399   protected:                                      
400     std_vector_column_ref(const std_vector_col    
401     :icol(a_from)                                 
402     ,m_branch(a_from.m_branch)                    
403     ,m_ref(a_from.m_ref)                          
404     ,m_leaf(0)                                    
405     ,m_leaf_count(0)                              
406     {}                                            
407     std_vector_column_ref& operator=(const std    
408       if(&a_from==this) return *this;             
409       m_leaf = 0;                                 
410       m_leaf_count = 0;                           
411       return *this;                               
412     }                                             
413   public:                                         
414     const std::vector<T>& variable() const {re    
415     std::vector<T>& variable() {return const_c    
416   protected:                                      
417     branch& m_branch;                             
418     const std::vector<T>& m_ref;                  
419     base_leaf* m_leaf;                            
420     leaf<int>* m_leaf_count; //row_wise.          
421   };                                              
422                                                   
423   template <class T>                              
424   class std_vector_column : public std_vector_    
425     typedef std_vector_column_ref<T> parent;      
426 #ifdef TOOLS_MEM                                  
427     static const std::string& s_class() {         
428       static const std::string s_v("tools::wro    
429       return s_v;                                 
430     }                                             
431 #endif                                            
432   public:                                         
433     static cid id_class() {return _cid_std_vec    
434     virtual void* cast(cid a_class) const {       
435       if(void* p = cmp_cast<std_vector_column>    
436       else return 0;                              
437     }                                             
438     virtual cid id_cls() const {return id_clas    
439   public: //icol                                  
440     virtual void set_def() {m_value = m_def;}     
441   public:                                         
442     std_vector_column(branch& a_branch,const s    
443     :parent(a_branch,a_name,m_value)              
444     ,m_def(a_def),m_value(a_def)                  
445     {                                             
446 #ifdef TOOLS_MEM                                  
447       mem::increment(s_class().c_str());          
448 #endif                                            
449     }                                             
450     virtual ~std_vector_column(){                 
451 #ifdef TOOLS_MEM                                  
452       mem::decrement(s_class().c_str());          
453 #endif                                            
454     }                                             
455   protected:                                      
456     std_vector_column(const std_vector_column&    
457     :icol(a_from)                                 
458     ,parent(a_from)                               
459     ,m_def(a_from.m_def)                          
460     ,m_value(a_from.m_value)                      
461     {}                                            
462     std_vector_column& operator=(const std_vec    
463       if(&a_from==this) return *this;             
464       parent::operator=(a_from);                  
465       m_def = a_from.m_def;                       
466       m_value = a_from.m_value;                   
467       return *this;                               
468     }                                             
469   public:                                         
470     std_vector_column& operator=(const std::ve    
471     bool fill(const std::vector<T>& a_value) {    
472   protected:                                      
473     std::vector<T> m_def;                         
474     std::vector<T> m_value;                       
475   };                                              
476