Add copy c'tors and assignment operators; Change numeric prerelease identifier comparison to use long longs instead of ints.

This commit is contained in:
Marko Zivanovic
2015-10-13 12:10:43 +02:00
parent bb377082f2
commit 522e8b484b
5 changed files with 32 additions and 7 deletions
+3
View File
@@ -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
View File
@@ -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_;
};
}
+14
View File
@@ -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;