#pragma once
#include <type_traits>
#include <boost/function_types/parameter_types.hpp>
#include <boost/mpl/equal.hpp>
#include <boost/mpl/pop_front.hpp>
#include <boost/mpl/transform.hpp>
#include <boost/mpl/vector.hpp>
#include <folly/Conv.h>
#include <folly/Traits.h>
namespace folly {
namespace detail {
class IdentifyCallable { … };
template <IdentifyCallable::Kind, typename Fn>
struct ArgumentTypesByKind { … };
ArgumentTypesByKind<IdentifyCallable::Kind::MemberFunction, Fn>;
ArgumentTypesByKind<IdentifyCallable::Kind::Function, Fn>;
ArgumentTypes;
template <typename Fn, typename... Args>
struct HasArgumentTypes
: boost::mpl::template equal<
typename boost::mpl::
transform<ArgumentTypes<Fn>, remove_cvref<boost::mpl::_1>>::type,
boost::mpl::vector<Args...>>::type {};
EnableForArgTypes;
template <typename Fn>
EnableForArgTypes<Fn> invokeForKeyValue(
Fn f, const folly::dynamic&, const folly::dynamic&) { … }
template <typename Fn>
EnableForArgTypes<Fn, folly::dynamic> invokeForKeyValue(
Fn fn, const folly::dynamic&, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, int64_t> invokeForKeyValue(
Fn fn, const folly::dynamic&, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, bool> invokeForKeyValue(
Fn fn, const folly::dynamic&, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, double> invokeForKeyValue(
Fn fn, const folly::dynamic&, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, std::string> invokeForKeyValue(
Fn fn, const folly::dynamic&, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, folly::dynamic, folly::dynamic> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, folly::dynamic, int64_t> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, folly::dynamic, bool> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, folly::dynamic, double> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, folly::dynamic, std::string> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, std::string, folly::dynamic> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, std::string, int64_t> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, std::string, bool> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, std::string, double> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, std::string, std::string> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, int64_t, folly::dynamic> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, int64_t, int64_t> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, int64_t, bool> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, int64_t, double> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
template <typename Fn>
EnableForArgTypes<Fn, int64_t, std::string> invokeForKeyValue(
Fn fn, const folly::dynamic& k, const folly::dynamic& v) { … }
}
template <typename Fn>
void DynamicParser::optional(const folly::dynamic& key, Fn fn) { … }
template <typename Fn>
void DynamicParser::required(const folly::dynamic& key, Fn fn) { … }
template <typename Fn>
void DynamicParser::objectItems(Fn fn) { … }
template <typename Fn>
void DynamicParser::arrayItems(Fn fn) { … }
template <typename Fn>
void DynamicParser::wrapError(const folly::dynamic* lookup_k, Fn fn) { … }
template <typename Fn>
void DynamicParser::parse(
const folly::dynamic& k, const folly::dynamic& v, Fn fn) { … }
inline const folly::dynamic& DynamicParser::ParserStack::key() const { … }
inline const folly::dynamic& DynamicParser::ParserStack::value() const { … }
}