mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
.Core: Config->Ini
git-svn-id: svn://ultimatepp.org/upp/trunk@5097 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
ddeff70705
commit
75f3740645
3 changed files with 49 additions and 44 deletions
|
|
@ -169,7 +169,7 @@ struct DebugLogBlock
|
|||
|
||||
struct IniBool;
|
||||
|
||||
namespace Config {
|
||||
namespace Ini {
|
||||
extern IniBool user_log;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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<String> ss;
|
||||
String& x = ss.Add();
|
||||
static Array<UPP::String> 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<IniString&>(*this));
|
||||
return AsString((String)const_cast<Ini::String&>(*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<IniInt&>(*this));
|
||||
return AsString((int)const_cast<Ini::Int&>(*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<IniBool&>(*this));
|
||||
return AsString((bool)const_cast<Ini::Bool&>(*this));
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Array<IniInfo>& sIniInfo()
|
||||
{
|
||||
static Array<IniInfo> s;
|
||||
|
|
|
|||
|
|
@ -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<String, String> LoadIniStream(Stream &in);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue