Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights 1 // Copyright (C) 2010, Guy Barrand. All rights reserved. 2 // See the file tools.license for terms. 2 // See the file tools.license for terms. 3 3 4 #ifndef tools_rroot_tree_index 4 #ifndef tools_rroot_tree_index 5 #define tools_rroot_tree_index 5 #define tools_rroot_tree_index 6 6 7 #include "named" 7 #include "named" 8 8 9 namespace tools { 9 namespace tools { 10 namespace rroot { 10 namespace rroot { 11 11 12 class tree_index : public virtual iro { 12 class tree_index : public virtual iro { 13 static const std::string& s_store_class() { 13 static const std::string& s_store_class() { 14 static const std::string s_v("TTreeIndex") 14 static const std::string s_v("TTreeIndex"); 15 return s_v; 15 return s_v; 16 } 16 } 17 public: 17 public: 18 static const std::string& s_class() { 18 static const std::string& s_class() { 19 static const std::string s_v("tools::rroot 19 static const std::string s_v("tools::rroot::tree_index"); 20 return s_v; 20 return s_v; 21 } 21 } 22 public: //iro 22 public: //iro 23 virtual void* cast(const std::string& a_clas 23 virtual void* cast(const std::string& a_class) const { 24 if(void* p = cmp_cast<tree_index>(this,a_c 24 if(void* p = cmp_cast<tree_index>(this,a_class)) return p; 25 return 0; 25 return 0; 26 } 26 } 27 virtual const std::string& s_cls() const {re 27 virtual const std::string& s_cls() const {return s_class();} 28 public: 28 public: 29 static cid id_class() {return branch_cid();} 29 static cid id_class() {return branch_cid();} 30 virtual void* cast(cid a_class) const { 30 virtual void* cast(cid a_class) const { 31 if(void* p = cmp_cast<tree_index>(this,a_c 31 if(void* p = cmp_cast<tree_index>(this,a_class)) {return p;} 32 else return 0; 32 else return 0; 33 } 33 } 34 public: 34 public: 35 virtual iro* copy() const {return new tree_i 35 virtual iro* copy() const {return new tree_index(*this);} 36 virtual bool stream(buffer& a_buffer) { 36 virtual bool stream(buffer& a_buffer) { 37 uint32 startpos = a_buffer.length(); 37 uint32 startpos = a_buffer.length(); 38 38 39 unsigned int _s,_c; << 39 unsigned int s,c; 40 short v; 40 short v; 41 if(!a_buffer.read_version(v,_s,_c)) return << 41 if(!a_buffer.read_version(v,s,c)) return false; 42 //::printf("debug : tree_index::stream : v 42 //::printf("debug : tree_index::stream : version %d count %d\n",v,c); 43 43 44 if(!virtual_index_stream(a_buffer)) return 44 if(!virtual_index_stream(a_buffer)) return false; 45 45 46 std::string ds; 46 std::string ds; 47 if(!a_buffer.read(ds)) return false; 47 if(!a_buffer.read(ds)) return false; //fMajorName 48 //::printf("debug : tree_index::stream : f 48 //::printf("debug : tree_index::stream : fMajorName \"%s\"\n",ds.c_str()); 49 if(!a_buffer.read(ds)) return false; 49 if(!a_buffer.read(ds)) return false; //fMinorName 50 //::printf("debug : tree_index::stream : f 50 //::printf("debug : tree_index::stream : fMinorName \"%s\"\n",ds.c_str()); 51 51 52 int64 m_n; 52 int64 m_n; 53 if(!a_buffer.read(m_n)) return false; //fN 53 if(!a_buffer.read(m_n)) return false; //fN 54 //::printf("debug : tree_index::stream : f 54 //::printf("debug : tree_index::stream : fN %ld\n",m_n); 55 55 56 if(!dummy_array_stream<int64>(a_buffer,int 56 if(!dummy_array_stream<int64>(a_buffer,int(m_n))) return false; 57 if(!dummy_array_stream<int64>(a_buffer,int 57 if(!dummy_array_stream<int64>(a_buffer,int(m_n))) return false; 58 58 59 //FIXME : still problem with this streamer 59 //FIXME : still problem with this streamer. 60 60 61 a_buffer.set_offset(startpos+_c+sizeof(uns << 61 a_buffer.set_offset(startpos+c+sizeof(unsigned int)); 62 62 63 if(!a_buffer.check_byte_count(_s,_c,s_stor << 63 if(!a_buffer.check_byte_count(s,c,s_store_class())) return false; 64 64 65 //::printf("debug : tree_index::stream : o 65 //::printf("debug : tree_index::stream : ok\n"); 66 return true; 66 return true; 67 } 67 } 68 68 69 public: 69 public: 70 tree_index() 70 tree_index() 71 { 71 { 72 #ifdef TOOLS_MEM 72 #ifdef TOOLS_MEM 73 mem::increment(s_class().c_str()); 73 mem::increment(s_class().c_str()); 74 #endif 74 #endif 75 } 75 } 76 virtual ~tree_index(){ 76 virtual ~tree_index(){ 77 #ifdef TOOLS_MEM 77 #ifdef TOOLS_MEM 78 mem::decrement(s_class().c_str()); 78 mem::decrement(s_class().c_str()); 79 #endif 79 #endif 80 } 80 } 81 protected: 81 protected: 82 tree_index(const tree_index& a_from):iro(a_f 82 tree_index(const tree_index& a_from):iro(a_from){} 83 tree_index& operator=(const tree_index&){ret 83 tree_index& operator=(const tree_index&){return *this;} 84 protected: 84 protected: 85 static const std::string& virtual_index_s_st 85 static const std::string& virtual_index_s_store_class() { 86 static const std::string s_v("TVirtualInde 86 static const std::string s_v("TVirtualIndex"); 87 return s_v; 87 return s_v; 88 } 88 } 89 bool virtual_index_stream(buffer& a_buffer){ 89 bool virtual_index_stream(buffer& a_buffer){ 90 short v; 90 short v; 91 unsigned int _s,_c; << 91 unsigned int s, c; 92 if(!a_buffer.read_version(v,_s,_c)) return << 92 if(!a_buffer.read_version(v,s,c)) return false; 93 //::printf("debug : virtual_index::stream 93 //::printf("debug : virtual_index::stream : version %d count %d\n",v,c); 94 std::string ds; 94 std::string ds; 95 if(!Named_stream(a_buffer,ds,ds)) return f 95 if(!Named_stream(a_buffer,ds,ds)) return false; 96 if(!a_buffer.check_byte_count(_s,_c,virtua << 96 if(!a_buffer.check_byte_count(s,c,virtual_index_s_store_class())) 97 return false; 97 return false; 98 return true; 98 return true; 99 } 99 } 100 100 101 }; 101 }; 102 102 103 }} 103 }} 104 104 105 #endif 105 #endif