diff --git a/core/error/error_list.cpp b/core/error/error_list.cpp index f14cc84bb4f..13e560c3ccd 100644 --- a/core/error/error_list.cpp +++ b/core/error/error_list.cpp @@ -30,6 +30,8 @@ #include "error_list.h" +#include + const char *error_names[] = { "OK", // OK "Failed", // FAILED @@ -82,4 +84,4 @@ const char *error_names[] = { "Printer on fire", // ERR_PRINTER_ON_FIRE }; -static_assert(sizeof(error_names) / sizeof(*error_names) == ERR_MAX); +static_assert(std::size(error_names) == ERR_MAX); diff --git a/core/input/input_map.cpp b/core/input/input_map.cpp index bcd3b63a035..3c5332a30a0 100644 --- a/core/input/input_map.cpp +++ b/core/input/input_map.cpp @@ -407,7 +407,7 @@ static const _BuiltinActionDisplayName _builtin_action_display_names[] = { }; String InputMap::get_builtin_display_name(const String &p_name) const { - int len = sizeof(_builtin_action_display_names) / sizeof(_BuiltinActionDisplayName); + constexpr int len = std::size(_builtin_action_display_names); for (int i = 0; i < len; i++) { if (_builtin_action_display_names[i].name == p_name) { diff --git a/core/io/file_access.cpp b/core/io/file_access.cpp index 7d422bf0946..9d8479b2dc2 100644 --- a/core/io/file_access.cpp +++ b/core/io/file_access.cpp @@ -429,7 +429,7 @@ class CharBuffer { public: _FORCE_INLINE_ CharBuffer() : buffer(stack_buffer), - capacity(sizeof(stack_buffer) / sizeof(char)) { + capacity(std::size(stack_buffer)) { } _FORCE_INLINE_ void push_back(char c) { diff --git a/core/io/resource_uid.cpp b/core/io/resource_uid.cpp index 8a8c86087d4..03cc68f06fd 100644 --- a/core/io/resource_uid.cpp +++ b/core/io/resource_uid.cpp @@ -46,7 +46,7 @@ String ResourceUID::get_cache_file() { } static constexpr uint8_t uuid_characters[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', '0', '1', '2', '3', '4', '5', '6', '7', '8' }; -static constexpr uint32_t uuid_characters_element_count = (sizeof(uuid_characters) / sizeof(*uuid_characters)); +static constexpr uint32_t uuid_characters_element_count = std::size(uuid_characters); static constexpr uint8_t max_uuid_number_length = 13; // Max 0x7FFFFFFFFFFFFFFF (uid://d4n4ub6itg400) size is 13 characters. String ResourceUID::id_to_text(ID p_id) const { diff --git a/core/math/color.cpp b/core/math/color.cpp index 4c31d8149d8..5a8459abdfa 100644 --- a/core/math/color.cpp +++ b/core/math/color.cpp @@ -439,7 +439,7 @@ int Color::find_named_color(const String &p_name) { } int Color::get_named_color_count() { - return sizeof(named_colors) / sizeof(NamedColor); + return std::size(named_colors); } String Color::get_named_color_name(int p_idx) { diff --git a/core/string/char_utils.h b/core/string/char_utils.h index 62ab4e9584d..4811f6c23a5 100644 --- a/core/string/char_utils.h +++ b/core/string/char_utils.h @@ -35,23 +35,25 @@ #include "char_range.inc" -#define BSEARCH_CHAR_RANGE(m_array) \ - int low = 0; \ - int high = sizeof(m_array) / sizeof(m_array[0]) - 1; \ - int middle = (low + high) / 2; \ - \ - while (low <= high) { \ - if (p_char < m_array[middle].start) { \ - high = middle - 1; \ - } else if (p_char > m_array[middle].end) { \ - low = middle + 1; \ - } else { \ - return true; \ - } \ - \ - middle = (low + high) / 2; \ - } \ - \ +#include + +#define BSEARCH_CHAR_RANGE(m_array) \ + int low = 0; \ + int high = std::size(m_array) - 1; \ + int middle = (low + high) / 2; \ + \ + while (low <= high) { \ + if (p_char < m_array[middle].start) { \ + high = middle - 1; \ + } else if (p_char > m_array[middle].end) { \ + low = middle + 1; \ + } else { \ + return true; \ + } \ + \ + middle = (low + high) / 2; \ + } \ + \ return false constexpr bool is_unicode_identifier_start(char32_t p_char) { diff --git a/core/string/translation_domain.cpp b/core/string/translation_domain.cpp index 1ff8dcd752a..cd27fdba548 100644 --- a/core/string/translation_domain.cpp +++ b/core/string/translation_domain.cpp @@ -182,7 +182,7 @@ const char32_t *TranslationDomain::_get_accented_version(char32_t p_character) c return nullptr; } - for (unsigned int i = 0; i < sizeof(_character_to_accented) / sizeof(_character_to_accented[0]); i++) { + for (unsigned int i = 0; i < std::size(_character_to_accented); i++) { if (_character_to_accented[i].character == p_character) { return _character_to_accented[i].accented_character; } diff --git a/drivers/d3d12/rendering_context_driver_d3d12.h b/drivers/d3d12/rendering_context_driver_d3d12.h index 3eed6444815..b8785967c02 100644 --- a/drivers/d3d12/rendering_context_driver_d3d12.h +++ b/drivers/d3d12/rendering_context_driver_d3d12.h @@ -86,7 +86,7 @@ using Microsoft::WRL::ComPtr; -#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) +#define ARRAY_SIZE(a) std::size(a) class RenderingContextDriverD3D12 : public RenderingContextDriver { ComPtr device_factory; diff --git a/drivers/vulkan/rendering_device_driver_vulkan.cpp b/drivers/vulkan/rendering_device_driver_vulkan.cpp index f46015f1fc3..cadefafda15 100644 --- a/drivers/vulkan/rendering_device_driver_vulkan.cpp +++ b/drivers/vulkan/rendering_device_driver_vulkan.cpp @@ -45,7 +45,7 @@ #include "thirdparty/swappy-frame-pacing/swappyVk.h" #endif -#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) +#define ARRAY_SIZE(a) std::size(a) #define PRINT_NATIVE_COMMANDS 0 diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp index ef5d878ca0a..3d9699c6a6f 100644 --- a/editor/code_editor.cpp +++ b/editor/code_editor.cpp @@ -1917,7 +1917,7 @@ CodeTextEditor::CodeTextEditor() { zoom_button->set_text("100 %"); PopupMenu *zoom_menu = zoom_button->get_popup(); - int preset_count = sizeof(ZOOM_FACTOR_PRESETS) / sizeof(float); + constexpr int preset_count = std::size(ZOOM_FACTOR_PRESETS); for (int i = 0; i < preset_count; i++) { float z = ZOOM_FACTOR_PRESETS[i]; diff --git a/editor/plugins/animation_state_machine_editor.cpp b/editor/plugins/animation_state_machine_editor.cpp index f5159818f34..9aaf2c1d560 100644 --- a/editor/plugins/animation_state_machine_editor.cpp +++ b/editor/plugins/animation_state_machine_editor.cpp @@ -929,7 +929,7 @@ void AnimationNodeStateMachineEditor::_connection_draw(const Vector2 &p_from, co state_machine_draw->draw_line(p_from, p_from.lerp(p_to, p_fade_ratio), fade_line_color, 2); } - const int ICON_COUNT = sizeof(theme_cache.transition_icons) / sizeof(*theme_cache.transition_icons); + const int ICON_COUNT = std::size(theme_cache.transition_icons); int icon_index = p_mode + (p_auto_advance ? ICON_COUNT / 2 : 0); ERR_FAIL_COND(icon_index >= ICON_COUNT); Ref icon = theme_cache.transition_icons[icon_index]; diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index b8af4603e80..e4d307ec324 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -89,7 +89,7 @@ static FloatConstantDef float_constant_defs[] = { { "Sqrt2", Math_SQRT2, TTRC("Sqrt2 constant (1.414214). Square root of 2.") } }; -const int MAX_FLOAT_CONST_DEFS = sizeof(float_constant_defs) / sizeof(FloatConstantDef); +constexpr int MAX_FLOAT_CONST_DEFS = std::size(float_constant_defs); /////////////////// diff --git a/editor/themes/editor_fonts.cpp b/editor/themes/editor_fonts.cpp index 8ae4889214b..2768615f183 100644 --- a/editor/themes/editor_fonts.cpp +++ b/editor/themes/editor_fonts.cpp @@ -159,7 +159,7 @@ void editor_register_fonts(const Ref &p_theme) { String noto_cjk_path; String noto_cjk_bold_path; String var_suffix[] = { "HK", "KR", "SC", "TC", "JP" }; // Note: All Noto Sans CJK versions support all glyph variations, it should not match current locale. - for (size_t i = 0; i < sizeof(var_suffix) / sizeof(String); i++) { + for (size_t i = 0; i < std::size(var_suffix); i++) { if (noto_cjk_path.is_empty()) { noto_cjk_path = OS::get_singleton()->get_system_font_path("Noto Sans CJK " + var_suffix[i], 400, 100); } diff --git a/main/performance.cpp b/main/performance.cpp index 214e89696ff..6d93ca4a90d 100644 --- a/main/performance.cpp +++ b/main/performance.cpp @@ -152,7 +152,7 @@ String Performance::get_monitor_name(Monitor p_monitor) const { PNAME("pipeline/compilations_draw"), PNAME("pipeline/compilations_specialization"), }; - static_assert((sizeof(names) / sizeof(const char *)) == MONITOR_MAX); + static_assert(std::size(names) == MONITOR_MAX); return names[p_monitor]; } diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index 64639178717..fb0239c4d6f 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -4129,7 +4129,7 @@ GDScriptParser::ParseRule *GDScriptParser::get_rule(GDScriptTokenizer::Token::Ty }; /* clang-format on */ // Avoid desync. - static_assert(sizeof(rules) / sizeof(rules[0]) == GDScriptTokenizer::Token::TK_MAX, "Amount of parse rules don't match the amount of token types."); + static_assert(std::size(rules) == GDScriptTokenizer::Token::TK_MAX, "Amount of parse rules don't match the amount of token types."); // Let's assume this is never invalid, since nothing generates a TK_MAX. return &rules[p_token_type]; diff --git a/modules/gdscript/gdscript_tokenizer.cpp b/modules/gdscript/gdscript_tokenizer.cpp index 2bc4b703e20..b662b3eb299 100644 --- a/modules/gdscript/gdscript_tokenizer.cpp +++ b/modules/gdscript/gdscript_tokenizer.cpp @@ -157,7 +157,7 @@ static const char *token_names[] = { }; // Avoid desync. -static_assert(sizeof(token_names) / sizeof(token_names[0]) == GDScriptTokenizer::Token::TK_MAX, "Amount of token names don't match the amount of token types."); +static_assert(std::size(token_names) == GDScriptTokenizer::Token::TK_MAX, "Amount of token names don't match the amount of token types."); const char *GDScriptTokenizer::Token::get_name() const { ERR_FAIL_INDEX_V_MSG(type, TK_MAX, "", "Using token type out of the enum."); diff --git a/modules/gdscript/gdscript_vm.cpp b/modules/gdscript/gdscript_vm.cpp index fb454490cf4..ae4bd5d63bd 100644 --- a/modules/gdscript/gdscript_vm.cpp +++ b/modules/gdscript/gdscript_vm.cpp @@ -387,7 +387,7 @@ void (*type_init_function_table[])(Variant *) = { &&OPCODE_LINE, \ &&OPCODE_END \ }; \ - static_assert((sizeof(switch_table_ops) / sizeof(switch_table_ops[0]) == (OPCODE_END + 1)), "Opcodes in jump table aren't the same as opcodes in enum."); + static_assert(std::size(switch_table_ops) == (OPCODE_END + 1), "Opcodes in jump table aren't the same as opcodes in enum."); #define OPCODE(m_op) \ m_op: diff --git a/modules/gdscript/gdscript_warning.cpp b/modules/gdscript/gdscript_warning.cpp index f14b38a1ef2..8354d551540 100644 --- a/modules/gdscript/gdscript_warning.cpp +++ b/modules/gdscript/gdscript_warning.cpp @@ -245,7 +245,7 @@ String GDScriptWarning::get_name_from_code(Code p_code) { #endif }; - static_assert((sizeof(names) / sizeof(*names)) == WARNING_MAX, "Amount of warning types don't match the amount of warning names."); + static_assert(std::size(names) == WARNING_MAX, "Amount of warning types don't match the amount of warning names."); return names[(int)p_code]; } diff --git a/modules/gdscript/gdscript_warning.h b/modules/gdscript/gdscript_warning.h index e9ab309cd64..7b827c78f70 100644 --- a/modules/gdscript/gdscript_warning.h +++ b/modules/gdscript/gdscript_warning.h @@ -154,7 +154,7 @@ public: #endif }; - static_assert((sizeof(default_warning_levels) / sizeof(default_warning_levels[0])) == WARNING_MAX, "Amount of default levels does not match the amount of warnings."); + static_assert(std::size(default_warning_levels) == WARNING_MAX, "Amount of default levels does not match the amount of warnings."); Code code = WARNING_MAX; int start_line = -1, end_line = -1; diff --git a/modules/mono/mono_gd/gd_mono.cpp b/modules/mono/mono_gd/gd_mono.cpp index 2fb9eb81e95..31607a5cbca 100644 --- a/modules/mono/mono_gd/gd_mono.cpp +++ b/modules/mono/mono_gd/gd_mono.cpp @@ -466,7 +466,7 @@ godot_plugins_initialize_fn initialize_coreclr_and_godot_plugins(bool &r_runtime String tpa_list = make_tpa_list(); const char *prop_keys[] = { "TRUSTED_PLATFORM_ASSEMBLIES" }; const char *prop_values[] = { tpa_list.utf8().get_data() }; - int nprops = sizeof(prop_keys) / sizeof(prop_keys[0]); + constexpr int nprops = std::size(prop_keys); void *coreclr_handle = nullptr; unsigned int domain_id = 0; diff --git a/platform/android/export/gradle_export_util.cpp b/platform/android/export/gradle_export_util.cpp index 54d0e0916b9..32ad2d44066 100644 --- a/platform/android/export/gradle_export_util.cpp +++ b/platform/android/export/gradle_export_util.cpp @@ -246,7 +246,7 @@ String _get_gles_tag() { String _get_screen_sizes_tag(const Ref &p_preset) { String manifest_screen_sizes = " get(feature_name)); diff --git a/platform/ios/export/export_plugin.cpp b/platform/ios/export/export_plugin.cpp index 370e7345bee..1806a8a17ab 100644 --- a/platform/ios/export/export_plugin.cpp +++ b/platform/ios/export/export_plugin.cpp @@ -351,7 +351,7 @@ void EditorExportPlatformIOS::get_export_options(List *r_options) r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "privacy/photolibrary_usage_description", PROPERTY_HINT_PLACEHOLDER_TEXT, "Provide a message if you need access to the photo library"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::DICTIONARY, "privacy/photolibrary_usage_description_localized", PROPERTY_HINT_LOCALIZABLE_STRING), Dictionary())); - for (uint64_t i = 0; i < sizeof(api_info) / sizeof(api_info[0]); ++i) { + for (uint64_t i = 0; i < std::size(api_info); ++i) { String prop_name = vformat("privacy/%s_access_reasons", api_info[i].prop_name); String hint; for (int j = 0; j < api_info[i].prop_flag_value.size(); j++) { @@ -368,13 +368,13 @@ void EditorExportPlatformIOS::get_export_options(List *r_options) { String hint; - for (uint64_t i = 0; i < sizeof(data_collect_purpose_info) / sizeof(data_collect_purpose_info[0]); ++i) { + for (uint64_t i = 0; i < std::size(data_collect_purpose_info); ++i) { if (i != 0) { hint += ","; } hint += vformat("%s:%d", data_collect_purpose_info[i].prop_name, (1 << i)); } - for (uint64_t i = 0; i < sizeof(data_collect_type_info) / sizeof(data_collect_type_info[0]); ++i) { + for (uint64_t i = 0; i < std::size(data_collect_type_info); ++i) { r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, vformat("privacy/collected_data/%s/collected", data_collect_type_info[i].prop_name)), false)); r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, vformat("privacy/collected_data/%s/linked_to_user", data_collect_type_info[i].prop_name)), false)); r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, vformat("privacy/collected_data/%s/used_for_tracking", data_collect_type_info[i].prop_name)), false)); @@ -387,7 +387,7 @@ void EditorExportPlatformIOS::get_export_options(List *r_options) r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "icons/icon_1024x1024_tinted", PROPERTY_HINT_FILE, "*.svg,*.png,*.webp,*.jpg,*.jpeg"), "")); HashSet used_names; - for (uint64_t i = 0; i < sizeof(icon_infos) / sizeof(icon_infos[0]); ++i) { + for (uint64_t i = 0; i < std::size(icon_infos); ++i) { if (!used_names.has(icon_infos[i].preset_key)) { used_names.insert(icon_infos[i].preset_key); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, String(icon_infos[i].preset_key), PROPERTY_HINT_FILE, "*.png,*.jpg,*.jpeg"), "")); @@ -765,7 +765,7 @@ void EditorExportPlatformIOS::_fix_config_file(const Ref &p_ strnew += lines[i].replace("$swift_runtime_build_phase", value) + "\n"; } else if (lines[i].contains("$priv_collection")) { bool section_opened = false; - for (uint64_t j = 0; j < sizeof(data_collect_type_info) / sizeof(data_collect_type_info[0]); ++j) { + for (uint64_t j = 0; j < std::size(data_collect_type_info); ++j) { bool data_collected = p_preset->get(vformat("privacy/collected_data/%s/collected", data_collect_type_info[j].prop_name)); bool linked = p_preset->get(vformat("privacy/collected_data/%s/linked_to_user", data_collect_type_info[j].prop_name)); bool tracking = p_preset->get(vformat("privacy/collected_data/%s/used_for_tracking", data_collect_type_info[j].prop_name)); @@ -794,7 +794,7 @@ void EditorExportPlatformIOS::_fix_config_file(const Ref &p_ if (purposes != 0) { strnew += "\t\t\t\tNSPrivacyCollectedDataTypePurposes\n"; strnew += "\t\t\t\t\n"; - for (uint64_t k = 0; k < sizeof(data_collect_purpose_info) / sizeof(data_collect_purpose_info[0]); ++k) { + for (uint64_t k = 0; k < std::size(data_collect_purpose_info); ++k) { if (purposes & (1 << k)) { strnew += vformat("\t\t\t\t\t%s\n", data_collect_purpose_info[k].type_name); } @@ -826,7 +826,7 @@ void EditorExportPlatformIOS::_fix_config_file(const Ref &p_ } } else if (lines[i].contains("$priv_api_types")) { strnew += "\t\n"; - for (uint64_t j = 0; j < sizeof(api_info) / sizeof(api_info[0]); ++j) { + for (uint64_t j = 0; j < std::size(api_info); ++j) { int api_access = p_preset->get(vformat("privacy/%s_access_reasons", api_info[j].prop_name)); if (api_access != 0) { strnew += "\t\t\n"; @@ -946,7 +946,7 @@ Error EditorExportPlatformIOS::_export_icons(const Ref &p_pr }; bool first_icon = true; - for (uint64_t i = 0; i < (sizeof(icon_infos) / sizeof(icon_infos[0])); ++i) { + for (uint64_t i = 0; i < std::size(icon_infos); ++i) { for (int color_mode = ICON_NORMAL; color_mode < ICON_MAX; color_mode++) { IconInfo info = icon_infos[i]; int side_size = String(info.actual_size_side).to_int(); diff --git a/platform/linuxbsd/os_linuxbsd.cpp b/platform/linuxbsd/os_linuxbsd.cpp index 9fba97d552a..5951e696cd5 100644 --- a/platform/linuxbsd/os_linuxbsd.cpp +++ b/platform/linuxbsd/os_linuxbsd.cpp @@ -74,7 +74,7 @@ void OS_LinuxBSD::alert(const String &p_alert, const String &p_title) { String program; for (int i = 0; i < path_elems.size(); i++) { - for (uint64_t k = 0; k < sizeof(message_programs) / sizeof(char *); k++) { + for (uint64_t k = 0; k < std::size(message_programs); k++) { String tested_path = path_elems[i].path_join(message_programs[k]); if (FileAccess::exists(tested_path)) { @@ -751,7 +751,7 @@ Vector OS_LinuxBSD::get_system_font_path_for_text(const String &p_font_n Vector ret; static const char *allowed_formats[] = { "TrueType", "CFF" }; - for (size_t i = 0; i < sizeof(allowed_formats) / sizeof(const char *); i++) { + for (size_t i = 0; i < std::size(allowed_formats); i++) { FcPattern *pattern = FcPatternCreate(); if (pattern) { FcPatternAddBool(pattern, FC_SCALABLE, FcTrue); diff --git a/platform/linuxbsd/x11/display_server_x11.cpp b/platform/linuxbsd/x11/display_server_x11.cpp index 95181a1c817..3fe0bbbf5d2 100644 --- a/platform/linuxbsd/x11/display_server_x11.cpp +++ b/platform/linuxbsd/x11/display_server_x11.cpp @@ -3934,7 +3934,7 @@ Atom DisplayServerX11::_process_selection_request_target(Atom p_target, Window p 32, PropModeReplace, (unsigned char *)&data, - sizeof(data) / sizeof(data[0])); + std::size(data)); return p_property; } else if (p_target == XInternAtom(x11_display, "SAVE_TARGETS", 0)) { // Request to check if SAVE_TARGETS is supported, nothing special to do. diff --git a/platform/macos/export/export_plugin.cpp b/platform/macos/export/export_plugin.cpp index 140839f1a1a..448325cd14e 100644 --- a/platform/macos/export/export_plugin.cpp +++ b/platform/macos/export/export_plugin.cpp @@ -561,13 +561,13 @@ void EditorExportPlatformMacOS::get_export_options(List *r_options { String hint; - for (uint64_t i = 0; i < sizeof(data_collect_purpose_info) / sizeof(data_collect_purpose_info[0]); ++i) { + for (uint64_t i = 0; i < std::size(data_collect_purpose_info); ++i) { if (i != 0) { hint += ","; } hint += vformat("%s:%d", data_collect_purpose_info[i].prop_name, (1 << i)); } - for (uint64_t i = 0; i < sizeof(data_collect_type_info) / sizeof(data_collect_type_info[0]); ++i) { + for (uint64_t i = 0; i < std::size(data_collect_type_info); ++i) { r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, vformat("privacy/collected_data/%s/collected", data_collect_type_info[i].prop_name)), false)); r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, vformat("privacy/collected_data/%s/linked_to_user", data_collect_type_info[i].prop_name)), false)); r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, vformat("privacy/collected_data/%s/used_for_tracking", data_collect_type_info[i].prop_name)), false)); @@ -671,7 +671,7 @@ void EditorExportPlatformMacOS::_make_icon(const Ref &p_pres { "is32", "s8mk", false, 16 } //16×16 24-bit RLE + 8-bit uncompressed mask }; - for (uint64_t i = 0; i < (sizeof(icon_infos) / sizeof(icon_infos[0])); ++i) { + for (uint64_t i = 0; i < std::size(icon_infos); ++i) { Ref copy = p_icon->duplicate(); copy->convert(Image::FORMAT_RGBA8); copy->resize(icon_infos[i].size, icon_infos[i].size, (Image::Interpolation)(p_preset->get("application/icon_interpolation").operator int())); @@ -743,7 +743,7 @@ void EditorExportPlatformMacOS::_fix_privacy_manifest(const Refget(vformat("privacy/collected_data/%s/collected", data_collect_type_info[j].prop_name)); bool linked = p_preset->get(vformat("privacy/collected_data/%s/linked_to_user", data_collect_type_info[j].prop_name)); bool tracking = p_preset->get(vformat("privacy/collected_data/%s/used_for_tracking", data_collect_type_info[j].prop_name)); @@ -772,7 +772,7 @@ void EditorExportPlatformMacOS::_fix_privacy_manifest(const Ref%s\n", data_collect_purpose_info[k].type_name); } diff --git a/platform/macos/key_mapping_macos.mm b/platform/macos/key_mapping_macos.mm index b5e72048e71..8fce6cdea41 100644 --- a/platform/macos/key_mapping_macos.mm +++ b/platform/macos/key_mapping_macos.mm @@ -390,7 +390,7 @@ Key KeyMappingMacOS::remap_key(unsigned int p_key, unsigned int p_state, bool p_ LMGetKbdType(), kUCKeyTranslateNoDeadKeysBit, &keys_down, - sizeof(chars) / sizeof(chars[0]), + std::size(chars), &real_length, chars); diff --git a/platform/windows/export/export_plugin.cpp b/platform/windows/export/export_plugin.cpp index 4111aac8af7..efb756c41ee 100644 --- a/platform/windows/export/export_plugin.cpp +++ b/platform/windows/export/export_plugin.cpp @@ -96,7 +96,7 @@ Error EditorExportPlatformWindows::_process_icon(const Ref & Ref src_image = _load_icon_or_splash_image(p_src_path, &err); ERR_FAIL_COND_V(err != OK || src_image.is_null() || src_image->is_empty(), ERR_CANT_OPEN); - for (size_t i = 0; i < sizeof(icon_size) / sizeof(icon_size[0]); ++i) { + for (size_t i = 0; i < std::size(icon_size); ++i) { int size = (icon_size[i] == 0) ? 256 : icon_size[i]; Ref res_image = src_image->duplicate(); @@ -107,7 +107,7 @@ Error EditorExportPlatformWindows::_process_icon(const Ref & } uint16_t valid_icon_count = 0; - for (size_t i = 0; i < sizeof(icon_size) / sizeof(icon_size[0]); ++i) { + for (size_t i = 0; i < std::size(icon_size); ++i) { if (images.has(icon_size[i])) { valid_icon_count++; } else { @@ -129,7 +129,7 @@ Error EditorExportPlatformWindows::_process_icon(const Ref & // Write ICONDIRENTRY. uint32_t img_offset = 6 + 16 * valid_icon_count; - for (size_t i = 0; i < sizeof(icon_size) / sizeof(icon_size[0]); ++i) { + for (size_t i = 0; i < std::size(icon_size); ++i) { if (images.has(icon_size[i])) { const IconData &di = images[icon_size[i]]; fw->store_8(icon_size[i]); // Width in pixels. @@ -146,7 +146,7 @@ Error EditorExportPlatformWindows::_process_icon(const Ref & } // Write image data. - for (size_t i = 0; i < sizeof(icon_size) / sizeof(icon_size[0]); ++i) { + for (size_t i = 0; i < std::size(icon_size); ++i) { if (images.has(icon_size[i])) { const IconData &di = images[icon_size[i]]; fw->store_buffer(di.data.ptr(), di.data.size()); diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 7846cc404a3..401aa6a32ab 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -774,7 +774,7 @@ bool OS_Windows::get_user_prefers_integrated_gpu() const { GetCurrentApplicationUserModelIdPtr GetCurrentApplicationUserModelId = (GetCurrentApplicationUserModelIdPtr)GetProcAddress(kernel32, "GetCurrentApplicationUserModelId"); if (GetCurrentApplicationUserModelId) { - UINT32 length = sizeof(value_name) / sizeof(value_name[0]); + UINT32 length = std::size(value_name); LONG result = GetCurrentApplicationUserModelId(&length, value_name); if (result == ERROR_SUCCESS) { is_packaged = true; diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp index c99117c4612..66d1710a52d 100644 --- a/servers/rendering/shader_language.cpp +++ b/servers/rendering/shader_language.cpp @@ -5244,7 +5244,7 @@ ShaderLanguage::DataType ShaderLanguage::get_scalar_type(DataType p_type) { TYPE_VOID, }; - static_assert(sizeof(scalar_types) / sizeof(*scalar_types) == TYPE_MAX); + static_assert(std::size(scalar_types) == TYPE_MAX); return scalar_types[p_type]; } @@ -5286,7 +5286,7 @@ int ShaderLanguage::get_cardinality(DataType p_type) { 1, }; - static_assert(sizeof(cardinality_table) / sizeof(*cardinality_table) == TYPE_MAX); + static_assert(std::size(cardinality_table) == TYPE_MAX); return cardinality_table[p_type]; } @@ -11217,7 +11217,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_ #ifdef DEBUG_ENABLED // Adds context keywords. if (keyword_completion_context != CF_UNSPECIFIED) { - int sz = sizeof(keyword_list) / sizeof(KeyWord); + constexpr int sz = std::size(keyword_list); for (int i = 0; i < sz; i++) { if (keyword_list[i].flags == CF_UNSPECIFIED) { break; // Ignore hint keywords (parsed below). diff --git a/servers/rendering/shader_warnings.cpp b/servers/rendering/shader_warnings.cpp index 3b99f6c2bfc..a325000d77d 100644 --- a/servers/rendering/shader_warnings.cpp +++ b/servers/rendering/shader_warnings.cpp @@ -97,7 +97,7 @@ String ShaderWarning::get_name_from_code(Code p_code) { "MAGIC_POSITION_WRITE", }; - static_assert((sizeof(names) / sizeof(*names)) == WARNING_MAX, "Amount of warning types don't match the amount of warning names."); + static_assert(std::size(names) == WARNING_MAX, "Amount of warning types don't match the amount of warning names."); return names[(int)p_code]; } diff --git a/tests/core/string/test_string.h b/tests/core/string/test_string.h index d0b1bf8448e..9cedfde0b6d 100644 --- a/tests/core/string/test_string.h +++ b/tests/core/string/test_string.h @@ -1896,7 +1896,7 @@ TEST_CASE("[String] Is_*") { static bool isflt[] = { true, true, true, false, true, true, false, false, false, false, false, false, false, true, true }; static bool isaid[] = { false, false, false, false, false, false, false, false, true, true, false, false, false, false, false }; static bool isuid[] = { false, false, false, false, false, false, false, false, true, true, false, false, true, false, false }; - for (unsigned int i = 0; i < sizeof(data) / sizeof(data[0]); i++) { + for (unsigned int i = 0; i < std::size(data); i++) { String s = String::utf8(data[i]); CHECK(s.is_numeric() == isnum[i]); CHECK(s.is_valid_int() == isint[i]); diff --git a/tests/core/test_crypto.h b/tests/core/test_crypto.h index a7c2fce5896..97ed7f0994e 100644 --- a/tests/core/test_crypto.h +++ b/tests/core/test_crypto.h @@ -60,8 +60,8 @@ PackedByteArray raw_to_pba(const uint8_t *arr, size_t len) { TEST_CASE("[Crypto] PackedByteArray constant time compare") { const uint8_t hm1[] = { 144, 140, 176, 38, 88, 113, 101, 45, 71, 105, 10, 91, 248, 16, 117, 244, 189, 30, 238, 29, 219, 134, 82, 130, 212, 114, 161, 166, 188, 169, 200, 106 }; const uint8_t hm2[] = { 80, 30, 144, 228, 108, 38, 188, 125, 150, 64, 165, 127, 221, 118, 144, 232, 45, 100, 15, 248, 193, 244, 245, 34, 116, 147, 132, 200, 110, 27, 38, 75 }; - PackedByteArray p1 = raw_to_pba(hm1, sizeof(hm1) / sizeof(hm1[0])); - PackedByteArray p2 = raw_to_pba(hm2, sizeof(hm2) / sizeof(hm2[0])); + PackedByteArray p1 = raw_to_pba(hm1, std::size(hm1)); + PackedByteArray p2 = raw_to_pba(hm2, std::size(hm2)); _MockCrypto crypto; bool equal = crypto.constant_time_compare(p1, p1); CHECK(equal); diff --git a/tests/servers/test_text_server.h b/tests/servers/test_text_server.h index 3e863b61ca8..9615ac16676 100644 --- a/tests/servers/test_text_server.h +++ b/tests/servers/test_text_server.h @@ -508,7 +508,7 @@ TEST_SUITE("[TextServer]") { { U"test\r test", { 0, 5, 5, 10 } }, { U"test\r test \r test", { 0, 5, 5, 12, 12, 17 } }, }; - for (size_t j = 0; j < sizeof(cases) / sizeof(TestCase); j++) { + for (size_t j = 0; j < std::size(cases); j++) { RID ctx = ts->create_shaped_text(); CHECK_FALSE_MESSAGE(ctx == RID(), "Creating text buffer failed."); bool ok = ts->shaped_text_add_string(ctx, cases[j].text, font, 16);