/*
- * 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.
* limitations under the License.
*/
-#include <folly/Hash.h>
#include <folly/dynamic.h>
+
+#include <folly/Assume.h>
+#include <folly/Hash.h>
#include <folly/portability/BitsFunctexcept.h>
namespace folly {
constexpr dynamic::Type dynamic::TypeInfo<T>::type; \
//
-FOLLY_DYNAMIC_DEF_TYPEINFO(void*)
+FOLLY_DYNAMIC_DEF_TYPEINFO(std::nullptr_t)
FOLLY_DYNAMIC_DEF_TYPEINFO(bool)
FOLLY_DYNAMIC_DEF_TYPEINFO(std::string)
FOLLY_DYNAMIC_DEF_TYPEINFO(dynamic::Array)
do { \
switch ((type)) { \
case NULLT: \
- apply(void*); \
+ apply(std::nullptr_t); \
break; \
case ARRAY: \
apply(Array); \
if (idx < 0 || idx >= parray->size()) {
return nullptr;
}
- return &(*parray)[idx.asInt()];
+ return &(*parray)[size_t(idx.asInt())];
} else if (auto* pobject = get_nothrow<ObjectImpl>()) {
auto it = pobject->find(idx);
if (it == pobject->end()) {
if (idx < 0 || idx >= parray->size()) {
std::__throw_out_of_range("out of range in dynamic array");
}
- return (*parray)[idx.asInt()];
+ return (*parray)[size_t(idx.asInt())];
} else if (auto* pobject = get_nothrow<ObjectImpl>()) {
auto it = pobject->find(idx);
if (it == pobject->end()) {
throw TypeError("array/object", type());
}
-dynamic::const_iterator
-dynamic::erase(const_iterator first, const_iterator last) {
+dynamic::iterator dynamic::erase(const_iterator first, const_iterator last) {
auto& arr = get<Array>();
return get<Array>().erase(
arr.begin() + (first - arr.begin()),
const auto& str = getString();
return ::folly::hash::fnv32_buf(str.data(), str.size());
}
- default:
- CHECK(0); abort();
}
+ assume_unreachable();
}
char const* dynamic::typeName(Type t) {