add ToUInteger/ToInteger/ToFloat/ToDouble/ToBool/ToString/ToSerial/ToEnum functions in XMLparse

This commit is contained in:
2020-09-18 19:49:20 +08:00
parent db0d47fc13
commit 604ad1c30e

View File

@@ -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