mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 20:31:14 +00:00
setsys_settings_items: Less resource churn with combined key/value construction
The previous string construction discards two temporary std::string instances (operator+ returns by value, not by reference), and creates a std::string that it doesn't need to (the one around key). Instead we can just append to the end of the initial std::string itself, saving on two unnecessary created strings. append() has a const char* overload as well (as does operator+), so we can just append the key string as is without creating an entire new string.
This commit is contained in:
parent
452c61db7a
commit
dd10547ac2
1 changed files with 10 additions and 10 deletions
|
@ -153,8 +153,8 @@ static Result ParseValue(const char *name, const char *key, const char *val_tup)
|
||||||
if (delimiter == NULL || value_len == 0 || type_len == 0) {
|
if (delimiter == NULL || value_len == 0 || type_len == 0) {
|
||||||
return ResultSettingsItemValueInvalidFormat;
|
return ResultSettingsItemValueInvalidFormat;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string kv = std::string(name) + "!" + std::string(key);
|
std::string kv = std::string(name).append("!").append(key);
|
||||||
SettingsItemValue value;
|
SettingsItemValue value;
|
||||||
|
|
||||||
if (strncasecmp(type, "str", type_len) == 0 || strncasecmp(type, "string", type_len) == 0) {
|
if (strncasecmp(type, "str", type_len) == 0 || strncasecmp(type, "string", type_len) == 0) {
|
||||||
|
@ -242,7 +242,7 @@ static int SettingsItemIniHandler(void *user, const char *name, const char *key,
|
||||||
return R_SUCCEEDED(rc) ? 1 : 0;
|
return R_SUCCEEDED(rc) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsItemManager::LoadConfiguration() {
|
void SettingsItemManager::LoadConfiguration() {
|
||||||
/* Open file. */
|
/* Open file. */
|
||||||
FsFile config_file;
|
FsFile config_file;
|
||||||
Result rc = Utils::OpenSdFile("/atmosphere/system_settings.ini", FS_OPEN_READ, &config_file);
|
Result rc = Utils::OpenSdFile("/atmosphere/system_settings.ini", FS_OPEN_READ, &config_file);
|
||||||
|
@ -275,31 +275,31 @@ void SettingsItemManager::LoadConfiguration() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Result SettingsItemManager::GetValueSize(const char *name, const char *key, u64 *out_size) {
|
Result SettingsItemManager::GetValueSize(const char *name, const char *key, u64 *out_size) {
|
||||||
std::string kv = std::string(name) + "!" + std::string(key);
|
const std::string kv = std::string(name).append("!").append(key);
|
||||||
|
|
||||||
auto it = g_settings_items.find(kv);
|
auto it = g_settings_items.find(kv);
|
||||||
if (it == g_settings_items.end()) {
|
if (it == g_settings_items.end()) {
|
||||||
return ResultSettingsItemNotFound;
|
return ResultSettingsItemNotFound;
|
||||||
}
|
}
|
||||||
|
|
||||||
*out_size = it->second.size;
|
*out_size = it->second.size;
|
||||||
return ResultSuccess;
|
return ResultSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result SettingsItemManager::GetValue(const char *name, const char *key, void *out, size_t max_size, u64 *out_size) {
|
Result SettingsItemManager::GetValue(const char *name, const char *key, void *out, size_t max_size, u64 *out_size) {
|
||||||
std::string kv = std::string(name) + "!" + std::string(key);
|
const std::string kv = std::string(name).append("!").append(key);
|
||||||
|
|
||||||
auto it = g_settings_items.find(kv);
|
auto it = g_settings_items.find(kv);
|
||||||
if (it == g_settings_items.end()) {
|
if (it == g_settings_items.end()) {
|
||||||
return ResultSettingsItemNotFound;
|
return ResultSettingsItemNotFound;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t copy_size = it->second.size;
|
size_t copy_size = it->second.size;
|
||||||
if (max_size < copy_size) {
|
if (max_size < copy_size) {
|
||||||
copy_size = max_size;
|
copy_size = max_size;
|
||||||
}
|
}
|
||||||
*out_size = copy_size;
|
*out_size = copy_size;
|
||||||
|
|
||||||
memcpy(out, it->second.data, copy_size);
|
memcpy(out, it->second.data, copy_size);
|
||||||
return ResultSuccess;
|
return ResultSuccess;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue