nope, go back to non-inlining ExtractJsonType()

pull/27829/head
Mark D. Roth 3 years ago
parent 6eeb8755fc
commit 935d68589d
  1. 30
      src/core/lib/json/json_util.cc
  2. 36
      src/core/lib/json/json_util.h

@ -97,6 +97,36 @@ bool ExtractJsonObject(const Json& json, absl::string_view field_name,
return true;
}
bool ExtractJsonType(const Json& json, absl::string_view field_name,
bool* output,
std::vector<grpc_error_handle>* error_list) {
return ExtractJsonBool(json, field_name, output, error_list);
}
bool ExtractJsonType(const Json& json, absl::string_view field_name,
std::string* output,
std::vector<grpc_error_handle>* error_list) {
return ExtractJsonString(json, field_name, output, error_list);
}
bool ExtractJsonType(const Json& json, absl::string_view field_name,
absl::string_view* output,
std::vector<grpc_error_handle>* error_list) {
return ExtractJsonString(json, field_name, output, error_list);
}
bool ExtractJsonType(const Json& json, absl::string_view field_name,
const Json::Array** output,
std::vector<grpc_error_handle>* error_list) {
return ExtractJsonArray(json, field_name, output, error_list);
}
bool ExtractJsonType(const Json& json, absl::string_view field_name,
const Json::Object** output,
std::vector<grpc_error_handle>* error_list) {
return ExtractJsonObject(json, field_name, output, error_list);
}
bool ParseJsonObjectFieldAsDuration(const Json::Object& object,
absl::string_view field_name,
grpc_millis* output,

@ -40,6 +40,7 @@ bool ParseDurationFromJson(const Json& field, grpc_millis* duration);
// Return true on success, false otherwise. If an error is encountered during
// parsing, a descriptive error is appended to \a error_list.
//
template <typename NumericType>
bool ExtractJsonNumber(const Json& json, absl::string_view field_name,
NumericType* output,
@ -84,39 +85,32 @@ bool ExtractJsonObject(const Json& json, absl::string_view field_name,
const Json::Object** output,
std::vector<grpc_error_handle>* error_list);
//
// Wrappers for automatically choosing one of the above functions based
// on output parameter type.
//
template <typename NumericType>
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
bool ExtractJsonType(const Json& json, absl::string_view field_name,
NumericType* output,
std::vector<grpc_error_handle>* error_list) {
return ExtractJsonNumber(json, field_name, output, error_list);
}
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
bool ExtractJsonType(const Json& json, absl::string_view field_name,
bool* output,
std::vector<grpc_error_handle>* error_list) {
return ExtractJsonBool(json, field_name, output, error_list);
}
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
std::vector<grpc_error_handle>* error_list);
bool ExtractJsonType(const Json& json, absl::string_view field_name,
std::string* output,
std::vector<grpc_error_handle>* error_list) {
return ExtractJsonString(json, field_name, output, error_list);
}
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
std::vector<grpc_error_handle>* error_list);
bool ExtractJsonType(const Json& json, absl::string_view field_name,
absl::string_view* output,
std::vector<grpc_error_handle>* error_list) {
return ExtractJsonString(json, field_name, output, error_list);
}
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
std::vector<grpc_error_handle>* error_list);
bool ExtractJsonType(const Json& json, absl::string_view field_name,
const Json::Array** output,
std::vector<grpc_error_handle>* error_list) {
return ExtractJsonArray(json, field_name, output, error_list);
}
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
std::vector<grpc_error_handle>* error_list);
bool ExtractJsonType(const Json& json, absl::string_view field_name,
const Json::Object** output,
std::vector<grpc_error_handle>* error_list) {
return ExtractJsonObject(json, field_name, output, error_list);
}
std::vector<grpc_error_handle>* error_list);
// Extracts a field from a JSON object, automatically selecting the type
// of parsing based on the output parameter type.

Loading…
Cancel
Save