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_branch_object 4 #ifndef tools_rroot_branch_object 5 #define tools_rroot_branch_object 5 #define tools_rroot_branch_object 6 6 7 #include "branch" 7 #include "branch" 8 8 9 namespace tools { 9 namespace tools { 10 namespace rroot { 10 namespace rroot { 11 11 12 class branch_object : public branch { 12 class branch_object : public branch { 13 typedef branch parent; 13 typedef branch parent; 14 public: 14 public: 15 static const std::string& s_class() { 15 static const std::string& s_class() { 16 static const std::string s_v("tools::rroot 16 static const std::string s_v("tools::rroot::branch_object"); 17 return s_v; 17 return s_v; 18 } 18 } 19 public: //iro 19 public: //iro 20 virtual void* cast(const std::string& a_clas 20 virtual void* cast(const std::string& a_class) const { 21 if(void* p = cmp_cast<branch_object>(this, 21 if(void* p = cmp_cast<branch_object>(this,a_class)) return p; 22 return parent::cast(a_class); 22 return parent::cast(a_class); 23 } 23 } 24 virtual const std::string& s_cls() const {re 24 virtual const std::string& s_cls() const {return s_class();} 25 public: 25 public: 26 static cid id_class() {return branch_object_ 26 static cid id_class() {return branch_object_cid();} 27 virtual void* cast(cid a_class) const { 27 virtual void* cast(cid a_class) const { 28 if(void* p = cmp_cast<branch_object>(this, 28 if(void* p = cmp_cast<branch_object>(this,a_class)) {return p;} 29 return parent::cast(a_class); 29 return parent::cast(a_class); 30 } 30 } 31 public: 31 public: 32 virtual bool stream(buffer& a_buffer) { 32 virtual bool stream(buffer& a_buffer) { 33 short v; 33 short v; 34 unsigned int _s,_c; 34 unsigned int _s,_c; 35 if(!a_buffer.read_version(v,_s,_c)) return 35 if(!a_buffer.read_version(v,_s,_c)) return false; 36 if(!parent::stream(a_buffer)) return false 36 if(!parent::stream(a_buffer)) return false; 37 if(!a_buffer.read(fClassName)) return fals 37 if(!a_buffer.read(fClassName)) return false; 38 if(!a_buffer.check_byte_count(_s,_c,"TBran 38 if(!a_buffer.check_byte_count(_s,_c,"TBranchObject")) return false; 39 return true; 39 return true; 40 } 40 } 41 public: //branch 41 public: //branch 42 public: 42 public: 43 branch_object(std::ostream& a_out,ifac& a_fa 43 branch_object(std::ostream& a_out,ifac& a_fac) 44 :parent(a_out,a_fac) 44 :parent(a_out,a_fac) 45 //,m_obj(0) 45 //,m_obj(0) 46 ,fClassName() 46 ,fClassName() 47 {} 47 {} 48 48 49 virtual ~branch_object(){ 49 virtual ~branch_object(){ 50 //delete m_obj; 50 //delete m_obj; 51 } 51 } 52 protected: 52 protected: 53 branch_object(const branch_object& a_from) 53 branch_object(const branch_object& a_from) 54 :iro(a_from),parent(a_from){} 54 :iro(a_from),parent(a_from){} 55 branch_object& operator=(const branch_object 55 branch_object& operator=(const branch_object&){return *this;} 56 public: 56 public: 57 const std::string& class_name() const {retur 57 const std::string& class_name() const {return fClassName;} 58 // iro* object() {return m_obj;} 58 // iro* object() {return m_obj;} 59 protected: 59 protected: 60 // iro* m_obj; 60 // iro* m_obj; 61 protected: 61 protected: 62 std::string fClassName; //Class name of refe 62 std::string fClassName; //Class name of referenced object 63 }; 63 }; 64 64 65 }} 65 }} 66 66 67 #endif 67 #endif