Switched to using unsigned types to represent versions in stout. Review: https://reviews.apache.org/r/58971
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/59180f9f Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/59180f9f Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/59180f9f Branch: refs/heads/master Commit: 59180f9fc0aa8bbb6cb9ec73a52e529e2c091bfa Parents: 2875562 Author: Neil Conway <[email protected]> Authored: Wed May 3 11:10:39 2017 -0700 Committer: Neil Conway <[email protected]> Committed: Wed May 3 15:37:41 2017 -0700 ---------------------------------------------------------------------- 3rdparty/stout/include/stout/version.hpp | 34 ++++++++++++++------------- 1 file changed, 18 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/59180f9f/3rdparty/stout/include/stout/version.hpp ---------------------------------------------------------------------- diff --git a/3rdparty/stout/include/stout/version.hpp b/3rdparty/stout/include/stout/version.hpp index 5e2bd2e..9120e42 100644 --- a/3rdparty/stout/include/stout/version.hpp +++ b/3rdparty/stout/include/stout/version.hpp @@ -15,6 +15,7 @@ #include <algorithm> #include <cctype> +#include <cstdint> #include <ostream> #include <string> #include <vector> @@ -111,10 +112,10 @@ struct Version " components allowed"); } - int versionNumbers[maxNumericComponents] = {0}; + uint32_t versionNumbers[maxNumericComponents] = {0}; for (size_t i = 0; i < numericComponents.size(); i++) { - Try<int> result = parseNumericIdentifier(numericComponents[i]); + Try<uint32_t> result = parseNumericIdentifier(numericComponents[i]); if (result.isError()) { return Error("Invalid version component '" + numericComponents[i] + "'" ": " + result.error()); @@ -137,9 +138,9 @@ struct Version // Construct a new Version. The `_prerelease` and `_build` arguments // contain lists of prerelease and build identifiers, respectively. - Version(int _majorVersion, - int _minorVersion, - int _patchVersion, + Version(uint32_t _majorVersion, + uint32_t _minorVersion, + uint32_t _patchVersion, const std::vector<std::string>& _prerelease = {}, const std::vector<std::string>& _build = {}) : majorVersion(_majorVersion), @@ -230,8 +231,9 @@ struct Version for (size_t i = 0; i < minPrereleaseSize; i++) { // Check whether the two prerelease identifiers can be converted // to numbers. - Try<int> identifier = parseNumericIdentifier(prerelease.at(i)); - Try<int> otherIdentifier = parseNumericIdentifier(other.prerelease.at(i)); + Try<uint32_t> identifier = parseNumericIdentifier(prerelease.at(i)); + Try<uint32_t> otherIdentifier = + parseNumericIdentifier(other.prerelease.at(i)); if (identifier.isSome() && otherIdentifier.isSome()) { // Both identifiers are numeric. @@ -279,9 +281,9 @@ struct Version std::ostream& stream, const Version& version); - const int majorVersion; - const int minorVersion; - const int patchVersion; + const uint32_t majorVersion; + const uint32_t minorVersion; + const uint32_t patchVersion; const std::vector<std::string> prerelease; const std::vector<std::string> build; @@ -346,25 +348,25 @@ private: // Checks whether the input string is numeric and contains a leading // zero. Note that "0" by itself is not considered a "leading zero". static bool hasLeadingZero(const std::string& identifier) { - Try<int> numericIdentifier = parseNumericIdentifier(identifier); + Try<uint32_t> numericIdentifier = parseNumericIdentifier(identifier); return numericIdentifier.isSome() && numericIdentifier.get() != 0 && strings::startsWith(identifier, '0'); } - // Attempt to parse the given string as a numeric identifier. - // According to the SemVer spec, identifiers that begin with hyphens - // are considered non-numeric. + // Try to parse the given string as a numeric identifier. According + // to the SemVer spec, identifiers that begin with hyphens are + // considered non-numeric. // // TODO(neilc): Consider adding a variant of `numify<T>` that only // supports non-negative inputs. - static Try<int> parseNumericIdentifier(const std::string& identifier) { + static Try<uint32_t> parseNumericIdentifier(const std::string& identifier) { if (strings::startsWith(identifier, '-')) { return Error("Contains leading hyphen"); } - return numify<int>(identifier); + return numify<uint32_t>(identifier); } };
