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)
|
const UTF8String operator[](const UTF8String &flag)
|
||||||
{
|
{
|
||||||
|
UTF8String key=flag.ToLowerCase();
|
||||||
UTF8String info;
|
UTF8String info;
|
||||||
|
|
||||||
if(attrs_list.Get(flag,info))
|
if(attrs_list.Get(key,info))
|
||||||
return info;
|
return info;
|
||||||
else
|
else
|
||||||
return null_string;
|
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:
|
public:
|
||||||
|
|
||||||
virtual bool Init () override
|
virtual bool Init () override
|
||||||
@@ -74,7 +118,11 @@ namespace hgl
|
|||||||
|
|
||||||
virtual void Attr (const u8char *flag,const u8char *info) override///<节点属性
|
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
|
};//class ElementAttribute:public ElementCreater
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user