1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 07:35:08 +00:00

CodeGenerators: Replace uses of JsonObject::get_deprecated()/get_ptr()

This commit is contained in:
Sam Atkins 2022-12-21 14:37:27 +00:00 committed by Tim Flynn
parent 77e15ff4da
commit ad9b2043dd
9 changed files with 323 additions and 326 deletions

View file

@ -82,16 +82,16 @@ struct EncodedType {
bool is_const_pointer;
};
Vector<DeprecatedString> get_name_list(JsonValue const& name_definition)
Vector<DeprecatedString> get_name_list(Optional<JsonValue const&> name_definition)
{
if (name_definition.is_null())
if (!name_definition.has_value() || name_definition->is_null())
return {};
Vector<DeprecatedString, 1> names;
if (name_definition.is_string()) {
names.append(name_definition.as_string());
} else if (name_definition.is_array()) {
name_definition.as_array().for_each([&names](auto& value) {
if (name_definition->is_string()) {
names.append(name_definition->as_string());
} else if (name_definition->is_array()) {
name_definition->as_array().for_each([&names](auto& value) {
VERIFY(value.is_string());
names.append(value.as_string());
});
@ -167,38 +167,38 @@ Variants read_variants_settings(JsonObject const& variants_obj)
{
Variants variants;
if (variants_obj.has("argument_counts"sv)) {
if (variants_obj.has_array("argument_counts"sv)) {
variants.argument_counts.clear_with_capacity();
variants_obj.get_deprecated("argument_counts"sv).as_array().for_each([&](auto const& argument_count_value) {
variants_obj.get_array("argument_counts"sv)->for_each([&](auto const& argument_count_value) {
variants.argument_counts.append(argument_count_value.to_u32());
});
}
if (variants_obj.has("argument_defaults"sv)) {
if (variants_obj.has_array("argument_defaults"sv)) {
variants.argument_defaults.clear_with_capacity();
variants_obj.get_deprecated("argument_defaults"sv).as_array().for_each([&](auto const& argument_default_value) {
variants_obj.get_array("argument_defaults"sv)->for_each([&](auto const& argument_default_value) {
variants.argument_defaults.append(argument_default_value.as_string());
});
}
if (variants_obj.has("convert_range"sv)) {
variants.convert_range = variants_obj.get_deprecated("convert_range"sv).to_bool();
if (variants_obj.has_bool("convert_range"sv)) {
variants.convert_range = variants_obj.get_bool("convert_range"sv).value();
}
if (variants_obj.has("api_suffixes"sv)) {
if (variants_obj.has_array("api_suffixes"sv)) {
variants.api_suffixes.clear_with_capacity();
variants_obj.get_deprecated("api_suffixes"sv).as_array().for_each([&](auto const& suffix_value) {
variants_obj.get_array("api_suffixes"sv)->for_each([&](auto const& suffix_value) {
variants.api_suffixes.append(suffix_value.as_string());
});
}
if (variants_obj.has("pointer_argument"sv)) {
variants.pointer_argument = variants_obj.get_deprecated("pointer_argument"sv).as_string();
if (variants_obj.has_string("pointer_argument"sv)) {
variants.pointer_argument = variants_obj.get_deprecated_string("pointer_argument"sv).value();
}
if (variants_obj.has("types"sv)) {
if (variants_obj.has_object("types"sv)) {
variants.types.clear_with_capacity();
variants_obj.get_deprecated("types"sv).as_object().for_each_member([&](auto const& key, auto const& type_value) {
variants_obj.get_object("types"sv)->for_each_member([&](auto const& key, auto const& type_value) {
auto const& type = type_value.as_object();
variants.types.append(VariantType {
.encoded_type = key,
.implementation = type.has("implementation"sv) ? type.get_deprecated("implementation"sv).as_string() : Optional<DeprecatedString> {},
.unimplemented = type.get_deprecated("unimplemented"sv).to_bool(false),
.implementation = type.get_deprecated_string("implementation"sv),
.unimplemented = type.get_bool("unimplemented"sv).value_or(false),
});
});
}
@ -279,17 +279,15 @@ Vector<FunctionDefinition> create_function_definitions(DeprecatedString function
// Parse base argument definitions first; these may later be modified by variants
Vector<ArgumentDefinition> argument_definitions;
JsonArray const& arguments = function_definition.has("arguments"sv)
? function_definition.get_deprecated("arguments"sv).as_array()
: JsonArray {};
JsonArray const& arguments = function_definition.get_array("arguments"sv).value_or(JsonArray {});
arguments.for_each([&argument_definitions](auto const& argument_value) {
VERIFY(argument_value.is_object());
auto const& argument = argument_value.as_object();
auto type = argument.has("type"sv) ? argument.get_deprecated("type"sv).as_string() : Optional<DeprecatedString> {};
auto argument_names = get_name_list(argument.get_deprecated("name"sv));
auto expression = argument.get_deprecated("expression"sv).as_string_or("@argument_name@");
auto cast_to = argument.has("cast_to"sv) ? argument.get_deprecated("cast_to"sv).as_string() : Optional<DeprecatedString> {};
auto type = argument.get_deprecated_string("type"sv);
auto argument_names = get_name_list(argument.get("name"sv));
auto expression = argument.get_deprecated_string("expression"sv).value_or("@argument_name@");
auto cast_to = argument.get_deprecated_string("cast_to"sv);
// Add an empty dummy name when all we have is an expression
if (argument_names.is_empty() && !expression.is_empty())
@ -306,9 +304,9 @@ Vector<FunctionDefinition> create_function_definitions(DeprecatedString function
// Create functions for each name and/or variant
Vector<FunctionDefinition> functions;
auto return_type = function_definition.get_deprecated("return_type"sv).as_string_or("void"sv);
auto function_implementation = function_definition.get_deprecated("implementation"sv).as_string_or(function_name.to_snakecase());
auto function_unimplemented = function_definition.get_deprecated("unimplemented"sv).to_bool(false);
auto return_type = function_definition.get_deprecated_string("return_type"sv).value_or("void");
auto function_implementation = function_definition.get_deprecated_string("implementation"sv).value_or(function_name.to_snakecase());
auto function_unimplemented = function_definition.get_bool("unimplemented"sv).value_or(false);
if (!function_definition.has("variants"sv)) {
functions.append({
@ -323,7 +321,7 @@ Vector<FunctionDefinition> create_function_definitions(DeprecatedString function
}
// Read variants settings for this function
auto variants_obj = function_definition.get_deprecated("variants"sv).as_object();
auto variants_obj = function_definition.get_object("variants"sv).value();
auto variants = read_variants_settings(variants_obj);
for (auto argument_count : variants.argument_counts) {