Add copy c'tors and assignment operators; Change numeric prerelease identifier comparison to use long longs instead of ints.
This commit is contained in:
@@ -41,6 +41,9 @@ namespace version {
|
||||
/// Concrete version class that binds all semver 2.0.0 functionality together.
|
||||
class Semver200_version : public Basic_version<Semver200_parser, Semver200_comparator> {
|
||||
public:
|
||||
Semver200_version()
|
||||
: Basic_version{ Semver200_parser(), Semver200_comparator() } {}
|
||||
|
||||
Semver200_version(const std::string& v)
|
||||
: Basic_version{ v, Semver200_parser(), Semver200_comparator() } {}
|
||||
};
|
||||
|
||||
+11
-3
@@ -117,9 +117,17 @@ namespace version {
|
||||
template<typename Parser, typename Comparator>
|
||||
class Basic_version {
|
||||
public:
|
||||
/// Construct Basic_version object using P to parse default ("0.0.0") version string and C for comparison.
|
||||
Basic_version(Parser p, Comparator c);
|
||||
|
||||
/// Construct Basic_version object using P to parse version string and C for comparison.
|
||||
Basic_version(const std::string& v, Parser p, Comparator c)
|
||||
: parser_(p), comparator_(c), ver_(parser_.parse(v)) {};
|
||||
Basic_version(const std::string& v, Parser p, Comparator c);
|
||||
|
||||
/// Construct Basic_version by copying data from another one.
|
||||
Basic_version(const Basic_version&);
|
||||
|
||||
/// Copy version data from another Basic_version to this one.
|
||||
Basic_version& operator=(const Basic_version&);
|
||||
|
||||
const int major() const;
|
||||
const int minor() const;
|
||||
@@ -134,7 +142,7 @@ namespace version {
|
||||
private:
|
||||
Parser parser_;
|
||||
Comparator comparator_;
|
||||
const Version_data ver_;
|
||||
Version_data ver_;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -44,6 +44,20 @@ namespace version {
|
||||
}
|
||||
}
|
||||
|
||||
template<typename P, typename C>
|
||||
Basic_version<P, C>::Basic_version(P p, C c)
|
||||
: parser_(p), comparator_(c), ver_(parser_.parse("0.0.0")) {};
|
||||
|
||||
template<typename P, typename C>
|
||||
Basic_version<P, C>::Basic_version(const std::string& v, P p, C c)
|
||||
: parser_(p), comparator_(c), ver_(parser_.parse(v)) {};
|
||||
|
||||
template<typename P, typename C>
|
||||
Basic_version<P, C>::Basic_version(const Basic_version<P, C>&) = default;
|
||||
|
||||
template<typename P, typename C>
|
||||
Basic_version<P, C>& Basic_version<P, C>::operator=(const Basic_version<P, C>&) = default;
|
||||
|
||||
template<typename P, typename C>
|
||||
const int Basic_version<P, C>::major() const {
|
||||
return ver_.major;
|
||||
|
||||
Reference in New Issue
Block a user