semver-utils  1.1.0
version.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016 Enrico M. Crisostomo
3  *
4  * This program is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU General Public License as published by the Free Software
6  * Foundation; either version 3, or (at your option) any later version.
7  *
8  * This program is distributed in the hope that it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
11  * details.
12  *
13  * You should have received a copy of the GNU General Public License along with
14  * this program. If not, see <http://www.gnu.org/licenses/>.
15  */
28 #ifndef SEMVER_UTILS_VERSION_H
29 #define SEMVER_UTILS_VERSION_H
30 
31 #include <vector>
32 #include <string>
33 
34 #pragma clang diagnostic push
35 #pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection"
36 
40 namespace semver
41 {
51  class version
52  {
53  private:
54  std::vector<unsigned int> versions;
55  std::string prerelease;
56  std::vector<std::string> prerelease_identifiers;
57  std::vector<bool> prerelease_is_identifier_number;
58  std::vector<unsigned long> prerelease_number;
59  std::string metadata;
60 
61  void parse_prerelease();
62 
63  public:
75  static version from_string(std::string v);
76 
90  version(const std::vector<unsigned int> versions,
91  const std::string prerelease = "",
92  const std::string metadata = "");
93 
99  std::string str() const;
100 
106  std::vector<unsigned int> get_version() const;
107 
114  unsigned int get_version(unsigned int index) const;
115 
121  std::string get_prerelease() const;
122 
128  std::string get_metadata() const;
129 
137  version bump_major() const;
138 
146  version bump_minor() const;
147 
155  version bump_patch() const;
156 
167  version bump(unsigned int index) const;
168 
174  version strip_prerelease() const;
175 
181  version strip_metadata() const;
182 
189  bool is_release() const;
190 
199  bool operator==(const version& rh) const;
200 
213  bool operator<(const version& rh) const;
214 
227  bool operator>(const version& rh) const;
228  };
229 }
230 
231 #endif // SEMVER_UTILS_VERSION_H
232 
233 #pragma clang diagnostic pop
version bump_patch() const
Bumps the patch version component.
Definition: version.cpp:194
version strip_prerelease() const
Strips the prerelease component.
Definition: version.cpp:236
bool operator==(const version &rh) const
Checks two instances for equality.
Definition: version.cpp:251
version bump_major() const
Bumps the major version component.
Definition: version.cpp:184
static version from_string(std::string v)
Constructs a semver::version instance from a std::string.
Definition: version.cpp:91
bool operator<(const version &rh) const
Compares two instances.
Definition: version.cpp:256
std::string get_prerelease() const
Gets the prerelease string.
Definition: version.cpp:226
bool operator>(const version &rh) const
Compares two instances.
Definition: version.cpp:311
std::string str() const
Converts a version to its string representation.
Definition: version.cpp:159
version(const std::vector< unsigned int > versions, const std::string prerelease="", const std::string metadata="")
Constructs a semver::version instance with the specified parameters. The parameters must comply with ...
Definition: version.cpp:137
version bump_minor() const
Bumps the minor version component.
Definition: version.cpp:189
std::vector< unsigned int > get_version() const
Gets the version components.
Definition: version.cpp:221
version strip_metadata() const
Strips the metadata component.
Definition: version.cpp:241
std::string get_metadata() const
Gets the metadata string.
Definition: version.cpp:231
bool is_release() const
Checks whether the instance is a release version.
Definition: version.cpp:246
Class that represents a version number.
Definition: version.hpp:51
version bump(unsigned int index) const
Bumps the specified version component.
Definition: version.cpp:199
Main namespace of libsemver.
Definition: version.cpp:80