From 5ca686261e0278b218846700c07fd606db46787c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 1 May 2025 17:47:47 +0200 Subject: [PATCH] Codechange: use std::string_view for the string setting defaults --- src/settings.cpp | 6 ++-- src/settings_internal.h | 12 ++++---- src/table/settings/currency_settings.ini | 2 +- src/table/settings/locale_settings.ini | 6 ++-- src/table/settings/misc_settings.ini | 30 +++++++++---------- src/table/settings/multimedia_settings.ini | 4 +-- .../settings/network_private_settings.ini | 6 ++-- .../settings/network_secrets_settings.ini | 14 ++++----- src/table/settings/old_gameopt_settings.ini | 4 +-- 9 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/settings.cpp b/src/settings.cpp index ba2bd4e0a7..19d570795f 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -592,7 +592,7 @@ void StringSettingDesc::MakeValueValid(std::string &str) const * @param object The object the setting is to be saved in. * @param str The string to save. */ -void StringSettingDesc::Write(const void *object, const std::string &str) const +void StringSettingDesc::Write(const void *object, std::string_view str) const { reinterpret_cast(GetVariableAddress(object, this->save))->assign(str); } @@ -665,7 +665,7 @@ void IntSettingDesc::ParseValue(const IniItem *item, void *object) const void StringSettingDesc::ParseValue(const IniItem *item, void *object) const { - std::string str = (item == nullptr) ? this->def : item->value.value_or(""); + std::string str{(item == nullptr) ? this->def : item->value.value_or("")}; this->MakeValueValid(str); this->Write(object, str); } @@ -675,7 +675,7 @@ void ListSettingDesc::ParseValue(const IniItem *item, void *object) const std::optional str; if (item != nullptr) { str = item->value; - } else if (this->def != nullptr) { + } else if (!this->def.empty()) { str = this->def; } void *ptr = GetVariableAddress(object, this->save); diff --git a/src/settings_internal.h b/src/settings_internal.h index ec4525e77f..4efb03baee 100644 --- a/src/settings_internal.h +++ b/src/settings_internal.h @@ -323,12 +323,12 @@ struct StringSettingDesc : SettingDesc { */ typedef void PostChangeCallback(const std::string &value); - StringSettingDesc(const SaveLoad &save, SettingFlags flags, bool startup, const char *def, + StringSettingDesc(const SaveLoad &save, SettingFlags flags, bool startup, std::string_view def, uint32_t max_length, PreChangeCheck pre_check, PostChangeCallback post_callback) : - SettingDesc(save, flags, startup), def(def == nullptr ? "" : def), max_length(max_length), + SettingDesc(save, flags, startup), def(def), max_length(max_length), pre_check(pre_check), post_callback(post_callback) {} - std::string def; ///< Default value given when none is present + std::string_view def; ///< Default value given when none is present uint32_t max_length; ///< Maximum length of the string, 0 means no maximum length PreChangeCheck *pre_check; ///< Callback to check for the validity of the setting. PostChangeCallback *post_callback; ///< Callback when the setting has been changed. @@ -345,15 +345,15 @@ struct StringSettingDesc : SettingDesc { private: void MakeValueValid(std::string &str) const; - void Write(const void *object, const std::string &str) const; + void Write(const void *object, std::string_view str) const; }; /** List/array settings. */ struct ListSettingDesc : SettingDesc { - ListSettingDesc(const SaveLoad &save, SettingFlags flags, bool startup, const char *def) : + ListSettingDesc(const SaveLoad &save, SettingFlags flags, bool startup, std::string_view def) : SettingDesc(save, flags, startup), def(def) {} - const char *def; ///< default value given when none is present + std::string_view def; ///< default value given when none is present std::string FormatValue(const void *object) const override; void ParseValue(const IniItem *item, void *object) const override; diff --git a/src/table/settings/currency_settings.ini b/src/table/settings/currency_settings.ini index ad43b94580..24bc22dde9 100644 --- a/src/table/settings/currency_settings.ini +++ b/src/table/settings/currency_settings.ini @@ -61,7 +61,7 @@ max = CalendarTime::MAX_YEAR [SDT_SSTR] var = prefix type = SLE_STRQ -def = nullptr +def = """" [SDT_SSTR] var = suffix diff --git a/src/table/settings/locale_settings.ini b/src/table/settings/locale_settings.ini index dd311fb660..4e38128ee0 100644 --- a/src/table/settings/locale_settings.ini +++ b/src/table/settings/locale_settings.ini @@ -176,7 +176,7 @@ var = locale.digit_group_separator type = SLE_STRQ from = SLV_118 flags = SettingFlag::NoNetworkSync -def = nullptr +def = """" post_cb = [](auto) { MarkWholeScreenDirty(); } cat = SC_BASIC @@ -185,7 +185,7 @@ var = locale.digit_group_separator_currency type = SLE_STRQ from = SLV_118 flags = SettingFlag::NoNetworkSync -def = nullptr +def = """" post_cb = [](auto) { MarkWholeScreenDirty(); } cat = SC_BASIC @@ -194,6 +194,6 @@ var = locale.digit_decimal_separator type = SLE_STRQ from = SLV_126 flags = SettingFlag::NoNetworkSync -def = nullptr +def = """" post_cb = [](auto) { MarkWholeScreenDirty(); } cat = SC_BASIC diff --git a/src/table/settings/misc_settings.ini b/src/table/settings/misc_settings.ini index a357072c5a..ff46d87f54 100644 --- a/src/table/settings/misc_settings.ini +++ b/src/table/settings/misc_settings.ini @@ -111,48 +111,48 @@ cat = SC_BASIC name = ""soundsset"" type = SLE_STRQ var = BaseSounds::ini_set -def = nullptr +def = """" cat = SC_BASIC [SDTG_SSTR] name = ""musicset"" type = SLE_STRQ var = BaseMusic::ini_set -def = nullptr +def = """" cat = SC_BASIC [SDTG_SSTR] name = ""videodriver"" type = SLE_STRQ var = _ini_videodriver -def = nullptr +def = """" cat = SC_EXPERT [SDTG_SSTR] name = ""musicdriver"" type = SLE_STRQ var = _ini_musicdriver -def = nullptr +def = """" cat = SC_EXPERT [SDTG_SSTR] name = ""sounddriver"" type = SLE_STRQ var = _ini_sounddriver -def = nullptr +def = """" cat = SC_EXPERT [SDTG_SSTR] name = ""blitter"" type = SLE_STRQ var = _ini_blitter -def = nullptr +def = """" [SDTG_SSTR] name = ""language"" type = SLE_STR var = _config_language_file -def = nullptr +def = """" cat = SC_BASIC ; workaround for implicit lengthof() in SDTG_LIST @@ -168,14 +168,14 @@ cat = SC_BASIC name = ""screenshot_format"" type = SLE_STR var = _screenshot_format_name -def = nullptr +def = """" cat = SC_EXPERT [SDTG_SSTR] name = ""savegame_format"" type = SLE_STR var = _savegame_format -def = nullptr +def = """" cat = SC_EXPERT [SDTG_BOOL] @@ -188,28 +188,28 @@ ifdef = HAS_TRUETYPE_FONT name = ""small_font"" type = SLE_STR var = _fcsettings.small.font -def = nullptr +def = """" [SDTG_SSTR] ifdef = HAS_TRUETYPE_FONT name = ""medium_font"" type = SLE_STR var = _fcsettings.medium.font -def = nullptr +def = """" [SDTG_SSTR] ifdef = HAS_TRUETYPE_FONT name = ""large_font"" type = SLE_STR var = _fcsettings.large.font -def = nullptr +def = """" [SDTG_SSTR] ifdef = HAS_TRUETYPE_FONT name = ""mono_font"" type = SLE_STR var = _fcsettings.mono.font -def = nullptr +def = """" [SDTG_VAR] ifdef = HAS_TRUETYPE_FONT @@ -308,14 +308,14 @@ cat = SC_BASIC name = ""keyboard"" type = SLE_STR var = _keyboard_opt[0] -def = nullptr +def = """" cat = SC_EXPERT [SDTG_SSTR] name = ""keyboard_caps"" type = SLE_STR var = _keyboard_opt[1] -def = nullptr +def = """" cat = SC_EXPERT [SDTG_VAR] diff --git a/src/table/settings/multimedia_settings.ini b/src/table/settings/multimedia_settings.ini index 55bed4b610..3f8265130e 100644 --- a/src/table/settings/multimedia_settings.ini +++ b/src/table/settings/multimedia_settings.ini @@ -132,14 +132,14 @@ cat = SC_BASIC var = music.custom_1 type = SLE_UINT8 flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync -def = nullptr +def = """" cat = SC_BASIC [SDTC_LIST] var = music.custom_2 type = SLE_UINT8 flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync -def = nullptr +def = """" cat = SC_BASIC [SDTC_BOOL] diff --git a/src/table/settings/network_private_settings.ini b/src/table/settings/network_private_settings.ini index fa3431f3d3..b8544fdd18 100644 --- a/src/table/settings/network_private_settings.ini +++ b/src/table/settings/network_private_settings.ini @@ -47,7 +47,7 @@ var = network.client_name type = SLE_STR length = NETWORK_CLIENT_NAME_LENGTH flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync -def = nullptr +def = """" pre_cb = NetworkValidateClientName post_cb = NetworkUpdateClientName cat = SC_BASIC @@ -57,7 +57,7 @@ var = network.server_name type = SLE_STR length = NETWORK_NAME_LENGTH flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::NetworkOnly -def = nullptr +def = """" pre_cb = NetworkValidateServerName post_cb = [](auto) { UpdateClientConfigValues(); } cat = SC_BASIC @@ -67,7 +67,7 @@ var = network.connect_to_ip type = SLE_STR length = 0 flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync -def = nullptr +def = """" [SDTC_SSTR] var = network.last_joined diff --git a/src/table/settings/network_secrets_settings.ini b/src/table/settings/network_secrets_settings.ini index 6e9146846e..54ef0b21e0 100644 --- a/src/table/settings/network_secrets_settings.ini +++ b/src/table/settings/network_secrets_settings.ini @@ -39,7 +39,7 @@ var = network.server_password type = SLE_STR length = NETWORK_PASSWORD_LENGTH flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::NetworkOnly -def = nullptr +def = """" pre_cb = ReplaceAsteriskWithEmptyPassword post_cb = [](auto) { NetworkServerUpdateGameInfo(); } cat = SC_BASIC @@ -49,7 +49,7 @@ var = network.rcon_password type = SLE_STR length = NETWORK_PASSWORD_LENGTH flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::NetworkOnly -def = nullptr +def = """" pre_cb = ReplaceAsteriskWithEmptyPassword cat = SC_BASIC @@ -58,7 +58,7 @@ var = network.admin_password type = SLE_STR length = NETWORK_PASSWORD_LENGTH flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::NetworkOnly -def = nullptr +def = """" cat = SC_BASIC [SDTC_SSTR] @@ -66,7 +66,7 @@ var = network.client_secret_key type = SLE_STR length = NETWORK_SECRET_KEY_LENGTH flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync -def = nullptr +def = """" ; Prevent the user from setting the secret key from the console using 'setting' pre_cb = [](auto) { return false; } @@ -75,7 +75,7 @@ var = network.client_public_key type = SLE_STR length = NETWORK_SECRET_KEY_LENGTH flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync -def = nullptr +def = """" ; Prevent the user from setting the public key from the console using 'setting' pre_cb = [](auto) { return false; } @@ -84,11 +84,11 @@ var = network.server_invite_code type = SLE_STR length = NETWORK_INVITE_CODE_LENGTH flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::NetworkOnly -def = nullptr +def = """" [SDTC_SSTR] var = network.server_invite_code_secret type = SLE_STR length = NETWORK_INVITE_CODE_SECRET_LENGTH flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::NetworkOnly -def = nullptr +def = """" diff --git a/src/table/settings/old_gameopt_settings.ini b/src/table/settings/old_gameopt_settings.ini index fa1ffebbc8..b72c6f3a30 100644 --- a/src/table/settings/old_gameopt_settings.ini +++ b/src/table/settings/old_gameopt_settings.ini @@ -75,7 +75,7 @@ type = SLE_FILE_I16 | SLE_VAR_U16 flags = SettingFlag::NotInConfig var = _old_diff_custom length = 17 -def = nullptr +def = """" to = SLV_4 [SDTG_LIST] @@ -86,7 +86,7 @@ type = SLE_UINT16 flags = SettingFlag::NotInConfig var = _old_diff_custom length = 18 -def = nullptr +def = """" full = nullptr from = SLV_4