C++ Server-Side SDK
LaunchDarkly SDK
Loading...
Searching...
No Matches
semver_operations.hpp
1#pragma once
2
3#include <cstdint>
4#include <optional>
5#include <string>
6#include <variant>
7#include <vector>
8
9namespace launchdarkly::server_side::evaluation::detail {
10
19class SemVer {
20 public:
21 using VersionType = std::uint64_t;
22
23 using Token = std::variant<VersionType, std::string>;
24
28 SemVer();
29
39 SemVer(VersionType major,
40 VersionType minor,
41 VersionType patch,
42 std::vector<Token> prerelease);
43
50 SemVer(VersionType major, VersionType minor, VersionType patch);
51
52 [[nodiscard]] SemVer::VersionType Major() const;
53 [[nodiscard]] SemVer::VersionType Minor() const;
54 [[nodiscard]] SemVer::VersionType Patch() const;
55
56 [[nodiscard]] std::optional<std::vector<Token>> const& Prerelease() const;
57
64 [[nodiscard]] static std::optional<SemVer> Parse(std::string const& value);
65
66 private:
67 VersionType major_;
68 VersionType minor_;
69 VersionType patch_;
70 std::optional<std::vector<Token>> prerelease_;
71};
72
73bool operator<(SemVer::Token const& lhs, SemVer::Token const& rhs);
74
75bool operator==(SemVer const& lhs, SemVer const& rhs);
76
77bool operator<(SemVer const& lhs, SemVer const& rhs);
78
79bool operator>(SemVer const& lhs, SemVer const& rhs);
80
85std::ostream& operator<<(std::ostream& out, SemVer const& semver);
86
87std::ostream& operator<<(std::ostream& out, SemVer::Token const& semver_token);
88
89} // namespace launchdarkly::server_side::evaluation::detail
static std::optional< SemVer > Parse(std::string const &value)
Definition semver_operations.cpp:116
SemVer()
Definition semver_operations.cpp:45