Warning, /include/Geant4/tools/raxml_out is written in an unsupported language. File is not indexed.
0001 // Copyright (C) 2010, Guy Barrand. All rights reserved.
0002 // See the file tools.license for terms.
0003
0004 #ifndef tools_raxml_out
0005 #define tools_raxml_out
0006
0007 #include "handle"
0008
0009 namespace tools {
0010
0011 class raxml_out {
0012 public:
0013 raxml_out():m_hdl(0){}
0014 raxml_out(base_handle* a_hdl,const std::string& a_class,const std::string& a_path,const std::string& a_name)
0015 :m_hdl(a_hdl) //take ownership of a_hdl
0016 ,m_class(a_class)
0017 ,m_path(a_path),m_name(a_name)
0018 {}
0019 virtual ~raxml_out(){delete m_hdl;}
0020 public:
0021 raxml_out(const raxml_out& a_from)
0022 :m_hdl(a_from.m_hdl?a_from.m_hdl->copy():0)
0023 ,m_class(a_from.m_class)
0024 ,m_path(a_from.m_path),m_name(a_from.m_name)
0025 {}
0026 raxml_out& operator=(const raxml_out& a_from){
0027 if(&a_from==this) return *this;
0028
0029 delete m_hdl;
0030 m_hdl = a_from.m_hdl?a_from.m_hdl->copy():0;
0031
0032 m_class = a_from.m_class;
0033 m_path = a_from.m_path;
0034 m_name = a_from.m_name;
0035
0036 return *this;
0037 }
0038 public:
0039 void* object() const {
0040 if(!m_hdl) return 0;
0041 return m_hdl->object();
0042 }
0043 const std::string& cls() const {return m_class;}
0044 const std::string& path() const {return m_path;}
0045 const std::string& name() const {return m_name;}
0046 void disown() {if(m_hdl) m_hdl->disown();}
0047 protected:
0048 base_handle* m_hdl;
0049 std::string m_class;
0050 std::string m_path;
0051 std::string m_name;
0052 };
0053
0054 }
0055
0056 #include <vector>
0057
0058 namespace tools {
0059
0060 //for tools::holder<raxml_outs>
0061 class raxml_outs : public std::vector<raxml_out> {
0062 public:
0063 static const std::string& s_class() {
0064 static const std::string s_v("tools::raxml_outs");
0065 return s_v;
0066 }
0067 public:
0068 raxml_outs(){}
0069 raxml_outs(const std::vector<raxml_out>& a_v)
0070 :std::vector<raxml_out>(a_v)
0071 {}
0072 public:
0073 raxml_outs(const raxml_outs& a_from)
0074 :std::vector<raxml_out>(a_from)
0075 {}
0076 raxml_outs& operator=(const raxml_outs& a_from){
0077 std::vector<raxml_out>::operator=(a_from);
0078 return *this;
0079 }
0080 };
0081
0082 }
0083
0084 #endif