Scarab  v2.4.3
Project 8 C++ Utility Library
version_base.hh
Go to the documentation of this file.
1 /*
2  * version_base.hh
3  *
4  * Created on: Jul 23, 2018
5  * Author: N.S. Oblath
6  */
7 
8 #ifndef SCARAB_VERSION_BASE_HH_
9 #define SCARAB_VERSION_BASE_HH_
10 
11 #include "scarab_api.hh"
12 
13 #include <string>
14 
15 namespace scarab
16 {
17 
19  {
20  public:
21  version_ifc();
22  version_ifc( const version_ifc& );
23  virtual ~version_ifc();
24 
25  version_ifc& operator=( const version_ifc& );
26 
27  virtual unsigned major_version() const = 0;
28  virtual unsigned minor_version() const = 0;
29  virtual unsigned patch_version() const = 0;
30 
31  virtual const std::string& version_str() const = 0;
32 
33  virtual const std::string& package() const = 0;
34  virtual const std::string& commit() const = 0;
35 
36  virtual const std::string& exe_name() const = 0;
37  virtual const std::string& hostname() const = 0;
38  virtual const std::string& username() const = 0;
39 
40  virtual std::string version_info_string() const = 0;
41  };
42 
44  {
45  public:
47  version_semantic( unsigned a_maj_ver, unsigned a_min_ver, unsigned a_patch_ver );
48  version_semantic( const std::string& a_ver );
49  version_semantic( const version_semantic& a_orig );
51 
52  version_semantic& operator=( const version_semantic& a_orig );
53 
55  bool operator<( const version_semantic& a_other );
57  bool operator==( const version_semantic& a_other );
58 
59  virtual unsigned major_version() const;
60  virtual unsigned minor_version() const;
61  virtual unsigned patch_version() const;
62 
63  virtual const std::string& version_str() const;
64 
65  virtual const std::string& package() const;
66  virtual const std::string& commit() const;
67 
68  virtual const std::string& exe_name() const;
69  virtual const std::string& hostname() const;
70  virtual const std::string& username() const;
71 
72  virtual std::string version_info_string() const;
73 
74  public:
75  bool parse( const std::string& a_ver );
76 
77  bool combine( unsigned a_maj_ver, unsigned a_min_ver, unsigned a_patch_ver );
78 
79  bool update_exe_host_user();
80 
81  protected:
82  static char s_delimeter;
83 
84  unsigned f_major_ver;
85  unsigned f_minor_ver;
86  unsigned f_patch_ver;
87  std::string f_version;
88 
89  std::string f_package;
90  std::string f_commit;
91 
92  std::string f_exe_name;
93  std::string f_hostname;
94  std::string f_username;
95  };
96 
97 
98  inline unsigned version_semantic::major_version() const
99  {
100  return f_major_ver;
101  }
102  inline unsigned version_semantic::minor_version() const
103  {
104  return f_minor_ver;
105  }
106  inline unsigned version_semantic::patch_version() const
107  {
108  return f_patch_ver;
109  }
110 
111  inline const std::string& version_semantic::version_str() const
112  {
113  return f_version;
114  }
115 
116  inline const std::string& version_semantic::package() const
117  {
118  return f_package;
119  }
120 
121  inline const std::string& version_semantic::commit() const
122  {
123  return f_commit;
124  }
125 
126  inline const std::string& version_semantic::exe_name() const
127  {
128  return f_exe_name;
129  }
130  inline const std::string& version_semantic::hostname() const
131  {
132  return f_hostname;
133  }
134  inline const std::string& version_semantic::username() const
135  {
136  return f_username;
137  }
138 
139 } /* namespace scarab */
140 
141 #endif /* SCARAB_VERSION_BASE_HH_ */
constexpr bool operator==(const day &x, const day &y) noexcept
Definition: date.h:1274
virtual const std::string & hostname() const
#define SCARAB_API
Definition: scarab_api.hh:24
virtual const std::string & username() const
virtual unsigned patch_version() const
virtual const std::string & version_str() const
virtual unsigned major_version() const
Definition: version_base.hh:98
virtual unsigned minor_version() const
virtual const std::string & commit() const
auto parse(const std::basic_string< CharT, Traits, Alloc > &format, Parsable &tp) -> decltype(from_stream(std::declval< std::basic_istream< CharT, Traits > &>(), format.c_str(), tp), parse_manip< Parsable, CharT, Traits, Alloc >
Definition: date.h:7239
virtual const std::string & package() const
constexpr bool operator<(const day &x, const day &y) noexcept
Definition: date.h:1290
virtual const std::string & exe_name() const