Geant4 Cross Reference

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

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_mt_basket_add
  5 #define tools_wroot_mt_basket_add
  6 
  7 // used in pntuple.
  8 
  9 #include "branch"
 10 
 11 namespace tools {
 12 namespace wroot {
 13 
 14 class mt_basket_add : public virtual branch::iadd_basket {
 15   typedef branch::iadd_basket parent;
 16 public:
 17   virtual bool add_basket(basket* a_basket) { //we take ownership of a_basket.
 18     m_mutex.lock();
 19     uint32 add_bytes,nout;
 20     if(!m_main_branch.add_basket(m_main_file,*a_basket,add_bytes,nout)) {
 21       m_mutex.unlock();
 22       delete a_basket;
 23       return false;
 24     }
 25     m_main_branch.set_tot_bytes(m_main_branch.tot_bytes()+add_bytes);
 26     m_main_branch.set_zip_bytes(m_main_branch.zip_bytes()+nout);
 27     m_mutex.unlock();
 28     delete a_basket;
 29     return true;
 30   }
 31 public:
 32   mt_basket_add(imutex& a_mutex,ifile& a_main_file,branch& a_main_branch)
 33   :m_mutex(a_mutex),m_main_file(a_main_file),m_main_branch(a_main_branch)
 34   {}
 35 protected:
 36   mt_basket_add(const mt_basket_add& a_from):parent()
 37   ,m_mutex(a_from.m_mutex),m_main_file(a_from.m_main_file),m_main_branch(a_from.m_main_branch)
 38   {}
 39   mt_basket_add& operator=(const mt_basket_add&){return *this;}
 40 protected:
 41   imutex& m_mutex;
 42   ifile& m_main_file;
 43   branch& m_main_branch;
 44 };
 45 
 46 }}
 47 
 48 #endif