Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/raxml_out

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_raxml_out
  5 #define tools_raxml_out
  6 
  7 #include "handle"
  8 
  9 namespace tools {
 10 
 11 class raxml_out {
 12 public:
 13   raxml_out():m_hdl(0){}
 14   raxml_out(base_handle* a_hdl,const std::string& a_class,const std::string& a_path,const std::string& a_name)
 15   :m_hdl(a_hdl) //take ownership of a_hdl
 16   ,m_class(a_class)
 17   ,m_path(a_path),m_name(a_name)
 18   {}
 19   virtual ~raxml_out(){delete m_hdl;}
 20 public:
 21   raxml_out(const raxml_out& a_from)
 22   :m_hdl(a_from.m_hdl?a_from.m_hdl->copy():0)
 23   ,m_class(a_from.m_class)
 24   ,m_path(a_from.m_path),m_name(a_from.m_name)
 25   {}
 26   raxml_out& operator=(const raxml_out& a_from){
 27     if(&a_from==this) return *this;
 28 
 29     delete m_hdl;
 30     m_hdl = a_from.m_hdl?a_from.m_hdl->copy():0;
 31 
 32     m_class = a_from.m_class;
 33     m_path = a_from.m_path;
 34     m_name = a_from.m_name;
 35 
 36     return *this;
 37   }
 38 public:
 39   void* object() const {
 40     if(!m_hdl) return 0;
 41     return m_hdl->object();
 42   }
 43   const std::string& cls() const {return m_class;}
 44   const std::string& path() const {return m_path;}
 45   const std::string& name() const {return m_name;}
 46   void disown() {if(m_hdl) m_hdl->disown();}
 47 protected:
 48   base_handle* m_hdl;
 49   std::string m_class;
 50   std::string m_path;
 51   std::string m_name;
 52 };
 53 
 54 }
 55 
 56 #include <vector>
 57 
 58 namespace tools {
 59 
 60 //for tools::holder<raxml_outs>
 61 class raxml_outs : public std::vector<raxml_out> {
 62 public:
 63   static const std::string& s_class() {
 64     static const std::string s_v("tools::raxml_outs");
 65     return s_v;
 66   }
 67 public:
 68   raxml_outs(){}
 69   raxml_outs(const std::vector<raxml_out>& a_v)
 70   :std::vector<raxml_out>(a_v)
 71   {}
 72 public:
 73   raxml_outs(const raxml_outs& a_from)
 74   :std::vector<raxml_out>(a_from)
 75   {}
 76   raxml_outs& operator=(const raxml_outs& a_from){
 77     std::vector<raxml_out>::operator=(a_from);
 78     return *this;
 79   }
 80 };
 81 
 82 }
 83 
 84 #endif