From fff021488c9608c2ac4ee06bc544e9a80849c6f0 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Sat, 7 Jun 2025 05:32:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=8F=AF=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E6=96=B0IDName?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inc/hgl/type/IDName.h | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/inc/hgl/type/IDName.h b/inc/hgl/type/IDName.h index 9d3411c..a68138c 100644 --- a/inc/hgl/type/IDName.h +++ b/inc/hgl/type/IDName.h @@ -8,10 +8,12 @@ namespace hgl template bool RegistryIDName(ConstStringView &csv,const SC *name_string,const int name_length) { - if(!T::id_name_set) - T::id_name_set=new ConstStringSet; + static ConstStringSet *id_name_set=nullptr; - return(T::id_name_set->AddString(csv,name_string,name_length)>=0); + if(!id_name_set) + id_name_set=new ConstStringSet; + + return(id_name_set->AddString(csv,name_string,name_length)>=0); } /** @@ -96,14 +98,13 @@ namespace hgl const int compare(const OrderedIDName &oin)const override{return GetID()-oin.GetID();} };//class IDName -#define HGL_DEFINE_IDNAME(name,char_type) struct IDName##_##name##_Manager{static ConstStringSet *id_name_set;}; \ - ConstStringSet *IDName##_##name##_Manager::id_name_set=nullptr; \ - using name=OrderedIDName; \ - using name##Set=SortedSet; + #define HGL_DEFINE_IDNAME(name,char_type) struct IDName##_##name##_Manager{}; \ + using name=OrderedIDName; \ + using name##Set=SortedSet; - HGL_DEFINE_IDNAME(AIDName, char) - HGL_DEFINE_IDNAME(WIDName, wchar_t) - HGL_DEFINE_IDNAME(U8IDName, u8char) - HGL_DEFINE_IDNAME(U16IDName, u16char) - HGL_DEFINE_IDNAME(OSIDName, os_char) + #define HGL_DEFINE_ANSI_IDNAME(name) HGL_DEFINE_IDNAME(name, char) + #define HGL_DEFINE_WIDE_IDNAME(name) HGL_DEFINE_IDNAME(name, wchar_t) + #define HGL_DEFINE_U8_IDNAME(name) HGL_DEFINE_IDNAME(name, u8char) + #define HGL_DEFINE_U16_IDNAME(name) HGL_DEFINE_IDNAME(name, u16char) + #define HGL_DEFINE_OS_IDNAME(name) HGL_DEFINE_IDNAME(name, os_char) }//namespace hgl