X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=folly%2FConv.cpp;h=6af0f90fbecd51754c6dcf9b05a82ca2d1d9aa4a;hp=3e5214a879fa775ebcc424ea66a1332e9a1642f8;hb=dc1c3dcc04baa70029d16351d4424af4a7ef4385;hpb=4dd1dd685b0397a36b21a057f588191ac0cfe6c6 diff --git a/folly/Conv.cpp b/folly/Conv.cpp index 3e5214a8..6af0f90f 100644 --- a/folly/Conv.cpp +++ b/folly/Conv.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2016 Facebook, Inc. + * Copyright 2017 Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -235,7 +235,7 @@ using IsAscii = std:: // The code in this file that uses tolower() really only cares about // 7-bit ASCII characters, so we can take a nice shortcut here. inline char tolower_ascii(char in) { - return IsAscii::value ? in | 0x20 : std::tolower(in); + return IsAscii::value ? in | 0x20 : char(std::tolower(in)); } inline bool bool_str_cmp(const char** b, size_t len, const char* value) { @@ -269,7 +269,7 @@ Expected str_to_bool(StringPiece* src) noexcept { } bool result; - size_t len = e - b; + size_t len = size_t(e - b); switch (*b) { case '0': case '1': { @@ -361,11 +361,12 @@ Expected str_to_floating(StringPiece* src) noexcept { // want to raise an error; length will point past the last character // that was processed, so we need to check if that character was // whitespace or not. - if (length == 0 || (result == 0.0 && std::isspace((*src)[length - 1]))) { + if (length == 0 || + (result == 0.0 && std::isspace((*src)[size_t(length) - 1]))) { return makeUnexpected(ConversionCode::EMPTY_INPUT_STRING); } - src->advance(length); - return result; + src->advance(size_t(length)); + return Tgt(result); } auto* e = src->end(); @@ -374,7 +375,7 @@ Expected str_to_floating(StringPiece* src) noexcept { // There must be non-whitespace, otherwise we would have caught this above assert(b < e); - size_t size = e - b; + size_t size = size_t(e - b); bool negative = false; if (*b == '-') { @@ -423,7 +424,7 @@ Expected str_to_floating(StringPiece* src) noexcept { src->assign(b, e); - return result; + return Tgt(result); } template Expected str_to_floating( @@ -463,12 +464,12 @@ class SignedValueHandler { Expected finalize(U value) { T rv; if (negative_) { - rv = -value; + rv = T(-value); if (UNLIKELY(rv > 0)) { return makeUnexpected(ConversionCode::NEGATIVE_OVERFLOW); } } else { - rv = value; + rv = T(value); if (UNLIKELY(rv < 0)) { return makeUnexpected(ConversionCode::POSITIVE_OVERFLOW); } @@ -518,7 +519,7 @@ inline Expected digits_to( return makeUnexpected(err); } - size_t size = e - b; + size_t size = size_t(e - b); /* Although the string is entirely made of digits, we still need to * check for overflow. @@ -531,7 +532,7 @@ inline Expected digits_to( return Tgt(0); // just zeros, e.g. "0000" } if (*b != '0') { - size = e - b; + size = size_t(e - b); break; } } @@ -570,7 +571,7 @@ inline Expected digits_to( if (sum >= OOR) { goto outOfRange; } - result = 1000 * result + sum; + result = UT(1000 * result + sum); break; } case 2: { @@ -580,7 +581,7 @@ inline Expected digits_to( if (sum >= OOR) { goto outOfRange; } - result = 100 * result + sum; + result = UT(100 * result + sum); break; } case 1: { @@ -588,7 +589,7 @@ inline Expected digits_to( if (sum >= OOR) { goto outOfRange; } - result = 10 * result + sum; + result = UT(10 * result + sum); break; } default: @@ -695,7 +696,7 @@ Expected str_to_integral(StringPiece* src) noexcept { auto res = sgn.finalize(tmp.value()); if (res.hasValue()) { - src->advance(m - src->data()); + src->advance(size_t(m - src->data())); } return res;