g4tools  5.4.0
raxml_out
Go to the documentation of this file.
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:
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:
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 inlib::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:
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
tools::base_handle
Definition: handle:15
tools::raxml_outs::raxml_outs
raxml_outs(const std::vector< raxml_out > &a_v)
Definition: raxml_out:69
tools::raxml_out::raxml_out
raxml_out(const raxml_out &a_from)
Definition: raxml_out:21
tools::raxml_out::m_path
std::string m_path
Definition: raxml_out:50
tools::raxml_out::disown
void disown()
Definition: raxml_out:46
tools::raxml_outs
Definition: raxml_out:61
tools::raxml_out::m_name
std::string m_name
Definition: raxml_out:51
tools::raxml_out
Definition: raxml_out:11
tools::raxml_out::object
void * object() const
Definition: raxml_out:39
tools::raxml_out::name
const std::string & name() const
Definition: raxml_out:45
tools::raxml_out::raxml_out
raxml_out(base_handle *a_hdl, const std::string &a_class, const std::string &a_path, const std::string &a_name)
Definition: raxml_out:14
tools::copy
bool copy(T *&a_v, I a_n, const T *a_from)
Definition: carray:30
tools::raxml_out::raxml_out
raxml_out()
Definition: raxml_out:13
handle
tools::base_handle::disown
virtual void disown()=0
tools::base_handle::copy
virtual base_handle * copy()=0
tools::raxml_out::cls
const std::string & cls() const
Definition: raxml_out:43
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::base_handle::object
virtual void * object() const =0
tools::raxml_outs::raxml_outs
raxml_outs(const raxml_outs &a_from)
Definition: raxml_out:73
tools::raxml_out::operator=
raxml_out & operator=(const raxml_out &a_from)
Definition: raxml_out:26
tools::raxml_outs::raxml_outs
raxml_outs()
Definition: raxml_out:68
tools::raxml_out::~raxml_out
virtual ~raxml_out()
Definition: raxml_out:19
tools::raxml_out::m_hdl
base_handle * m_hdl
Definition: raxml_out:48
tools::raxml_out::m_class
std::string m_class
Definition: raxml_out:49
tools::raxml_outs::operator=
raxml_outs & operator=(const raxml_outs &a_from)
Definition: raxml_out:76
tools::raxml_outs::s_class
static const std::string & s_class()
Definition: raxml_out:63
tools::raxml_out::path
const std::string & path() const
Definition: raxml_out:44