Added IDName.cpp/.h

This commit is contained in:
2024-07-12 02:50:38 +08:00
parent 1b5ee2a877
commit 0f236d9bc0
3 changed files with 142 additions and 3 deletions

View File

@@ -15,6 +15,14 @@ SET(CORE_PLATFORM_HEADER_FILES ${CORE_PLATFORM_HEADER_FILES}
SET(TYPE_INCLUDE_PATH ${CMCORE_ROOT_INCLUDE_PATH}/hgl/type)
SET(TYPE_IDNAME_HEADER_FILES ${TYPE_INCLUDE_PATH}/ConstStringSet.h
${TYPE_INCLUDE_PATH}/IDName.h)
SET(TYPE_IDNAME_SOURCE_FILES Text/ConstStringSetSaveToTextStream.cpp
Type/IDName.cpp)
SOURCE_GROUP("DataType\\IDName" FILES ${TYPE_IDNAME_HEADER_FILES} ${TYPE_IDNAME_SOURCE_FILES})
SET(TYPE_COLLECTION_SOURCE ${TYPE_INCLUDE_PATH}/Collection.h
Type/Collection.cpp)
@@ -74,7 +82,6 @@ SET(STRING_HEADER_FILES ${TYPE_INCLUDE_PATH}/String.h
${TYPE_INCLUDE_PATH}/SplitString.h
${TYPE_INCLUDE_PATH}/MergeString.h
${TYPE_INCLUDE_PATH}/StdString.h
${TYPE_INCLUDE_PATH}/ConstStringSet.h
)
SET(TEXT_HEADER_FILES ${CMCORE_ROOT_INCLUDE_PATH}/hgl/Endian.h
@@ -85,8 +92,7 @@ SET(TEXT_HEADER_FILES ${CMCORE_ROOT_INCLUDE_PATH}/hgl/Endian.h
SET(TEXT_SOURCE_FILES Text/Endian.cpp
Text/CodePage.cpp
Text/UnicodeBlocks.cpp
Text/ConstStringSetSaveToTextStream.cpp)
Text/UnicodeBlocks.cpp)
SOURCE_GROUP("Text\\String" FILES ${STRING_HEADER_FILES}
Text/StringList.cpp)
@@ -237,6 +243,9 @@ add_cm_library(CMCore "CM" ${CORE_PLATFORM_HEADER_FILES}
${IO_SOURCE_FILES}
${TYPE_IDNAME_HEADER_FILES}
${TYPE_IDNAME_SOURCE_FILES}
${MATH_HEADER_FILES}
${MATH_SOURCE_FILES}

30
src/Type/IDName.cpp Normal file
View File

@@ -0,0 +1,30 @@
#include<hgl/type/IDName.h>
namespace hgl
{
template<typename SC>
bool RegistryIDName(const size_t hash_code,ConstStringView<SC> &csv,const SC *name_string,const int name_length)
{
static ObjectMap<size_t,ConstStringSet<SC>> css_map;
ConstStringSet<SC> *css;
if(!css_map.Get(hash_code,css))
{
css=new ConstStringSet<SC>;
css_map.Add(hash_code,css);
}
return(css->AddString(csv,name_string,name_length)>=0);
}
#define REGISTRY_ID_NAME(type) bool RegistryIDName_##type(const size_t hash_code,ConstStringView<type> &csv,const type *name,const int length){return RegistryIDName(hash_code,csv,name,length);}
REGISTRY_ID_NAME(char)
REGISTRY_ID_NAME(wchar_t)
REGISTRY_ID_NAME(u8char)
REGISTRY_ID_NAME(u16char)
REGISTRY_ID_NAME(os_char)
#undef REGISTRY_ID_NAME
}//namespace hgl