Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/wroot/branch_object

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 ]

  1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
  2 // See the file tools.license for terms.
  3 
  4 #ifndef tools_wroot_branch_object
  5 #define tools_wroot_branch_object
  6 
  7 #include "branch"
  8 
  9 namespace tools {
 10 namespace wroot {
 11 
 12 class branch_object : public branch {
 13   typedef branch parent;
 14 #ifdef TOOLS_MEM
 15   static const std::string& s_class() {
 16     static const std::string s_v("tools::wroot::branch_object");
 17     return s_v;
 18   }
 19 #endif
 20 public: //ibo
 21   virtual const std::string& store_cls() const {
 22     static const std::string s_v("TBranchObject");
 23     return s_v;
 24   }
 25   virtual bool stream(buffer& a_buffer) const {
 26     if(fClassName.empty()) {
 27       m_out << "tools::wroot::branch_object::stream : fClassName is empty." << std::endl;
 28       return false;
 29     }
 30     unsigned int c;
 31     if(!a_buffer.write_version(1,c)) return false;
 32     if(!parent::stream(a_buffer)) return false;
 33     if(!a_buffer.write(fClassName)) return false;
 34     if(!a_buffer.set_byte_count(c)) return false;
 35     return true;
 36   }
 37 
 38 public:
 39   branch_object(std::ostream& a_out,bool a_byte_swap,uint32 a_compression,
 40                 seek a_seek_directory,const std::string& a_name,const std::string& a_title,
 41                 bool a_verbose)
 42   :parent(a_out,a_byte_swap,a_compression,a_seek_directory,a_name,a_title,a_verbose)
 43   ,fClassName()
 44   {
 45 #ifdef TOOLS_MEM
 46     mem::increment(s_class().c_str());
 47 #endif
 48   }
 49   virtual ~branch_object(){
 50 #ifdef TOOLS_MEM
 51     mem::decrement(s_class().c_str());
 52 #endif
 53   }
 54 protected:
 55   branch_object(const branch_object& a_from):ibo(a_from),parent(a_from) {}
 56   branch_object& operator=(const branch_object& a_from){parent::operator=(a_from);return *this;}
 57 public:
 58   leaf_object* create_leaf(const std::string& a_name,const iobject& a_obj){
 59     fClassName = a_obj.store_class_name();
 60     leaf_object* lf = new leaf_object(m_out,a_name,a_obj);
 61     m_leaves.push_back(lf);
 62     return lf;
 63   }
 64 protected:
 65   std::string fClassName; //Class name of referenced object
 66 };
 67 
 68 }}
 69 
 70 #endif