mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
More config refactor
This commit is contained in:
1 parent
7578a1935b
commit
60aed95e7b
4 files changed
+94
-92
No files matched your search
@@ -453,14 +453,14 @@ bool IniFile::DeleteSection(const char* sectionName) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool IniFile::Exists(const char* sectionName, const char* key) const {
|
||||
bool IniFile::Exists(const char* sectionName, std::string_view key) const {
|
||||
const Section* section = GetSection(sectionName);
|
||||
if (!section)
|
||||
return false;
|
||||
return section->Exists(key);
|
||||
}
|
||||
|
||||
bool IniFile::DeleteKey(const char* sectionName, const char* key) {
|
||||
bool IniFile::DeleteKey(const char* sectionName, std::string_view key) {
|
||||
Section* section = GetSection(sectionName);
|
||||
if (!section)
|
||||
return false;
|
||||
|
||||
@@ -135,7 +135,7 @@ public:
|
||||
bool Save(const Path &path);
|
||||
|
||||
// Returns true if key exists in section
|
||||
bool Exists(const char* sectionName, const char* key) const;
|
||||
bool Exists(const char* sectionName, std::string_view key) const;
|
||||
|
||||
// These will not create the section if it doesn't exist.
|
||||
bool Get(const char* sectionName, const char* key, std::string* value, const char* defaultValue = "");
|
||||
@@ -147,7 +147,7 @@ public:
|
||||
|
||||
bool GetKeys(const char* sectionName, std::vector<std::string>& keys) const;
|
||||
|
||||
bool DeleteKey(const char* sectionName, const char* key);
|
||||
bool DeleteKey(const char* sectionName, std::string_view key);
|
||||
bool DeleteSection(const char* sectionName);
|
||||
|
||||
void SortSections();
|
||||
|
||||
+52
-50
@@ -14,10 +14,10 @@ bool ConfigSetting::perGame(void *ptr) {
|
||||
|
||||
bool ConfigSetting::ReadFromIniSection(const Section *section) const {
|
||||
switch (type_) {
|
||||
case TYPE_BOOL:
|
||||
case Type::TYPE_BOOL:
|
||||
return section->Get(iniKey_, ptr_.b, cb_.b ? cb_.b() : default_.b);
|
||||
|
||||
case TYPE_INT:
|
||||
case Type::TYPE_INT:
|
||||
if (translateFrom_) {
|
||||
std::string value;
|
||||
if (section->Get(iniKey_, &value, nullptr)) {
|
||||
@@ -26,15 +26,15 @@ bool ConfigSetting::ReadFromIniSection(const Section *section) const {
|
||||
}
|
||||
}
|
||||
return section->Get(iniKey_, ptr_.i, cb_.i ? cb_.i() : default_.i);
|
||||
case TYPE_UINT32:
|
||||
case Type::TYPE_UINT32:
|
||||
return section->Get(iniKey_, ptr_.u, cb_.u ? cb_.u() : default_.u);
|
||||
case TYPE_UINT64:
|
||||
case Type::TYPE_UINT64:
|
||||
return section->Get(iniKey_, ptr_.lu, cb_.lu ? cb_.lu() : default_.lu);
|
||||
case TYPE_FLOAT:
|
||||
case Type::TYPE_FLOAT:
|
||||
return section->Get(iniKey_, ptr_.f, cb_.f ? cb_.f() : default_.f);
|
||||
case TYPE_STRING:
|
||||
case Type::TYPE_STRING:
|
||||
return section->Get(iniKey_, ptr_.s, cb_.s ? cb_.s().c_str() : default_.s);
|
||||
case TYPE_STRING_VECTOR:
|
||||
case Type::TYPE_STRING_VECTOR:
|
||||
{
|
||||
// No support for callbacks for these yet. that's not an issue.
|
||||
bool success = section->Get(iniKey_, ptr_.v, default_.v);
|
||||
@@ -43,7 +43,7 @@ bool ConfigSetting::ReadFromIniSection(const Section *section) const {
|
||||
}
|
||||
return success;
|
||||
}
|
||||
case TYPE_TOUCH_POS:
|
||||
case Type::TYPE_TOUCH_POS:
|
||||
{
|
||||
ConfigTouchPos defaultTouchPos = cb_.touchPos ? cb_.touchPos() : default_.touchPos;
|
||||
section->Get(iniKey_, &ptr_.touchPos->x, defaultTouchPos.x);
|
||||
@@ -56,7 +56,7 @@ bool ConfigSetting::ReadFromIniSection(const Section *section) const {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
case TYPE_PATH:
|
||||
case Type::TYPE_PATH:
|
||||
{
|
||||
std::string tmp;
|
||||
bool result = section->Get(iniKey_, &tmp, cb_.p ? cb_.p() : default_.p);
|
||||
@@ -65,7 +65,7 @@ bool ConfigSetting::ReadFromIniSection(const Section *section) const {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
case TYPE_CUSTOM_BUTTON:
|
||||
case Type::TYPE_CUSTOM_BUTTON:
|
||||
{
|
||||
ConfigCustomButton defaultCustomButton = cb_.customButton ? cb_.customButton() : default_.customButton;
|
||||
section->Get(iniKey_, &ptr_.customButton->key, defaultCustomButton.key);
|
||||
@@ -76,7 +76,7 @@ bool ConfigSetting::ReadFromIniSection(const Section *section) const {
|
||||
return true;
|
||||
}
|
||||
default:
|
||||
_dbg_assert_msg_(false, "Get(%s): Unexpected ini setting type: %d", iniKey_, (int)type_);
|
||||
_dbg_assert_msg_(false, "Get%.*s): Unexpected ini setting type: %d", STR_VIEW(iniKey_), (int)type_);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -87,27 +87,27 @@ void ConfigSetting::WriteToIniSection(Section *section) const {
|
||||
}
|
||||
|
||||
switch (type_) {
|
||||
case TYPE_BOOL:
|
||||
case Type::TYPE_BOOL:
|
||||
return section->Set(iniKey_, *ptr_.b);
|
||||
case TYPE_INT:
|
||||
case Type::TYPE_INT:
|
||||
if (translateTo_) {
|
||||
std::string value = translateTo_(*ptr_.i);
|
||||
return section->Set(iniKey_, value);
|
||||
}
|
||||
return section->Set(iniKey_, *ptr_.i);
|
||||
case TYPE_UINT32:
|
||||
case Type::TYPE_UINT32:
|
||||
return section->Set(iniKey_, *ptr_.u);
|
||||
case TYPE_UINT64:
|
||||
case Type::TYPE_UINT64:
|
||||
return section->Set(iniKey_, *ptr_.lu);
|
||||
case TYPE_FLOAT:
|
||||
case Type::TYPE_FLOAT:
|
||||
return section->Set(iniKey_, *ptr_.f);
|
||||
case TYPE_STRING:
|
||||
case Type::TYPE_STRING:
|
||||
return section->Set(iniKey_, *ptr_.s);
|
||||
case TYPE_STRING_VECTOR:
|
||||
case Type::TYPE_STRING_VECTOR:
|
||||
return section->Set(iniKey_, *ptr_.v);
|
||||
case TYPE_PATH:
|
||||
case Type::TYPE_PATH:
|
||||
return section->Set(iniKey_, ptr_.p->ToString());
|
||||
case TYPE_TOUCH_POS:
|
||||
case Type::TYPE_TOUCH_POS:
|
||||
section->Set(iniKey_, ptr_.touchPos->x);
|
||||
section->Set(ini2_, ptr_.touchPos->y);
|
||||
section->Set(ini3_, ptr_.touchPos->scale);
|
||||
@@ -115,7 +115,7 @@ void ConfigSetting::WriteToIniSection(Section *section) const {
|
||||
section->Set(ini4_, ptr_.touchPos->show);
|
||||
}
|
||||
return;
|
||||
case TYPE_CUSTOM_BUTTON:
|
||||
case Type::TYPE_CUSTOM_BUTTON:
|
||||
section->Set(iniKey_, ptr_.customButton->key);
|
||||
section->Set(ini2_, ptr_.customButton->image);
|
||||
section->Set(ini3_, ptr_.customButton->shape);
|
||||
@@ -123,20 +123,20 @@ void ConfigSetting::WriteToIniSection(Section *section) const {
|
||||
section->Set(ini5_, ptr_.customButton->repeat);
|
||||
return;
|
||||
default:
|
||||
_dbg_assert_msg_(false, "Set(%s): Unexpected ini setting type: %d", iniKey_, (int)type_);
|
||||
_dbg_assert_msg_(false, "Set%.*s): Unexpected ini setting type: %d", STR_VIEW(iniKey_), (int)type_);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
bool ConfigSetting::RestoreToDefault(bool log) const {
|
||||
switch (type_) {
|
||||
case TYPE_BOOL:
|
||||
case Type::TYPE_BOOL:
|
||||
{
|
||||
const bool origValue = *ptr_.b;
|
||||
*ptr_.b = cb_.b ? cb_.b() : default_.b;
|
||||
if (*ptr_.b != origValue) {
|
||||
if (log) {
|
||||
INFO_LOG(Log::System, "Restored %s from %s to default %s", iniKey_,
|
||||
INFO_LOG(Log::System, "Restored %.*s from %s to default %s", STR_VIEW(iniKey_),
|
||||
origValue ? "true" : "false",
|
||||
*ptr_.b ? "true" : "false");
|
||||
}
|
||||
@@ -144,93 +144,93 @@ bool ConfigSetting::RestoreToDefault(bool log) const {
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TYPE_INT:
|
||||
case Type::TYPE_INT:
|
||||
{
|
||||
const int origValue = *ptr_.i;
|
||||
*ptr_.i = cb_.i ? cb_.i() : default_.i;
|
||||
if (*ptr_.i != origValue) {
|
||||
if (log) {
|
||||
INFO_LOG(Log::System, "Restored %s from %d to default %d", iniKey_,
|
||||
INFO_LOG(Log::System, "Restored %.*s from %d to default %d", STR_VIEW(iniKey_),
|
||||
origValue, *ptr_.i);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TYPE_UINT32:
|
||||
case Type::TYPE_UINT32:
|
||||
{
|
||||
const u32 origValue = *ptr_.u;
|
||||
*ptr_.u = cb_.u ? cb_.u() : default_.u;
|
||||
if (*ptr_.u != origValue) {
|
||||
if (log) {
|
||||
INFO_LOG(Log::System, "Restored %s from %u to default %u", iniKey_,
|
||||
INFO_LOG(Log::System, "Restored %.*s from %u to default %u", STR_VIEW(iniKey_),
|
||||
origValue, *ptr_.u);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TYPE_UINT64:
|
||||
case Type::TYPE_UINT64:
|
||||
{
|
||||
const u64 origValue = *ptr_.lu;
|
||||
*ptr_.lu = cb_.lu ? cb_.lu() : default_.lu;
|
||||
if (*ptr_.lu != origValue) {
|
||||
if (log) {
|
||||
INFO_LOG(Log::System, "Restored %s from %llu to default %llu", iniKey_,
|
||||
INFO_LOG(Log::System, "Restored %.*s from %llu to default %llu", STR_VIEW(iniKey_),
|
||||
(unsigned long long)origValue, (unsigned long long)(*ptr_.lu));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TYPE_FLOAT:
|
||||
case Type::TYPE_FLOAT:
|
||||
{
|
||||
const float origValue = *ptr_.f;
|
||||
*ptr_.f = cb_.f ? cb_.f() : default_.f;
|
||||
if (*ptr_.f != origValue) {
|
||||
if (log) {
|
||||
INFO_LOG(Log::System, "Restored %s from %f to default %f", iniKey_,
|
||||
INFO_LOG(Log::System, "Restored %.*s from %f to default %f", STR_VIEW(iniKey_),
|
||||
origValue, *ptr_.f);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TYPE_STRING:
|
||||
case Type::TYPE_STRING:
|
||||
{
|
||||
const std::string origValue = *ptr_.s;
|
||||
*ptr_.s = cb_.s ? cb_.s() : default_.s;
|
||||
if (*ptr_.s != origValue) {
|
||||
if (log) {
|
||||
INFO_LOG(Log::System, "Restored %s from \"%s\" to default \"%s\"", iniKey_,
|
||||
INFO_LOG(Log::System, "Restored %.*s from \"%s\" to default \"%s\"", STR_VIEW(iniKey_),
|
||||
origValue.c_str(), ptr_.s->c_str());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TYPE_STRING_VECTOR:
|
||||
case Type::TYPE_STRING_VECTOR:
|
||||
{
|
||||
*ptr_.v = *default_.v;
|
||||
break;
|
||||
}
|
||||
case TYPE_TOUCH_POS:
|
||||
case Type::TYPE_TOUCH_POS:
|
||||
{
|
||||
*ptr_.touchPos = cb_.touchPos ? cb_.touchPos() : default_.touchPos;
|
||||
break;
|
||||
}
|
||||
case TYPE_PATH:
|
||||
case Type::TYPE_PATH:
|
||||
{
|
||||
*ptr_.p = Path(cb_.p ? cb_.p() : default_.p);
|
||||
break;
|
||||
}
|
||||
case TYPE_CUSTOM_BUTTON:
|
||||
case Type::TYPE_CUSTOM_BUTTON:
|
||||
{
|
||||
*ptr_.customButton = cb_.customButton ? cb_.customButton() : default_.customButton;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
_dbg_assert_msg_(false, "RestoreToDefault(%s): Unexpected ini setting type: %d", iniKey_, (int)type_);
|
||||
_dbg_assert_msg_(false, "RestoreToDefault(%.*s): Unexpected ini setting type: %d", STR_VIEW(iniKey_), (int)type_);
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
@@ -240,19 +240,21 @@ void ConfigSetting::ReportSetting(UrlEncoder &data, const std::string &prefix) c
|
||||
if (!Report())
|
||||
return;
|
||||
|
||||
const std::string key = prefix + std::string(iniKey_);
|
||||
|
||||
switch (type_) {
|
||||
case TYPE_BOOL: return data.Add(prefix + iniKey_, *ptr_.b);
|
||||
case TYPE_INT: return data.Add(prefix + iniKey_, *ptr_.i);
|
||||
case TYPE_UINT32: return data.Add(prefix + iniKey_, *ptr_.u);
|
||||
case TYPE_UINT64: return data.Add(prefix + iniKey_, *ptr_.lu);
|
||||
case TYPE_FLOAT: return data.Add(prefix + iniKey_, *ptr_.f);
|
||||
case TYPE_STRING: return data.Add(prefix + iniKey_, *ptr_.s);
|
||||
case TYPE_STRING_VECTOR: return data.Add(prefix + iniKey_, *ptr_.v);
|
||||
case TYPE_PATH: return data.Add(prefix + iniKey_, ptr_.p->ToString());
|
||||
case TYPE_TOUCH_POS: return; // Doesn't report.
|
||||
case TYPE_CUSTOM_BUTTON: return; // Doesn't report.
|
||||
case Type::TYPE_BOOL: return data.Add(key, *ptr_.b);
|
||||
case Type::TYPE_INT: return data.Add(key, *ptr_.i);
|
||||
case Type::TYPE_UINT32: return data.Add(key, *ptr_.u);
|
||||
case Type::TYPE_UINT64: return data.Add(key, *ptr_.lu);
|
||||
case Type::TYPE_FLOAT: return data.Add(key, *ptr_.f);
|
||||
case Type::TYPE_STRING: return data.Add(key, *ptr_.s);
|
||||
case Type::TYPE_STRING_VECTOR: return data.Add(key, *ptr_.v);
|
||||
case Type::TYPE_PATH: return data.Add(key, ptr_.p->ToString());
|
||||
case Type::TYPE_TOUCH_POS: return; // Doesn't report.
|
||||
case Type::TYPE_CUSTOM_BUTTON: return; // Doesn't report.
|
||||
default:
|
||||
_dbg_assert_msg_(false, "Report(%s): Unexpected ini setting type: %d", iniKey_, (int)type_);
|
||||
_dbg_assert_msg_(false, "Report(%s): Unexpected ini setting type: %d", key.c_str(), (int)type_);
|
||||
return;
|
||||
}
|
||||
}
|
||||
+38
-38
@@ -17,7 +17,7 @@ enum class CfgFlag : u8 {
|
||||
ENUM_CLASS_BITOPS(CfgFlag);
|
||||
|
||||
struct ConfigSetting {
|
||||
enum Type {
|
||||
enum class Type {
|
||||
TYPE_TERMINATOR,
|
||||
TYPE_BOOL,
|
||||
TYPE_INT,
|
||||
@@ -77,120 +77,120 @@ struct ConfigSetting {
|
||||
CustomButtonDefaultCallback customButton;
|
||||
};
|
||||
|
||||
ConfigSetting(const char *ini, bool *v, bool def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_BOOL), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, bool *v, bool def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_BOOL), flags_(flags) {
|
||||
ptr_.b = v;
|
||||
cb_.b = nullptr;
|
||||
default_.b = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, int *v, int def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_INT), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, int *v, int def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_INT), flags_(flags) {
|
||||
ptr_.i = v;
|
||||
cb_.i = nullptr;
|
||||
default_.i = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, int *v, int def, std::string (*transTo)(int), int (*transFrom)(const std::string &), CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_INT), flags_(flags), translateTo_(transTo), translateFrom_(transFrom) {
|
||||
constexpr ConfigSetting(std::string_view ini, int *v, int def, std::string (*transTo)(int), int (*transFrom)(const std::string &), CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_INT), flags_(flags), translateTo_(transTo), translateFrom_(transFrom) {
|
||||
ptr_.i = v;
|
||||
cb_.i = nullptr;
|
||||
default_.i = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, uint32_t *v, uint32_t def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_UINT32), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, uint32_t *v, uint32_t def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_UINT32), flags_(flags) {
|
||||
ptr_.u = v;
|
||||
cb_.u = nullptr;
|
||||
default_.u = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, uint64_t *v, uint64_t def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_UINT64), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, uint64_t *v, uint64_t def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_UINT64), flags_(flags) {
|
||||
ptr_.lu = v;
|
||||
cb_.lu = nullptr;
|
||||
default_.lu = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, float *v, float def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_FLOAT), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, float *v, float def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_FLOAT), flags_(flags) {
|
||||
ptr_.f = v;
|
||||
cb_.f = nullptr;
|
||||
default_.f = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, std::string *v, const char *def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_STRING), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, std::string *v, const char *def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_STRING), flags_(flags) {
|
||||
ptr_.s = v;
|
||||
cb_.s = nullptr;
|
||||
default_.s = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, std::vector<std::string> *v, const std::vector<std::string> *def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_STRING_VECTOR), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, std::vector<std::string> *v, const std::vector<std::string> *def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_STRING_VECTOR), flags_(flags) {
|
||||
ptr_.v = v;
|
||||
default_.v = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, Path *v, const char *def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_PATH), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, Path *v, const char *def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_PATH), flags_(flags) {
|
||||
ptr_.p = v;
|
||||
cb_.p = nullptr;
|
||||
default_.p = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *iniX, const char *iniY, const char *iniScale, const char *iniShow, ConfigTouchPos *v, ConfigTouchPos def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(iniX), ini2_(iniY), ini3_(iniScale), ini4_(iniShow), type_(TYPE_TOUCH_POS), flags_(flags) {
|
||||
constexpr ConfigSetting(const char *iniX, const char *iniY, const char *iniScale, const char *iniShow, ConfigTouchPos *v, ConfigTouchPos def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(iniX), ini2_(iniY), ini3_(iniScale), ini4_(iniShow), type_(Type::TYPE_TOUCH_POS), flags_(flags) {
|
||||
ptr_.touchPos = v;
|
||||
cb_.touchPos = nullptr;
|
||||
default_.touchPos = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *iniKey, const char *iniImage, const char *iniShape, const char *iniToggle, const char *iniRepeat, ConfigCustomButton *v, ConfigCustomButton def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(iniKey), ini2_(iniImage), ini3_(iniShape), ini4_(iniToggle), ini5_(iniRepeat), type_(TYPE_CUSTOM_BUTTON), flags_(flags) {
|
||||
constexpr ConfigSetting(const char *iniKey, const char *iniImage, const char *iniShape, const char *iniToggle, const char *iniRepeat, ConfigCustomButton *v, ConfigCustomButton def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(iniKey), ini2_(iniImage), ini3_(iniShape), ini4_(iniToggle), ini5_(iniRepeat), type_(Type::TYPE_CUSTOM_BUTTON), flags_(flags) {
|
||||
ptr_.customButton = v;
|
||||
cb_.customButton = nullptr;
|
||||
default_.customButton = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, bool *v, BoolDefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_BOOL), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, bool *v, BoolDefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_BOOL), flags_(flags) {
|
||||
ptr_.b = v;
|
||||
cb_.b = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, int *v, IntDefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_INT), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, int *v, IntDefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_INT), flags_(flags) {
|
||||
ptr_.i = v;
|
||||
cb_.i = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, int *v, IntDefaultCallback def, std::string(*transTo)(int), int(*transFrom)(const std::string &), CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_INT), flags_(flags), translateTo_(transTo), translateFrom_(transFrom) {
|
||||
constexpr ConfigSetting(std::string_view ini, int *v, IntDefaultCallback def, std::string(*transTo)(int), int(*transFrom)(const std::string &), CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_INT), flags_(flags), translateTo_(transTo), translateFrom_(transFrom) {
|
||||
ptr_.i = v;
|
||||
cb_.i = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, uint32_t *v, Uint32DefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_UINT32), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, uint32_t *v, Uint32DefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_UINT32), flags_(flags) {
|
||||
ptr_.u = v;
|
||||
cb_.u = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, float *v, FloatDefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_FLOAT), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, float *v, FloatDefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_FLOAT), flags_(flags) {
|
||||
ptr_.f = v;
|
||||
cb_.f = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *ini, std::string *v, StringDefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(TYPE_STRING), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view ini, std::string *v, StringDefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(ini), type_(Type::TYPE_STRING), flags_(flags) {
|
||||
ptr_.s = v;
|
||||
cb_.s = def;
|
||||
}
|
||||
|
||||
ConfigSetting(const char *iniX, const char *iniY, const char *iniScale, const char *iniShow, ConfigTouchPos *v, TouchPosDefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(iniX), ini2_(iniY), ini3_(iniScale), ini4_(iniShow), type_(TYPE_TOUCH_POS), flags_(flags) {
|
||||
constexpr ConfigSetting(std::string_view iniX, const char *iniY, const char *iniScale, const char *iniShow, ConfigTouchPos *v, TouchPosDefaultCallback def, CfgFlag flags = CfgFlag::DEFAULT) noexcept
|
||||
: iniKey_(iniX), ini2_(iniY), ini3_(iniScale), ini4_(iniShow), type_(Type::TYPE_TOUCH_POS), flags_(flags) {
|
||||
ptr_.touchPos = v;
|
||||
cb_.touchPos = def;
|
||||
}
|
||||
@@ -211,7 +211,7 @@ struct ConfigSetting {
|
||||
bool SaveSetting() const { return !(flags_ & CfgFlag::DONT_SAVE); }
|
||||
bool Report() const { return flags_ & CfgFlag::REPORT; }
|
||||
|
||||
const char *iniKey_ = nullptr;
|
||||
std::string_view iniKey_ = nullptr;
|
||||
const char *ini2_ = nullptr;
|
||||
const char *ini3_ = nullptr;
|
||||
const char *ini4_ = nullptr;
|
||||
|
||||
Reference in new issue
Block a user