/*
- * Copyright 2012 Facebook, Inc.
+ * Copyright 2014 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* limitations under the License.
*/
#define FOLLY_CONV_INTERNAL
-#include "folly/Conv.h"
+#include <folly/Conv.h>
namespace folly {
namespace detail {
" please update.");
template <> const char *const MaxString<unsigned long long>::value =
"18446744073709551615";
-template <> const char *const MaxString<unsigned __int128>::value =
- "340282366920938463463374607431768211455";
static_assert(sizeof(unsigned long long) >= 8,
"Wrong value for MaxString<unsigned long long>::value"
", please update.");
+#ifdef FOLLY_HAVE_INT128_T
+template <> const char *const MaxString<__uint128_t>::value =
+ "340282366920938463463374607431768211455";
+#endif
+
inline bool bool_str_cmp(const char** b, size_t len, const char* value) {
// Can't use strncasecmp, since we want to ensure that the full value matches
const char* p = *b;
bool str_to_bool(StringPiece* src) {
auto b = src->begin(), e = src->end();
for (;; ++b) {
- FOLLY_RANGE_CHECK(b < e,
- "No non-whitespace characters found in input string");
+ FOLLY_RANGE_CHECK_STRINGPIECE(
+ b < e, "No non-whitespace characters found in input string", *src);
if (!isspace(*b)) break;
}
StringPiece tmp(*src);
uint8_t value = to<uint8_t>(&tmp);
// Only accept 0 or 1
- FOLLY_RANGE_CHECK(value <= 1,
- "Integer overflow when parsing bool: must be 0 or 1");
+ FOLLY_RANGE_CHECK_STRINGPIECE(
+ value <= 1, "Integer overflow when parsing bool: must be 0 or 1", *src);
b = tmp.begin();
result = (value == 1);
break;
} else if (bool_str_cmp(&b, len, "off")) {
result = false;
} else {
- FOLLY_RANGE_CHECK(false, "Invalid value for bool");
+ FOLLY_RANGE_CHECK_STRINGPIECE(false, "Invalid value for bool", *src);
}
break;
default:
- FOLLY_RANGE_CHECK(false, "Invalid value for bool");
+ FOLLY_RANGE_CHECK_STRINGPIECE(false, "Invalid value for bool", *src);
}
src->assign(b, e);