use "enum class" instead of "enum" at "CharCodePage".

This commit is contained in:
2021-07-27 11:32:39 +08:00
parent 468aa44622
commit 8f4a069c1c
5 changed files with 114 additions and 111 deletions

View File

@@ -12,51 +12,51 @@ namespace hgl
* 全部Windows所支持代码页请参见 http://msdn.microsoft.com/en-us/library/dd317756
* https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers
*/
enum CharCodePage ///代码页枚举
enum class CharCodePage ///代码页枚举
{
ccpNone=0, ///<起始定义,无意义
NONE=0, ///<起始定义,无意义
//中文
ccpGBK =936, ///<中国GBK标准中文
ccpBig5 =950, ///<中国台湾Big5标准繁体中文
ccpGB2312 =20936, ///<中国GB2312标准简体中文
ccpGB18030 =54936, ///<中国GB18030-2000标准中文
GBK =936, ///<中国GBK标准中文
Big5 =950, ///<中国台湾Big5标准繁体中文
GB2312 =20936, ///<中国GB2312标准简体中文
GB18030 =54936, ///<中国GB18030-2000标准中文
//日文
ccpShiftJIS =932, ///<日文ShiftJIS
ccpJISX =50222, ///<日文JIS X/ISO 2022
ShiftJIS =932, ///<日文ShiftJIS
JISX =50222, ///<日文JIS X/ISO 2022
//韩文
ccpKorean =949, ///<韩文
Korean =949, ///<韩文
//苹果编码
ccpMacJanpan =10001, ///<日文
ccpMacTraditionalChinese =10002, ///<繁体中文
ccpMacSimplifiedChinese =10008, ///<简体中文
MacJanpan =10001, ///<日文
MacTraditionalChinese =10002, ///<繁体中文
MacSimplifiedChinese =10008, ///<简体中文
//ISO
ccp8859_1 =28591, ///<ISO 8859-1 Latin 1; Western European 西欧语系(阿尔巴尼亚语,西班牙加泰罗尼亚语,丹麦语,荷兰语,英语,Faeroese语,芬兰语,法语,德语,加里西亚语,爱尔兰语,冰岛语,意大利语,挪威语,葡萄牙语,瑞士语.)这同时适用于美国英语.
ccp8859_2 =28592, ///<ISO 8859-2 Central European; Central European (ISO) 斯拉夫/中欧语系(捷克语,德语,匈牙利语,波兰语,罗马尼亚语,克罗地亚语,斯洛伐克语,斯洛文尼亚语)
ccp8859_3 =28593, ///<ISO 8859-3 Latin 3 世界语,加里西亚语,马耳他语,土耳其语
ccp8859_4 =28594, ///<ISO 8859-4 Baltic 爱莎尼亚语,拉脱维亚语,立陶宛语
ccp8859_5 =28595, ///<ISO 8859-5 Cyrillic 斯拉夫语系(保加利亚语,Byelorussian语,马其顿语,俄语,塞尔维亚语,乌克兰语)
ccp8859_6 =28596, ///<ISO 8859-6 Arabic 阿拉伯语
ccp8859_7 =28597, ///<ISO 8859-7 Greek 现代希腊语
ccp8859_8 =28598, ///<ISO 8859-8 Hebrew; Hebrew (ISO-Visual) 希伯来语
ccp8859_9 =28599, ///<ISO 8859-9 Turkish Latin 5 字符集, (去掉了 Latin 1中不经常使用的一些冰岛语字符而代以土耳其语字符)
ccp8859_13 =28603, ///<ISO 8859-13 Estonian
ccp8859_15 =28605, ///<ISO 8859-15 Latin 9 Latin 9 字符集, 是Latin 1字符集的更新版本,去掉一些不常用的字符,增加了对爱莎尼亚语的支持,修正了法语和芬兰语部份,增加了欧元字符)
ISO_8859_1 =28591, ///<ISO 8859-1 Latin 1; Western European 西欧语系(阿尔巴尼亚语,西班牙加泰罗尼亚语,丹麦语,荷兰语,英语,Faeroese语,芬兰语,法语,德语,加里西亚语,爱尔兰语,冰岛语,意大利语,挪威语,葡萄牙语,瑞士语.)这同时适用于美国英语.
ISO_8859_2 =28592, ///<ISO 8859-2 Central European; Central European (ISO) 斯拉夫/中欧语系(捷克语,德语,匈牙利语,波兰语,罗马尼亚语,克罗地亚语,斯洛伐克语,斯洛文尼亚语)
ISO_8859_3 =28593, ///<ISO 8859-3 Latin 3 世界语,加里西亚语,马耳他语,土耳其语
ISO_8859_4 =28594, ///<ISO 8859-4 Baltic 爱莎尼亚语,拉脱维亚语,立陶宛语
ISO_8859_5 =28595, ///<ISO 8859-5 Cyrillic 斯拉夫语系(保加利亚语,Byelorussian语,马其顿语,俄语,塞尔维亚语,乌克兰语)
ISO_8859_6 =28596, ///<ISO 8859-6 Arabic 阿拉伯语
ISO_8859_7 =28597, ///<ISO 8859-7 Greek 现代希腊语
ISO_8859_8 =28598, ///<ISO 8859-8 Hebrew; Hebrew (ISO-Visual) 希伯来语
ISO_8859_9 =28599, ///<ISO 8859-9 Turkish Latin 5 字符集, (去掉了 Latin 1中不经常使用的一些冰岛语字符而代以土耳其语字符)
ISO_8859_13 =28603, ///<ISO 8859-13 Estonian
ISO_8859_15 =28605, ///<ISO 8859-15 Latin 9 Latin 9 字符集, 是Latin 1字符集的更新版本,去掉一些不常用的字符,增加了对爱莎尼亚语的支持,修正了法语和芬兰语部份,增加了欧元字符)
//unicode
ccpUTF7 =65000, ///<utf-7
ccpUTF8 =65001, ///<utf-8
UTF7 =65000, ///<utf-7
UTF8 =65001, ///<utf-8
ccpUTF16LE =1200,
ccpUTF16BE =1201,
ccpUTF32LE =12000,
ccpUTF32BE =12001,
UTF16LE =1200,
UTF16BE =1201,
UTF32LE =12000,
UTF32BE =12001,
ccpEnd ///<结束定义,无意义
END ///<结束定义,无意义
};//enum CharCodePage
/**
@@ -74,8 +74,8 @@ namespace hgl
ENUM_CLASS_RANGE(UTF8,UTF32BE)
};
constexpr uint CharSetNameLength=32; ///<字符集名称长度
using CharSetName=char[CharSetNameLength]; ///<字符集名称类型定义
constexpr uint CHAR_SET_NAME_MAX_LENGTH=32; ///<字符集名称长度
using CharSetName=char[CHAR_SET_NAME_MAX_LENGTH]; ///<字符集名称类型定义
template<int,char> const CharSetName &GetCurCharSet(); ///<取得当前程序编码字符集
@@ -113,11 +113,11 @@ namespace hgl
*/
constexpr BOMFileHeader BOMData[size_t(ByteOrderMask::RANGE_SIZE)]=
{
{3,{0xEF,0xBB,0xBF} ,ByteOrderMask::UTF8, &utf8_charset ,ccpUTF8 },
{2,{0xFF,0xFE} ,ByteOrderMask::UTF16LE,&utf16le_charset ,ccpUTF16LE },
{2,{0xFE,0xFF} ,ByteOrderMask::UTF16BE,&utf16be_charset ,ccpUTF16BE },
{4,{0xFF,0xFE,0x00,0x00},ByteOrderMask::UTF32LE,&utf32le_charset ,ccpUTF32LE },
{4,{0x00,0x00,0xFE,0xFF},ByteOrderMask::UTF32BE,&utf32be_charset ,ccpUTF32BE }
{3,{0xEF,0xBB,0xBF} ,ByteOrderMask::UTF8, &utf8_charset ,CharCodePage::UTF8 },
{2,{0xFF,0xFE} ,ByteOrderMask::UTF16LE,&utf16le_charset ,CharCodePage::UTF16LE },
{2,{0xFE,0xFF} ,ByteOrderMask::UTF16BE,&utf16be_charset ,CharCodePage::UTF16BE },
{4,{0xFF,0xFE,0x00,0x00},ByteOrderMask::UTF32LE,&utf32le_charset ,CharCodePage::UTF32LE },
{4,{0x00,0x00,0xFE,0xFF},ByteOrderMask::UTF32BE,&utf32be_charset ,CharCodePage::UTF32BE }
};
inline ByteOrderMask CheckBOM(const void *data)