From d09fe4326ea3629434adcd034a99ebbdb8fa6c22 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Thu, 27 Mar 2025 23:40:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A7=E7=9A=84=E6=81=A2=E5=A4=8DMergeFilena?= =?UTF-8?q?me=EF=BC=8C=E6=96=B0=E7=9A=84Combine=E9=87=8D=E5=86=99=E5=B9=B6?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inc/hgl/filesystem/EnumFile.h | 2 +- inc/hgl/filesystem/Filename.h | 96 ++++++++++++++--------------------- src/FileSystem/FileSystem.cpp | 4 +- src/Log/LogFile.cpp | 4 +- src/PlugIn/PlugInManage.cpp | 6 +-- 5 files changed, 47 insertions(+), 65 deletions(-) diff --git a/inc/hgl/filesystem/EnumFile.h b/inc/hgl/filesystem/EnumFile.h index 009634a..2f5b683 100644 --- a/inc/hgl/filesystem/EnumFile.h +++ b/inc/hgl/filesystem/EnumFile.h @@ -60,7 +60,7 @@ namespace hgl virtual EnumFileConfig *CreateSubConfig(struct EnumFileConfig *up_efc,const FileInfo &fi) { - const OSString full_sub_folder_name=Combine(up_efc->folder_name,fi.name); + const OSString full_sub_folder_name=MergeFilename(up_efc->folder_name,fi.name); return(new EnumFileConfig(up_efc,full_sub_folder_name)); } diff --git a/inc/hgl/filesystem/Filename.h b/inc/hgl/filesystem/Filename.h index 2981624..7fa78c9 100644 --- a/inc/hgl/filesystem/Filename.h +++ b/inc/hgl/filesystem/Filename.h @@ -3,6 +3,7 @@ #include #include +#include /** * Maximum Path Length Limitation @@ -73,21 +74,17 @@ namespace hgl return String::newOf(fullname,p-fullname); } - template - inline const String Combine(const T spear_char,const T *str1,ARGS...args) + template + inline const String CombineFilename(const T spear_char,const std::initializer_list &args) { - const int count=sizeof...(ARGS); + if(args.size()<=0) + return String(); - if(count<=0) - return String(str1); - - int total_len=hgl::strlen(str1); - AutoDeleteArray str_len[count+1]; - - str_len[0]=total_len; + int total=0; + AutoDeleteArray str_len(args.size()); { - int index=1; + int index=0; for(const T *str:args) { str_len[index]=hgl::strlen(str); @@ -99,56 +96,48 @@ namespace hgl T *fullname=new T[total]; T *p=fullname; - hgl_cpy(p,str1,str_len[0]); - p+=str_len[0]; - { - int index=1; + int index=0; for(const T *str:args) { + hgl_cpy(p,str,str_len[index]); + p+=(int)str_len[index]; *p=spear_char; ++p; - hgl_cpy(p,str,str_len[index]) - p+=str_len[index]; } - fullename[total-1]=0; + fullname[total-1]=0; } return String::newOf(fullname,total-1); } - template - inline const String Combine(const char *str1,ARGS...args) + inline const String Combine(const std::initializer_list &args) { - return Combine(HGL_DIRECTORY_SEPARATOR_RAWCHAR,str1,args...); + return CombineFilename(HGL_DIRECTORY_SEPARATOR_RAWCHAR,args); } #ifdef HGL_SUPPORT_CHAR8_T - template - inline const String Combine(const char8_t *str1,ARGS...args) + inline const String Combine(const std::initializer_list &args) { - return Combine(HGL_DIRECTORY_SEPARATOR_U8CHAR,str1,args...); + return CombineFilename(HGL_DIRECTORY_SEPARATOR_U8CHAR,args); } #endif//HGL_SUPPORT_CHAR8_T #if HGL_OS == HGL_OS_Windows - template - inline const String Combine(const wchar_t *str1,ARGS...args) + inline const String Combine(const std::initializer_list &args) { - return Combine(HGL_DIRECTORY_SEPARATOR_WCHAR,str1,args...); + return CombineFilename(HGL_DIRECTORY_SEPARATOR_WCHAR,args); } #endif//HGL_OS == HGL_OS_Windows - template - inline const String Combine(const T spear_char,const String &str1,ARGS...args) + template + inline const String CombineFilename(const T spear_char,const std::initializer_list> &args) { - const int count=sizeof...(ARGS); + if(args.size()<=0) + return String(); - if(count<=0) - return str1; - - int total_len=str1.Length() + int total=0; for(const String &str:args) total+=str.Length()+1; @@ -156,44 +145,37 @@ namespace hgl T *fullname=new T[total]; T *p=fullname; - hgl_cpy(p,str1.c_str(),str1.Length()); - p+=str1.Length(); - { - int index=1; for(const String &str:args) { + hgl_cpy(p,str.c_str(),str.Length()); + p+=str.Length(); *p=spear_char; ++p; - hgl_cpy(p,str.c_str(),str.Length()) - p+=str1.Length(); } - fullename[total-1]=0; + fullname[total-1]=0; } return String::newOf(fullname,total-1); } - template - inline const String Combine(const String &str1,ARGS...args) + inline const String Combine(const std::initializer_list> &args) { - return Combine(HGL_DIRECTORY_SEPARATOR_RAWCHAR,str1,args...); + return CombineFilename(HGL_DIRECTORY_SEPARATOR_RAWCHAR,args); } #ifdef HGL_SUPPORT_CHAR8_T - template - inline const String Combine(const String &str1,ARGS...args) + inline const String Combine(const std::initializer_list> &args) { - return Combine(HGL_DIRECTORY_SEPARATOR_U8CHAR,str1,args...); + return CombineFilename(HGL_DIRECTORY_SEPARATOR_U8CHAR,args); } #endif//HGL_SUPPORT_CHAR8_T #if HGL_OS == HGL_OS_Windows - template - inline const String Combine(const String &str1,ARGS...args) + inline const String Combine(const std::initializer_list> &args) { - return Combine(HGL_DIRECTORY_SEPARATOR_WCHAR,str1,args...); + return CombineFilename(HGL_DIRECTORY_SEPARATOR_WCHAR,args); } #endif//HGL_OS == HGL_OS_Windows @@ -248,7 +230,7 @@ namespace hgl * 根据路径名和文件名 */ template - inline String Combine(const String &pathname,const String &filename,const T directory_separator_char,const T *directory_separator_str) + inline String MergeFilename(const String &pathname,const String &filename,const T directory_separator_char,const T *directory_separator_str) { String fullname; @@ -493,16 +475,16 @@ namespace hgl } #ifdef HGL_SUPPORT_CHAR8_T - inline AnsiString Combine(const AnsiString &pathname,const AnsiString &filename) ///<组合路径名与文件名 - {return Combine(pathname,filename,HGL_DIRECTORY_SEPARATOR,HGL_DIRECTORY_SEPARATOR_RAWSTR);} + inline AnsiString MergeFilename(const AnsiString &pathname,const AnsiString &filename) ///<组合路径名与文件名 + {return MergeFilename(pathname,filename,HGL_DIRECTORY_SEPARATOR,HGL_DIRECTORY_SEPARATOR_RAWSTR);} #endif//HGL_SUPPORT_CHAR8_T - inline U8String Combine(const U8String &pathname,const U8String &filename) ///<组合路径名与文件名 - {return Combine(pathname,filename,HGL_DIRECTORY_SEPARATOR,HGL_DIRECTORY_SEPARATOR_U8STR);} + inline U8String MergeFilename(const U8String &pathname,const U8String &filename) ///<组合路径名与文件名 + {return MergeFilename(pathname,filename,HGL_DIRECTORY_SEPARATOR,HGL_DIRECTORY_SEPARATOR_U8STR);} #if HGL_OS == HGL_OS_Windows - inline WString Combine(const WString &pathname,const WString &filename) ///<组合路径名与文件名 - {return Combine(pathname,filename,HGL_DIRECTORY_SEPARATOR,HGL_DIRECTORY_SEPARATOR_STR);} + inline WString MergeFilename(const WString &pathname,const WString &filename) ///<组合路径名与文件名 + {return MergeFilename(pathname,filename,HGL_DIRECTORY_SEPARATOR,HGL_DIRECTORY_SEPARATOR_STR);} #endif//HGL_OS == HGL_OS_Windows OSString FixFilename(const OSString &filename); ///<修正部分文件名问题 diff --git a/src/FileSystem/FileSystem.cpp b/src/FileSystem/FileSystem.cpp index 3a2665d..0a92936 100644 --- a/src/FileSystem/FileSystem.cpp +++ b/src/FileSystem/FileSystem.cpp @@ -397,7 +397,7 @@ namespace hgl for(const OSString *pn:paths) { - full_filename=Combine(*pn,filename); + full_filename=MergeFilename(*pn,filename); exist=FileExist(full_filename); @@ -431,7 +431,7 @@ namespace hgl { for(const OSString *fn:filenames) { - full_filename=Combine(*pn,*fn); + full_filename=MergeFilename(*pn,*fn); exist=FileExist(full_filename); diff --git a/src/Log/LogFile.cpp b/src/Log/LogFile.cpp index 2c5b9f3..a2e5a17 100644 --- a/src/Log/LogFile.cpp +++ b/src/Log/LogFile.cpp @@ -41,12 +41,12 @@ namespace hgl if(!GetLocalAppdataPath(local_app_data_path)) return(false); - cmgdk_path=filesystem::Combine(local_app_data_path,OS_TEXT(".cmgdk")); + cmgdk_path=filesystem::MergeFilename(local_app_data_path,OS_TEXT(".cmgdk")); if(!filesystem::MakePath(cmgdk_path)) return(false); - fn=filesystem::Combine(cmgdk_path,project_code); + fn=filesystem::MergeFilename(cmgdk_path,project_code); for(uint i=0;i<=0xFFFF;i++) { diff --git a/src/PlugIn/PlugInManage.cpp b/src/PlugIn/PlugInManage.cpp index 0835e1a..0b6a512 100644 --- a/src/PlugIn/PlugInManage.cpp +++ b/src/PlugIn/PlugInManage.cpp @@ -15,7 +15,7 @@ namespace hgl { AddFindPath(pn); - pn=Combine(pn,OS_TEXT("Plug-ins")); + pn=MergeFilename(pn,OS_TEXT("Plug-ins")); AddFindPath(pn); } @@ -23,7 +23,7 @@ namespace hgl { AddFindPath(pn); - pn=Combine(pn,OS_TEXT("Plug-ins")); + pn=MergeFilename(pn,OS_TEXT("Plug-ins")); AddFindPath(pn); } } @@ -105,7 +105,7 @@ namespace hgl for(uint i=0;i