Scarab  v2.4.3
Project 8 C++ Utility Library
version_wrapper.hh
Go to the documentation of this file.
1 /*
2  * version_wrapper.hh
3  *
4  * Created on: Jul 23, 2018
5  * Author: N.S. Oblath
6  */
7 
8 #ifndef SCARAB_VERSION_WRAPPER_HH_
9 #define SCARAB_VERSION_WRAPPER_HH_
10 
11 #include "scarab_version.hh"
12 
13 #include "singleton.hh"
14 
15 namespace scarab
16 {
17 
18  class SCARAB_API version_wrapper : public scarab::singleton< version_wrapper >, public scarab::version_ifc
19  {
20  protected:
23  version_wrapper() : f_imp( new version() ) {}
25 
26  public:
28  {
29  if( a_imp != nullptr ) f_imp.reset( a_imp );
30  return;
31  }
32 
33  public:
34  virtual unsigned major_version() const
35  {
36  return f_imp->major_version();
37  }
38  virtual unsigned minor_version() const
39  {
40  return f_imp->minor_version();
41  }
42  virtual unsigned patch_version() const
43  {
44  return f_imp->patch_version();
45  }
46 
47  virtual const std::string& version_str() const
48  {
49  return f_imp->version_str();
50  }
51 
52  virtual const std::string& package() const
53  {
54  return f_imp->package();
55  }
56  virtual const std::string& commit() const
57  {
58  return f_imp->commit();
59  }
60 
61  virtual const std::string& exe_name() const
62  {
63  return f_imp->exe_name();
64  }
65  virtual const std::string& hostname() const
66  {
67  return f_imp->hostname();
68  }
69  virtual const std::string& username() const
70  {
71  return f_imp->username();
72  }
73 
74  virtual std::string version_info_string() const
75  {
76  return f_imp->version_info_string();
77  }
78 
79  private:
80  std::unique_ptr< version_semantic > f_imp;
81  };
82 
83 }
84 
85 #endif /* SCARAB_VERSION_WRAPPER_HH_ */
virtual std::string version_info_string() const
virtual const std::string & version_str() const
virtual unsigned patch_version() const
#define SCARAB_API
Definition: scarab_api.hh:24
virtual const std::string & hostname() const
virtual const std::string & username() const
virtual unsigned major_version() const
virtual const std::string & package() const
void set_imp(scarab::version_semantic *a_imp)
virtual const std::string & exe_name() const
std::unique_ptr< version_semantic > f_imp
virtual unsigned minor_version() const
virtual const std::string & commit() const