Scarab  v3.5.3
Project 8 C++ Utility Library
version_semantic.hh
Go to the documentation of this file.
1 /*
2  * version_semantic.hh
3  *
4  * Created on: Jul 23, 2018
5  * Author: N.S. Oblath
6  */
7 
8 #ifndef SCARAB_VERSION_SEMANTIC_HH_
9 #define SCARAB_VERSION_SEMANTIC_HH_
10 
11 #include "version_ifc.hh"
12 
13 #include "member_variables.hh"
14 
15 #include <memory>
16 
17 namespace scarab
18 {
19 
21  {
22  public:
24  version_semantic( unsigned a_maj_ver, unsigned a_min_ver, unsigned a_patch_ver );
25  version_semantic( const std::string& a_ver );
26  version_semantic( const version_semantic& a_orig );
28 
29  version_semantic& operator=( const version_semantic& a_orig );
30 
32  bool operator<( const version_semantic& a_other );
34  bool operator==( const version_semantic& a_other );
36  bool operator>( const version_semantic& a_other );
37 
38  virtual unsigned major_version() const;
39  virtual unsigned minor_version() const;
40  virtual unsigned patch_version() const;
41 
42  virtual const std::string& version_str() const;
43 
44  virtual std::string version_info_string() const;
45 
46  public:
47  bool parse( const std::string& a_ver );
48 
49  bool combine( unsigned a_maj_ver, unsigned a_min_ver, unsigned a_patch_ver );
50 
51  bool update_exe_host_user();
52 
53  protected:
54  static char s_delimeter;
55 
56  unsigned f_major_ver;
57  unsigned f_minor_ver;
58  unsigned f_patch_ver;
59  std::string f_version;
60 
61  mv_referrable( std::string, package );
62  mv_referrable( std::string, commit );
63 
64  mv_referrable( std::string, exe_name );
65  mv_referrable( std::string, hostname );
66  mv_referrable( std::string, username );
67  };
68 
69  typedef std::shared_ptr< version_semantic > version_semantic_ptr_t;
70 
71 
72  inline unsigned version_semantic::major_version() const
73  {
74  return f_major_ver;
75  }
76  inline unsigned version_semantic::minor_version() const
77  {
78  return f_minor_ver;
79  }
80  inline unsigned version_semantic::patch_version() const
81  {
82  return f_patch_ver;
83  }
84 
85  inline const std::string& version_semantic::version_str() const
86  {
87  return f_version;
88  }
89 
90 } /* namespace scarab */
91 
92 #endif /* SCARAB_VERSION_SEMANTIC_HH_ */
constexpr bool operator==(const day &x, const day &y) noexcept
Definition: date.h:1274
#define SCARAB_API
Definition: scarab_api.hh:24
std::shared_ptr< version_semantic > version_semantic_ptr_t
constexpr bool operator>(const day &x, const day &y) noexcept
Definition: date.h:1298
virtual unsigned patch_version() const
virtual const std::string & version_str() const
#define mv_referrable
virtual unsigned major_version() const
virtual unsigned minor_version() 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
constexpr bool operator<(const day &x, const day &y) noexcept
Definition: date.h:1290