Use U8String/U16String/WString instead of UTF8String/UTF16String/WideString

This commit is contained in:
2024-12-24 22:41:09 +08:00
parent 6cd0063812
commit 21e2b6a9b5
8 changed files with 62 additions and 62 deletions

View File

@@ -13,21 +13,21 @@ namespace hgl
{
friend class ElementParseCreater;
UTF8String element_name;
U8String element_name;
protected:
Map<UTF8String,ElementCreater *> ecs_map;
Map<U8String,ElementCreater *> ecs_map;
virtual ElementCreater *GetSubElementCreater(const UTF8String &sub_name);
virtual ElementCreater *GetSubElementCreater(const U8String &sub_name);
public:
const UTF8String &GetElementName()const{return element_name;}
const U8String &GetElementName()const{return element_name;}
public:
ElementCreater(const UTF8String &en){element_name=en;}
ElementCreater(const U8String &en){element_name=en;}
virtual ~ElementCreater()=default;
bool Registry(ElementCreater *ec);
@@ -45,19 +45,19 @@ namespace hgl
{
protected:
UTF8String null_string;
U8String null_string;
Map<UTF8String,UTF8String> attrs_list;
Map<U8String,U8String> attrs_list;
public:
ElementAttribute(const UTF8String &en):ElementCreater(en){}
ElementAttribute(const U8String &en):ElementCreater(en){}
virtual ~ElementAttribute()=default;
const UTF8String operator[](const UTF8String &flag)
const U8String operator[](const U8String &flag)
{
UTF8String key=flag.ToLowerCase();
UTF8String info;
U8String key=flag.ToLowerCase();
U8String info;
if(attrs_list.Get(key,info))
return info;
@@ -66,11 +66,11 @@ namespace hgl
}
#define TO_CONV(TYPE,FN,SFN,DEFAULT_VALUE) \
const TYPE FN (const UTF8String &flag,const TYPE default_value=DEFAULT_VALUE) \
const TYPE FN (const U8String &flag,const TYPE default_value=DEFAULT_VALUE) \
{ \
const UTF8String key=flag.ToLowerCase(); \
const U8String key=flag.ToLowerCase(); \
\
UTF8String info; \
U8String info; \
\
if(!attrs_list.Get(key,info)) \
return default_value; \
@@ -88,11 +88,11 @@ namespace hgl
#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)
const U8String ToString (const U8String &flag){return operator[](flag);}
const int ToSerial (const u8char **list,const U8String &flag,const int default_value)
{
UTF8String key=flag.ToLowerCase();
UTF8String info;
U8String key=flag.ToLowerCase();
U8String info;
if(!attrs_list.Get(key,info))
return default_value;
@@ -118,7 +118,7 @@ namespace hgl
virtual void Attr (const u8char *flag,const u8char *info) override///<节点属性
{
UTF8String key=flag;
U8String key=flag;
key.LowerCase();
@@ -133,7 +133,7 @@ namespace hgl
{
Stack<ElementCreater *> ecs_stack;
Map<UTF8String,ElementCreater *> ecs_map;
Map<U8String,ElementCreater *> ecs_map;
ElementCreater *cur_ec;

View File

@@ -15,18 +15,18 @@ namespace hgl
{
protected:
using AttrsMap=Map<UTF8String,UTF8String>;
using AttrItem=KeyValue<UTF8String,UTF8String>;
using AttrsMap=Map<U8String,U8String>;
using AttrItem=KeyValue<U8String,U8String>;
AttrsMap attrs_map;
protected:
const AttrItem *GetAttrItem(const UTF8String &name);
const AttrItem *GetAttrItem(const U8String &name);
template<typename T> const bool GetInteger (const UTF8String &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stoi(ai->value.c_str(),value):false);}
template<typename T> const bool GetUInteger (const UTF8String &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stou(ai->value.c_str(),value):false);}
template<typename T> const bool GetFloat (const UTF8String &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stof(ai->value.c_str(),value):false);}
template<typename T> const bool GetInteger (const U8String &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stoi(ai->value.c_str(),value):false);}
template<typename T> const bool GetUInteger (const U8String &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stou(ai->value.c_str(),value):false);}
template<typename T> const bool GetFloat (const U8String &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stof(ai->value.c_str(),value):false);}
public:
@@ -36,28 +36,28 @@ namespace hgl
public:
const bool Contains (const UTF8String &name)const{return attrs_map.ContainsKey(name);}
const bool Contains (const U8String &name)const{return attrs_map.ContainsKey(name);}
const u8char * ToCString (const UTF8String &name){const AttrItem *ai=GetAttrItem(name);return(ai?ai->value.c_str():nullptr);}
const u8char * operator[] (const UTF8String &name){return ToCString(name);}
const u8char * ToCString (const U8String &name){const AttrItem *ai=GetAttrItem(name);return(ai?ai->value.c_str():nullptr);}
const u8char * operator[] (const U8String &name){return ToCString(name);}
public:
const bool Get(const UTF8String &name,UTF8String &str);
const bool Get(const UTF8String &name,UTF16String &str);
const bool Get(const UTF8String &name,u8char &ch);
const bool Get(const UTF8String &name,bool &value);
const bool Get(const U8String &name,U8String &str);
const bool Get(const U8String &name,U16String &str);
const bool Get(const U8String &name,u8char &ch);
const bool Get(const U8String &name,bool &value);
const bool Get(const UTF8String &name, int8 &value){return GetInteger < int8 >(name,value);}
const bool Get(const UTF8String &name,uint8 &value){return GetUInteger<uint8 >(name,value);}
const bool Get(const UTF8String &name, int16 &value){return GetInteger < int16>(name,value);}
const bool Get(const UTF8String &name,uint16 &value){return GetUInteger<uint16>(name,value);}
const bool Get(const UTF8String &name, int32 &value){return GetInteger < int32>(name,value);}
const bool Get(const UTF8String &name,uint32 &value){return GetUInteger<uint32>(name,value);}
const bool Get(const UTF8String &name, int64 &value){return GetInteger < int64>(name,value);}
const bool Get(const UTF8String &name,uint64 &value){return GetUInteger<uint64>(name,value);}
const bool Get(const U8String &name, int8 &value){return GetInteger < int8 >(name,value);}
const bool Get(const U8String &name,uint8 &value){return GetUInteger<uint8 >(name,value);}
const bool Get(const U8String &name, int16 &value){return GetInteger < int16>(name,value);}
const bool Get(const U8String &name,uint16 &value){return GetUInteger<uint16>(name,value);}
const bool Get(const U8String &name, int32 &value){return GetInteger < int32>(name,value);}
const bool Get(const U8String &name,uint32 &value){return GetUInteger<uint32>(name,value);}
const bool Get(const U8String &name, int64 &value){return GetInteger < int64>(name,value);}
const bool Get(const U8String &name,uint64 &value){return GetUInteger<uint64>(name,value);}
const bool GetHexStr(const UTF8String &name,uint8 *data);
const bool GetHexStr(const U8String &name,uint8 *data);
};//class ElementParseKV:public ElementParse
}//namespace xml
}//namespace hgl

View File

@@ -25,7 +25,7 @@ namespace hgl
namespace xml
{
const UTF8String GetExpatVersion();
const U8String GetExpatVersion();
const char *GetExpatError(int);
constexpr int XML_PARSE_BUFFER_SIZE=HGL_SIZE_1KB*128; ///<XML解析缓冲区大小
@@ -67,7 +67,7 @@ namespace hgl
const char *flag=*name;++name; \
const char *info=*name;++name;
#define XML_END_PARSE() LOG_ERROR(UTF8String(__FILE__)+U8_TEXT(":")+UTF8String(__LINE__)+U8_TEXT(" can't parse atts \"")+UTF8String(flag)+U8_TEXT("\" , info \"")+UTF8String(info)+U8_TEXT("\".")); \
#define XML_END_PARSE() LOG_ERROR(U8String(__FILE__)+U8_TEXT(":")+U8String(__LINE__)+U8_TEXT(" can't parse atts \"")+U8String(flag)+U8_TEXT("\" , info \"")+U8String(info)+U8_TEXT("\".")); \
}
#define XML_END_PARSE_SKIP() ;}