add ToUInteger/ToInteger/ToFloat/ToDouble/ToBool/ToString/ToSerial/ToEnum functions in XMLparse
This commit is contained in:
@@ -56,14 +56,58 @@ namespace hgl
|
||||
|
||||
const UTF8String operator[](const UTF8String &flag)
|
||||
{
|
||||
UTF8String key=flag.ToLowerCase();
|
||||
UTF8String info;
|
||||
|
||||
if(attrs_list.Get(flag,info))
|
||||
if(attrs_list.Get(key,info))
|
||||
return info;
|
||||
else
|
||||
return null_string;
|
||||
}
|
||||
|
||||
#define TO_CONV(TYPE,FN,SFN,DEFAULT_VALUE) \
|
||||
const TYPE FN (const UTF8String &flag,const TYPE default_value=DEFAULT_VALUE) \
|
||||
{ \
|
||||
const UTF8String key=flag.ToLowerCase(); \
|
||||
\
|
||||
UTF8String info; \
|
||||
\
|
||||
if(!attrs_list.Get(key,info)) \
|
||||
return default_value; \
|
||||
\
|
||||
TYPE result; \
|
||||
\
|
||||
return info.SFN(result)?result:default_value; \
|
||||
}
|
||||
|
||||
TO_CONV(uint, ToUInteger, ToUint, 0)
|
||||
TO_CONV( int, ToInteger, ToInt, 0)
|
||||
TO_CONV(float, ToFloat, ToFloat, 0)
|
||||
TO_CONV(double, ToDouble, ToFloat, 0)
|
||||
TO_CONV(bool, ToBool, ToBool, false)
|
||||
|
||||
#undef TO_CONV
|
||||
|
||||
const UTF8String ToString (const UTF8String &flag){return operator[](flag);}
|
||||
const int ToSerial (const u8char **list,const UTF8String &flag,const int default_value)
|
||||
{
|
||||
UTF8String key=flag.ToLowerCase();
|
||||
UTF8String info;
|
||||
|
||||
if(!attrs_list.Get(key,info))
|
||||
return default_value;
|
||||
|
||||
int result=string_serial_from_list(list,info.c_str());
|
||||
|
||||
if(result==-1)return default_value;
|
||||
return result;
|
||||
}
|
||||
|
||||
template<typename T> const T ToEnum(const u8char **str_list,const u8char *str,const T &default_enum)
|
||||
{
|
||||
return T(this->ToSerial(str_list,str,(int)default_enum));
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
virtual bool Init () override
|
||||
@@ -74,7 +118,11 @@ namespace hgl
|
||||
|
||||
virtual void Attr (const u8char *flag,const u8char *info) override///<节点属性
|
||||
{
|
||||
attrs_list.Add(flag,info);
|
||||
UTF8String key=flag;
|
||||
|
||||
key.LowerCase();
|
||||
|
||||
attrs_list.Add(key,info);
|
||||
}
|
||||
};//class ElementAttribute:public ElementCreater
|
||||
|
||||
|
Reference in New Issue
Block a user