diff --git a/uppsrc/Core/Diag.h b/uppsrc/Core/Diag.h index 1503e887d..120038374 100644 --- a/uppsrc/Core/Diag.h +++ b/uppsrc/Core/Diag.h @@ -169,7 +169,7 @@ struct DebugLogBlock struct IniBool; -namespace Config { +namespace Ini { extern IniBool user_log; }; diff --git a/uppsrc/Core/Util.cpp b/uppsrc/Core/Util.cpp index dbc0131d2..1e752e25b 100644 --- a/uppsrc/Core/Util.cpp +++ b/uppsrc/Core/Util.cpp @@ -424,30 +424,32 @@ String GetIniKey(const char *id) return GetIniKey(id, String()); } -IniString::operator String() +namespace Ini { + +String::operator Upp::String() { ONCELOCK_(loaded) { - static Array ss; - String& x = ss.Add(); + static Array ss; + UPP::String& x = ss.Add(); x = Nvl(TrimBoth(GetIniKey(id)), (*def)()); value = &x; } return *value; } -String IniString::operator=(const String& s) +Upp::String String::operator=(const UPP::String& s) { - operator String(); + operator UPP::String(); *value = s; return s; } -String IniString::ToString() const +UPP::String String::ToString() const { - return AsString((String)const_cast(*this)); + return AsString((String)const_cast(*this)); } -IniInt::operator int() { +Int::operator int() { ONCELOCK_(loaded) { value = ScanInt(TrimBoth(ToLower(GetIniKey(id)))); if(IsNull(value)) @@ -456,34 +458,36 @@ IniInt::operator int() { return value; } -int IniInt::operator=(int b) { +int Int::operator=(int b) { ONCELOCK_(loaded) {} return value = b; } -String IniInt::ToString() const +UPP::String Int::ToString() const { - return AsString((int)const_cast(*this)); + return AsString((int)const_cast(*this)); } -IniBool::operator bool() { +Bool::operator bool() { ONCELOCK_(loaded) { - String h = TrimBoth(ToLower(GetIniKey(id))); + UPP::String h = TrimBoth(ToLower(GetIniKey(id))); value = h.GetCount() ? h == "1" || h == "yes" || h == "true" || h == "y" : (*def)(); } return value; } -bool IniBool::operator=(bool b) { +bool Bool::operator=(bool b) { ONCELOCK_(loaded) {} return value = b; } -String IniBool::ToString() const +UPP::String Bool::ToString() const { - return AsString((bool)const_cast(*this)); + return AsString((bool)const_cast(*this)); } +}; + Array& sIniInfo() { static Array s; diff --git a/uppsrc/Core/Util.h b/uppsrc/Core/Util.h index d68b4e299..e8fc72847 100644 --- a/uppsrc/Core/Util.h +++ b/uppsrc/Core/Util.h @@ -28,42 +28,43 @@ void SetIniFile(const char *path = NULL); String GetIniKey(const char *id, const String& def); String GetIniKey(const char *id); - -struct IniString { +namespace Ini { +struct String { // "private": - const char *id; - String (*def)(); - bool loaded; - String *value; + const char *id; + UPP::String (*def)(); + bool loaded; + UPP::String *value; - operator String(); - String operator=(const String& s); - String ToString() const; + operator UPP::String(); + UPP::String operator=(const UPP::String& s); + UPP::String ToString() const; }; -struct IniInt { +struct Int { // "private": const char *id; int (*def)(); int loaded; int value; - operator int(); - int operator=(int b); - String ToString() const; + operator int(); + int operator=(int b); + UPP::String ToString() const; }; -struct IniBool { +struct Bool { // "private": const char *id; bool (*def)(); bool loaded; bool value; - operator bool(); - bool operator=(bool b); - String ToString() const; + operator bool(); + bool operator=(bool b); + UPP::String ToString() const; }; +} void AddIniInfo(const char *id, String (*current)(), String (*def)(), const char *info); @@ -79,23 +80,23 @@ String GetIniInfoFormatted(); #define INI_BOOL(var, def, info)\ bool DefIni_##var() { return def; }\ -IniBool var = { #var, DefIni_##var };\ -String AsStringIniCurrent_##var() { return AsString(var); } \ -String AsStringIniDefault_##var() { return AsString(DefIni_##var()); } \ +Ini::Bool var = { #var, DefIni_##var };\ +UPP::String AsStringIniCurrent_##var() { return AsString(var); } \ +UPP::String AsStringIniDefault_##var() { return AsString(DefIni_##var()); } \ INITBLOCK { AddIniInfo(#var, AsStringIniCurrent_##var, AsStringIniDefault_##var, info); } #define INI_STRING(var, def, info)\ -String DefIni_##var() { return def; }\ -IniString var = { #var, DefIni_##var };\ -String AsStringIniCurrent_##var() { return AsString(var); } \ -String AsStringIniDefault_##var() { return AsString(DefIni_##var()); } \ +UPP::String DefIni_##var() { return def; }\ +Ini::String var = { #var, DefIni_##var };\ +UPP::String AsStringIniCurrent_##var() { return AsString(var); } \ +UPP::String AsStringIniDefault_##var() { return AsString(DefIni_##var()); } \ INITBLOCK { AddIniInfo(#var, AsStringIniCurrent_##var, AsStringIniDefault_##var, info); } #define INI_INT(var, def, info)\ int DefIni_##var() { return def; }\ -IniInt var = { #var, DefIni_##var };\ -String AsStringIniCurrent_##var() { return AsString(var); } \ -String AsStringIniDefault_##var() { return AsString(DefIni_##var()); } \ +Ini::Int var = { #var, DefIni_##var };\ +UPP::String AsStringIniCurrent_##var() { return AsString(var); } \ +UPP::String AsStringIniDefault_##var() { return AsString(DefIni_##var()); } \ INITBLOCK { AddIniInfo(#var, AsStringIniCurrent_##var, AsStringIniDefault_##var, info); } VectorMap LoadIniStream(Stream &in);