From 44f897d60805407660c0f9c5c4cafc74c7635966 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Tue, 25 Aug 2020 21:47:05 +0800 Subject: [PATCH] use u8char instead char in XMLParse --- inc/hgl/util/xml/ElementParse.h | 9 ++--- inc/hgl/util/xml/ElementParseCreater.h | 22 ++++++------ inc/hgl/util/xml/ElementParseKV.h | 46 +++++++++++++------------- src/xml/ElementCreater.cpp | 10 ++++-- src/xml/ElementParseCreater.cpp | 8 ++--- src/xml/ElementParseKV.cpp | 12 +++---- src/xml/XMLParseClass.cpp | 10 +++--- 7 files changed, 61 insertions(+), 56 deletions(-) diff --git a/inc/hgl/util/xml/ElementParse.h b/inc/hgl/util/xml/ElementParse.h index df6056b..8d9d047 100644 --- a/inc/hgl/util/xml/ElementParse.h +++ b/inc/hgl/util/xml/ElementParse.h @@ -1,6 +1,7 @@ #ifndef HGL_UTIL_XML_ELEMENT_PARSE_INCLUDE #define HGL_UTIL_XML_ELEMENT_PARSE_INCLUDE +#include namespace hgl { namespace xml @@ -14,10 +15,10 @@ namespace hgl virtual ~ElementParse()=default; - virtual bool Start (const char *element_name) {return(true);} - virtual void Attr (const char *flag,const char *info) {} - virtual void CharData (const char *str,const int str_length) {} - virtual void End (const char *element_name) {} + virtual bool Start (const u8char *element_name) {return(true);} + virtual void Attr (const u8char *flag,const u8char *info) {} + virtual void CharData (const u8char *str,const int str_length){} + virtual void End (const u8char *element_name) {} };//class ElementParse }//namespace xml }//namespace hgl diff --git a/inc/hgl/util/xml/ElementParseCreater.h b/inc/hgl/util/xml/ElementParseCreater.h index d65aafe..0bc23fd 100644 --- a/inc/hgl/util/xml/ElementParseCreater.h +++ b/inc/hgl/util/xml/ElementParseCreater.h @@ -13,30 +13,30 @@ namespace hgl { friend class ElementParseCreater; - AnsiString element_name; + UTF8String element_name; protected: Map ecs_map; - virtual ElementCreater *GetSubElementCreater(const AnsiString &sub_name); + virtual ElementCreater *GetSubElementCreater(const UTF8String &sub_name); public: - const AnsiString &GetElementName()const{return element_name;} + const UTF8String &GetElementName()const{return element_name;} public: - ElementCreater(const AnsiString &en){element_name=en;} + ElementCreater(const UTF8String &en){element_name=en;} virtual ~ElementCreater()=default; - bool Registry(const AnsiString &name,ElementCreater *ec); + bool Registry(ElementCreater *ec); public: virtual bool Start (){return true;} - virtual void Attr (const char *flag,const char *info){} - virtual void CharData (const char *str,const int str_length){} + virtual void Attr (const u8char *flag,const u8char *info){} + virtual void CharData (const u8char *str,const int str_length){} virtual void End (){} };//class ElementCreater @@ -63,10 +63,10 @@ namespace hgl public: - bool Start (const char *element_name) override; - void Attr (const char *flag,const char *info) override; - void CharData (const char *str,const int str_length) override; - void End (const char *element_name) override; + bool Start (const u8char *element_name) override; + void Attr (const u8char *flag,const u8char *info) override; + void CharData (const u8char *str,const int str_length) override; + void End (const u8char *element_name) override; };//class ElementParseCreater:public ElementParse }//namespace xml }//namespace hgl diff --git a/inc/hgl/util/xml/ElementParseKV.h b/inc/hgl/util/xml/ElementParseKV.h index a3ba700..0d412d7 100644 --- a/inc/hgl/util/xml/ElementParseKV.h +++ b/inc/hgl/util/xml/ElementParseKV.h @@ -15,49 +15,49 @@ namespace hgl { protected: - using AttrsMap=Map; - using AttrItem=Pair; + using AttrsMap=Map; + using AttrItem=Pair; AttrsMap attrs_map; protected: - const AttrItem *GetAttrItem(const AnsiString &name); + const AttrItem *GetAttrItem(const UTF8String &name); - template const bool GetInteger (const AnsiString &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stoi(ai->right.c_str(),value):false);} - template const bool GetUInteger (const AnsiString &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stou(ai->right.c_str(),value):false);} - template const bool GetFloat (const AnsiString &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stof(ai->right.c_str(),value):false);} + template const bool GetInteger (const UTF8String &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stoi(ai->right.c_str(),value):false);} + template const bool GetUInteger (const UTF8String &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stou(ai->right.c_str(),value):false);} + template const bool GetFloat (const UTF8String &name,T &value){const AttrItem *ai=GetAttrItem(name);return(ai?stof(ai->right.c_str(),value):false);} public: virtual ~ElementParseKV()=default; - virtual void Attr(const char *flag,const char *info) override; + virtual void Attr(const u8char *flag,const u8char *info) override; public: - const bool IsExist (const AnsiString &name)const{return attrs_map.KeyExist(name);} + const bool IsExist (const UTF8String &name)const{return attrs_map.KeyExist(name);} - const char * ToCString (const AnsiString &name){const AttrItem *ai=GetAttrItem(name);return(ai?ai->right.c_str():nullptr);} - const char * operator[] (const AnsiString &name){return ToCString(name);} + const u8char * ToCString (const UTF8String &name){const AttrItem *ai=GetAttrItem(name);return(ai?ai->right.c_str():nullptr);} + const u8char * operator[] (const UTF8String &name){return ToCString(name);} public: - const bool Get(const AnsiString &name,AnsiString &str); - const bool Get(const AnsiString &name,UTF16String &str); - const bool Get(const AnsiString &name,char &ch); - const bool Get(const AnsiString &name,bool &value); + 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 AnsiString &name, int8 &value){return GetInteger < int8 >(name,value);} - const bool Get(const AnsiString &name,uint8 &value){return GetUInteger(name,value);} - const bool Get(const AnsiString &name, int16 &value){return GetInteger < int16>(name,value);} - const bool Get(const AnsiString &name,uint16 &value){return GetUInteger(name,value);} - const bool Get(const AnsiString &name, int32 &value){return GetInteger < int32>(name,value);} - const bool Get(const AnsiString &name,uint32 &value){return GetUInteger(name,value);} - const bool Get(const AnsiString &name, int64 &value){return GetInteger < int64>(name,value);} - const bool Get(const AnsiString &name,uint64 &value){return GetUInteger(name,value);} + const bool Get(const UTF8String &name, int8 &value){return GetInteger < int8 >(name,value);} + const bool Get(const UTF8String &name,uint8 &value){return GetUInteger(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(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(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(name,value);} - const bool GetHexStr(const AnsiString &name,uint8 *data); + const bool GetHexStr(const UTF8String &name,uint8 *data); };//class ElementParseKV:public ElementParse }//namespace xml }//namespace hgl diff --git a/src/xml/ElementCreater.cpp b/src/xml/ElementCreater.cpp index dc811e7..4ad6f12 100644 --- a/src/xml/ElementCreater.cpp +++ b/src/xml/ElementCreater.cpp @@ -4,16 +4,20 @@ namespace hgl { namespace xml { - bool ElementCreater::Registry(const AnsiString &name,ElementCreater *ec) + bool ElementCreater::Registry(ElementCreater *ec) { - if(name.Length()<=0||!ec)return(false); + if(!ec)return(false); + + const UTF8String &name=ec->GetElementName(); + + if(name.IsEmpty())return(false); if(ecs_map.KeyExist(name))return(false); ecs_map.Add(name,ec); return(true); } - ElementCreater *ElementCreater::GetSubElementCreater(const AnsiString &sub_name) + ElementCreater *ElementCreater::GetSubElementCreater(const UTF8String &sub_name) { if(sub_name.IsEmpty())return(nullptr); diff --git a/src/xml/ElementParseCreater.cpp b/src/xml/ElementParseCreater.cpp index f7cb69d..3bc088c 100644 --- a/src/xml/ElementParseCreater.cpp +++ b/src/xml/ElementParseCreater.cpp @@ -4,7 +4,7 @@ namespace hgl { namespace xml { - bool ElementParseCreater::Start (const char *element_name) + bool ElementParseCreater::Start (const u8char *element_name) { if(!element_name||!*element_name)return(false); @@ -27,21 +27,21 @@ namespace hgl return(cur_ec); } - void ElementParseCreater::Attr(const char *flag,const char *info) + void ElementParseCreater::Attr(const u8char *flag,const u8char *info) { if(!cur_ec)return; cur_ec->Attr(flag,info); } - void ElementParseCreater::CharData(const char *str,const int str_length) + void ElementParseCreater::CharData(const u8char *str,const int str_length) { if(!cur_ec)return; cur_ec->CharData(str,str_length); } - void ElementParseCreater::End(const char *element_name) + void ElementParseCreater::End(const u8char *element_name) { if(cur_ec) { diff --git a/src/xml/ElementParseKV.cpp b/src/xml/ElementParseKV.cpp index 3696466..6cde64d 100644 --- a/src/xml/ElementParseKV.cpp +++ b/src/xml/ElementParseKV.cpp @@ -5,7 +5,7 @@ namespace hgl { namespace xml { - const ElementParseKV::AttrItem *ElementParseKV::GetAttrItem(const AnsiString &name) + const ElementParseKV::AttrItem *ElementParseKV::GetAttrItem(const UTF8String &name) { const int pos=attrs_map.FindPos(name); @@ -19,7 +19,7 @@ namespace hgl attrs_map.Add(flag,info); } - const bool ElementParseKV::Get(const AnsiString &name,AnsiString &str) + const bool ElementParseKV::Get(const UTF8String &name,UTF8String &str) { const AttrItem *ai=GetAttrItem(name); @@ -29,7 +29,7 @@ namespace hgl return(true); } - const bool ElementParseKV::Get(const AnsiString &name,UTF16String &str) + const bool ElementParseKV::Get(const UTF8String &name,UTF16String &str) { const AttrItem *ai=GetAttrItem(name); @@ -39,7 +39,7 @@ namespace hgl return(true); } - const bool ElementParseKV::Get(const AnsiString &name,char &ch) + const bool ElementParseKV::Get(const UTF8String &name,char &ch) { const AttrItem *ai=GetAttrItem(name); @@ -49,14 +49,14 @@ namespace hgl return(true); } - const bool ElementParseKV::Get(const AnsiString &name,bool &value) + const bool ElementParseKV::Get(const UTF8String &name,bool &value) { const AttrItem *ai=GetAttrItem(name); return(ai?stob(ai->right.c_str(),value):false); } - const bool ElementParseKV::GetHexStr(const AnsiString &name,uint8 *data) + const bool ElementParseKV::GetHexStr(const UTF8String &name,uint8 *data) { const AttrItem *ai=GetAttrItem(name); diff --git a/src/xml/XMLParseClass.cpp b/src/xml/XMLParseClass.cpp index 162e8e1..6b6257c 100644 --- a/src/xml/XMLParseClass.cpp +++ b/src/xml/XMLParseClass.cpp @@ -13,11 +13,11 @@ namespace hgl { void XMLStartElement(ElementParse *ep,const XML_Char *name,const XML_Char **atts) { - if(!ep->Start(name)) + if(!ep->Start((const u8char *)name)) return; - const char *flag; - const char *info; + const u8char *flag; + const u8char *info; while(*atts) { @@ -30,12 +30,12 @@ namespace hgl void XMLCharData(ElementParse *ep,const XML_Char *str,int len) { - ep->CharData(str,len); + ep->CharData((const u8char *)str,len); } void XMLEndElement(ElementParse *ep,const XML_Char *name) { - ep->End(name); + ep->End((const u8char *)name); } }//namespace