semver-utils  1.0.1
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::string metadata;
57 
58  public:
70  static version from_string(std::string v);
71 
85  version(const std::vector<unsigned int> versions,
86  const std::string prerelease = "",
87  const std::string metadata = "");
88 
94  std::string str() const;
95 
101  std::vector<unsigned int> get_version() const;
102 
109  unsigned int get_version(unsigned int index) const;
110 
116  std::string get_prerelease() const;
117 
123  std::string get_metadata() const;
124 
132  version bump_major() const;
133 
141  version bump_minor() const;
142 
150  version bump_patch() const;
151 
162  version bump(unsigned int index) const;
163 
169  version strip_prerelease() const;
170 
176  version strip_metadata() const;
177 
184  bool is_release() const;
185 
194  bool operator==(const version& rh) const;
195 
208  bool operator<(const version& rh) const;
209 
222  bool operator>(const version& rh) const;
223  };
224 }
225 
226 #endif // SEMVER_UTILS_VERSION_H
227 
228 #pragma clang diagnostic pop
version bump_patch() const
Bumps the patch version component.
Definition: version.cpp:198
version strip_prerelease() const
Strips the prerelease component.
Definition: version.cpp:240
bool operator==(const version &rh) const
Checks two instances for equality.
Definition: version.cpp:255
version bump_major() const
Bumps the major version component.
Definition: version.cpp:188
static version from_string(std::string v)
Constructs a semver::version instance from a std::string.
Definition: version.cpp:92
bool operator<(const version &rh) const
Compares two instances.
Definition: version.cpp:262
std::string get_prerelease() const
Gets the prerelease string.
Definition: version.cpp:230
bool operator>(const version &rh) const
Compares two instances.
Definition: version.cpp:276
std::string str() const
Converts a version to its string representation.
Definition: version.cpp:163
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:141
version bump_minor() const
Bumps the minor version component.
Definition: version.cpp:193
std::vector< unsigned int > get_version() const
Gets the version components.
Definition: version.cpp:225
version strip_metadata() const
Strips the metadata component.
Definition: version.cpp:245
std::string get_metadata() const
Gets the metadata string.
Definition: version.cpp:235
bool is_release() const
Checks whether the instance is a release version.
Definition: version.cpp:250
Class that represents a version number.
Definition: version.hpp:51
version bump(unsigned int index) const
Bumps the specified version component.
Definition: version.cpp:203
Main namespace of libsemver.
Definition: version.cpp:80