From c4a9db2f981a03aecf5e9a60e6d27a6dc6dac159 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Sat, 13 May 2017 00:29:50 +0300 Subject: Fix VC15 warnings (/W3) --- libbutl/standard-version.cxx | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'libbutl/standard-version.cxx') diff --git a/libbutl/standard-version.cxx b/libbutl/standard-version.cxx index 124f3de..13d3987 100644 --- a/libbutl/standard-version.cxx +++ b/libbutl/standard-version.cxx @@ -19,9 +19,9 @@ namespace butl // Utility functions // static uint64_t - parse_num (const string& s, size_t& p, - const char* m, - uint64_t min = 0, uint64_t max = 999) + parse_uint64 (const string& s, size_t& p, + const char* m, + uint64_t min, uint64_t max) { if (s[p] == '-' || s[p] == '+') // strtoull() allows these. throw invalid_argument (m); @@ -37,6 +37,14 @@ namespace butl return static_cast (r); } + static uint16_t + parse_uint16 (const string& s, size_t& p, + const char* m, + uint16_t min = 0, uint16_t max = 999) + { + return static_cast (parse_uint64 (s, p, m, min, max)); + } + static void check_version (uint64_t vr, bool sn, standard_version::flags fl) { @@ -120,14 +128,14 @@ namespace butl if (ep) { - epoch = parse_num (s, p, "invalid epoch", 1, uint16_t (~0)); + epoch = parse_uint16 (s, p, "invalid epoch", 1, uint16_t (~0)); ++p; // Skip '~'. } uint16_t ma, mi, bf, ab (0); bool earliest (false); - ma = parse_num (s, p, "invalid major version"); + ma = parse_uint16 (s, p, "invalid major version"); // The only valid version that has no epoch, contains only the major // version being equal to zero, that is optionally followed by the plus @@ -143,12 +151,12 @@ namespace butl if (s[p] != '.') bail ("'.' expected after major version"); - mi = parse_num (s, ++p, "invalid minor version"); + mi = parse_uint16 (s, ++p, "invalid minor version"); if (s[p] != '.') bail ("'.' expected after minor version"); - bf = parse_num (s, ++p, "invalid patch version"); + bf = parse_uint16 (s, ++p, "invalid patch version"); // AAABBBCCCDDDE version = ma * 10000000000ULL + @@ -177,7 +185,7 @@ namespace butl if (s[++p] != '.') bail ("'.' expected after pre-release letter"); - ab = parse_num (s, ++p, "invalid pre-release", 0, 499); + ab = parse_uint16 (s, ++p, "invalid pre-release", 0, 499); if (k == 'b') ab += 500; @@ -197,7 +205,7 @@ namespace butl { assert (!earliest); // Would bail out earlier (a or b expected after -). - revision = parse_num (s, ++p, "invalid revision", 1, uint16_t (~0)); + revision = parse_uint16 (s, ++p, "invalid revision", 1, uint16_t (~0)); } if (p != n) @@ -293,10 +301,10 @@ namespace butl return; } - uint64_t sn (parse_num (s, - p, - "invalid snapshot number", - 1, latest_sn - 1)); + uint64_t sn (parse_uint64 (s, + p, + "invalid snapshot number", + 1, latest_sn - 1)); std::string id; if (s[p] == '.') { -- cgit v1.1