Merge branch 'master' of https://github.com/hyzboy/CMCore into HEAD
This commit is contained in:
commit
5a88a6072c
@ -7,52 +7,59 @@ namespace hgl
|
||||
{
|
||||
struct CodePageAndCharSet
|
||||
{
|
||||
CharCodePage codepage;
|
||||
uint16 codepage;
|
||||
CharSetName charset;
|
||||
};
|
||||
|
||||
|
||||
#define HGL_CODE_PAGE_AND_CHAR_SET(codepage,charset) {uint16(CharCodePage::codepage),charset}
|
||||
|
||||
constexpr struct CodePageAndCharSet CodePage2CharSet[]=
|
||||
{
|
||||
{CharCodePage::NONE, "us-ascii" },
|
||||
|
||||
{CharCodePage::GBK, "gbk" },
|
||||
{CharCodePage::Big5, "big5" },
|
||||
{CharCodePage::GB2312, "gb2312" },
|
||||
{CharCodePage::GB18030, "gb18030" },
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(NONE, "us-ascii" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(IBM437, "IBM437" ),
|
||||
|
||||
{CharCodePage::ShiftJIS, "shift-jis" },
|
||||
{CharCodePage::JISX, "iso-2022-jp" },
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(GBK, "gbk" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(Big5, "big5" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(GB2312, "gb2312" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(GB18030, "gb18030" ),
|
||||
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ShiftJIS, "shift-jis" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(EUC_JP, "EUC-JP" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO2022JP, "iso-2022-jp" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(csISO2022JP, "csISO2022JP" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(JISX, "iso-2022-jp" ),
|
||||
|
||||
{CharCodePage::Korean, "ks_c_5601-1987"},
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(Korean, "ks_c_5601-1987"),
|
||||
|
||||
{CharCodePage::MacJanpan, "x-mac-japanese" },
|
||||
{CharCodePage::MacTraditionalChinese, "x-mac-chinesetrad" },
|
||||
{CharCodePage::MacSimplifiedChinese, "x-mac-chinesesimp" },
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(MacJanpan, "x-mac-japanese" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(MacTraditionalChinese, "x-mac-chinesetrad" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(MacSimplifiedChinese, "x-mac-chinesesimp" ),
|
||||
|
||||
{CharCodePage::ISO_8859_1, "iso-8859-1"},
|
||||
{CharCodePage::ISO_8859_2, "iso-8859-2"},
|
||||
{CharCodePage::ISO_8859_3, "iso-8859-3"},
|
||||
{CharCodePage::ISO_8859_4, "iso-8859-4"},
|
||||
{CharCodePage::ISO_8859_5, "iso-8859-5"},
|
||||
{CharCodePage::ISO_8859_6, "iso-8859-6"},
|
||||
{CharCodePage::ISO_8859_7, "iso-8859-7"},
|
||||
{CharCodePage::ISO_8859_8, "iso-8859-8"},
|
||||
{CharCodePage::ISO_8859_9, "iso-8859-9"},
|
||||
{CharCodePage::ISO_8859_13, "iso-8859-13"},
|
||||
{CharCodePage::ISO_8859_15, "iso-8859-15"},
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_1, "iso-8859-1"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_2, "iso-8859-2"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_3, "iso-8859-3"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_4, "iso-8859-4"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_5, "iso-8859-5"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_6, "iso-8859-6"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_7, "iso-8859-7"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_8, "iso-8859-8"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_9, "iso-8859-9"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_13, "iso-8859-13"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_15, "iso-8859-15"),
|
||||
|
||||
{CharCodePage::UTF7, "utf-7" },
|
||||
{CharCodePage::UTF8, "utf-8" },
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF7, "utf-7" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF8, "utf-8" ),
|
||||
|
||||
{CharCodePage::UTF16LE, "utf-16le" },
|
||||
{CharCodePage::UTF16BE, "utf-16be" },
|
||||
{CharCodePage::UTF32LE, "utf-32le" },
|
||||
{CharCodePage::UTF32BE, "utf-32be" },
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF16LE, "utf-16le" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF16BE, "utf-16be" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF32LE, "utf-32le" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF32BE, "utf-32be" ),
|
||||
};//const struct
|
||||
|
||||
constexpr int CharSetCount=sizeof(CodePage2CharSet)/sizeof(CodePageAndCharSet);
|
||||
|
||||
inline const char *FindCharSet(CharCodePage ccp)
|
||||
inline const char *FindCharSet(uint16 ccp)
|
||||
{
|
||||
for(int i=0;i<CharSetCount;i++)
|
||||
if(CodePage2CharSet[i].codepage==ccp)
|
||||
@ -63,84 +70,88 @@ namespace hgl
|
||||
|
||||
constexpr struct CodePageAndCharSet CodeSet2CharPage[]=
|
||||
{
|
||||
{CharCodePage::NONE, "us-ascii" },
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(NONE, "us-ascii" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(IBM437, "IBM437" ),
|
||||
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(GBK, "gbk" ),
|
||||
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(Big5, "big5" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(Big5, "bigfive" ),
|
||||
|
||||
{CharCodePage::GBK, "gbk" },
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(GB2312, "gb2312" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(GB18030, "gb18030" ),
|
||||
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ShiftJIS, "shift_jis" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(EUC_JP, "EUC-JP" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO2022JP, "iso-2022-jp" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(csISO2022JP, "csISO2022JP" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(JISX, "iso-2022-jp" ),
|
||||
|
||||
{CharCodePage::Big5, "big5" },
|
||||
{CharCodePage::Big5, "bigfive" },
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(Korean, "ks_c_5601-1987"),
|
||||
|
||||
{CharCodePage::GB2312, "gb2312" },
|
||||
{CharCodePage::GB18030, "gb18030" },
|
||||
|
||||
{CharCodePage::ShiftJIS, "shift_jis" },
|
||||
{CharCodePage::JISX, "iso-2022-jp" },
|
||||
|
||||
{CharCodePage::Korean, "ks_c_5601-1987"},
|
||||
|
||||
{CharCodePage::MacJanpan, "x-mac-japanese" },
|
||||
{CharCodePage::MacTraditionalChinese, "x-mac-chinesetrad" },
|
||||
{CharCodePage::MacSimplifiedChinese, "x-mac-chinesesimp" },
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(MacJanpan, "x-mac-japanese" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(MacTraditionalChinese, "x-mac-chinesetrad" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(MacSimplifiedChinese, "x-mac-chinesesimp" ),
|
||||
|
||||
{CharCodePage::ISO_8859_1, "iso-8859-1"},
|
||||
{CharCodePage::ISO_8859_2, "iso-8859-2"},
|
||||
{CharCodePage::ISO_8859_3, "iso-8859-3"},
|
||||
{CharCodePage::ISO_8859_4, "iso-8859-4"},
|
||||
{CharCodePage::ISO_8859_5, "iso-8859-5"},
|
||||
{CharCodePage::ISO_8859_6, "iso-8859-6"},
|
||||
{CharCodePage::ISO_8859_7, "iso-8859-7"},
|
||||
{CharCodePage::ISO_8859_8, "iso-8859-8"},
|
||||
{CharCodePage::ISO_8859_9, "iso-8859-9"},
|
||||
{CharCodePage::ISO_8859_13, "iso-8859-13"},
|
||||
{CharCodePage::ISO_8859_15, "iso-8859-15"},
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_1, "iso-8859-1"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_2, "iso-8859-2"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_3, "iso-8859-3"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_4, "iso-8859-4"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_5, "iso-8859-5"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_6, "iso-8859-6"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_7, "iso-8859-7"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_8, "iso-8859-8"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_9, "iso-8859-9"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_13, "iso-8859-13"),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(ISO_8859_15, "iso-8859-15"),
|
||||
|
||||
{CharCodePage::UTF7, "utf-7" },
|
||||
{CharCodePage::UTF8, "utf-8" },
|
||||
{CharCodePage::UTF16LE, "utf-16le" },
|
||||
{CharCodePage::UTF16BE, "utf-16be" },
|
||||
{CharCodePage::UTF32LE, "utf-32le" },
|
||||
{CharCodePage::UTF32BE, "utf-32be" },
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF7, "utf-7" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF8, "utf-8" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF16LE, "utf-16le" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF16BE, "utf-16be" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF32LE, "utf-32le" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF32BE, "utf-32be" ),
|
||||
|
||||
{CharCodePage::UTF16LE, "utf-16" },
|
||||
{CharCodePage::UTF16BE, "unicodeFFFE"},
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF16LE, "utf-16" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF16BE, "unicodeFFFE"),
|
||||
|
||||
{CharCodePage::UTF16LE, "ucs-2le" },
|
||||
{CharCodePage::UTF16BE, "ucs-2be" },
|
||||
{CharCodePage::UTF32LE, "ucs-4le" },
|
||||
{CharCodePage::UTF32BE, "ucs-4be" }
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF16LE, "ucs-2le" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF16BE, "ucs-2be" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF32LE, "ucs-4le" ),
|
||||
HGL_CODE_PAGE_AND_CHAR_SET(UTF32BE, "ucs-4be" )
|
||||
};//const struct CharSet Characters
|
||||
|
||||
constexpr int CharPageCount=sizeof(CodeSet2CharPage)/sizeof(CodePageAndCharSet);
|
||||
|
||||
inline CharCodePage FindCodePage(const u8char *char_set)
|
||||
inline uint16 FindCodePage(const u8char *char_set)
|
||||
{
|
||||
for(int i=0;i<CharPageCount;i++)
|
||||
if(!charset_cmp(CodePage2CharSet[i].charset,char_set))
|
||||
return CodePage2CharSet[i].codepage;
|
||||
|
||||
return CharCodePage::NONE;
|
||||
return (uint16)CharCodePage::NONE;
|
||||
}
|
||||
|
||||
struct CharSet
|
||||
{
|
||||
CharCodePage codepage;
|
||||
uint16 codepage;
|
||||
CharSetName charset;
|
||||
|
||||
public:
|
||||
|
||||
CharSet()
|
||||
{
|
||||
codepage=CharCodePage::NONE;
|
||||
codepage=0;
|
||||
hgl::strcpy(charset,CHAR_SET_NAME_MAX_LENGTH,"us-ascii");
|
||||
}
|
||||
|
||||
CharSet(CharCodePage ccp,const char *cs)
|
||||
CharSet(uint16 ccp,const char *cs)
|
||||
{
|
||||
codepage=ccp;
|
||||
hgl::strcpy(charset,CHAR_SET_NAME_MAX_LENGTH,cs);
|
||||
}
|
||||
|
||||
CharSet(CharCodePage);
|
||||
CharSet(uint16);
|
||||
CharSet(const u8char *);
|
||||
|
||||
CharSet(const CodePageAndCharSet &cs)
|
||||
@ -153,7 +164,7 @@ namespace hgl
|
||||
CompOperator(const CharSet &,_Comp)
|
||||
};//struct CharacterSet
|
||||
|
||||
inline CharSet::CharSet(CharCodePage ccp)
|
||||
inline CharSet::CharSet(uint16 ccp)
|
||||
{
|
||||
codepage=ccp;
|
||||
hgl::strcpy(charset,CHAR_SET_NAME_MAX_LENGTH,FindCharSet(ccp));
|
||||
@ -176,16 +187,36 @@ namespace hgl
|
||||
#else
|
||||
#define OSCharSet UTF8CharSet
|
||||
#endif//
|
||||
|
||||
|
||||
/**
|
||||
* 使用指定字符集转换字符串到 u16char *字符串
|
||||
* 获取字符串转换到utf16字符串后的长度
|
||||
* @param charset 字符集
|
||||
* @param dst u16char *字符串缓冲区,自动分配,需手动delete[]
|
||||
* @param src 原始字符串
|
||||
* @param src_size 字符串长度,-1表示全部
|
||||
* @return 转换成功后的字符串字符数
|
||||
*/
|
||||
int get_utf16_length(const CharSet &charset,const void *src,const int src_size=-1);
|
||||
|
||||
/**
|
||||
* 使用指定字符集转换字符串到utf16字符串
|
||||
* @param charset 字符集
|
||||
* @param dst utf16字符串缓冲区,自动分配,需手动delete[]
|
||||
* @param src 原始字符串
|
||||
* @param src_size 字符串长度,-1表示全部
|
||||
* @return 转换成功后的字符串字符数
|
||||
*/
|
||||
int to_utf16(const CharSet &charset,u16char **dst,const void *src,const int src_size=-1);
|
||||
|
||||
/**
|
||||
* 使用指定字符集转换字符串到utf16字符串
|
||||
* @param charset 字符集
|
||||
* @param dst utf16字符串缓冲区
|
||||
* @param dst_size 最大可写入长度
|
||||
* @param src 原始字符串
|
||||
* @param src_size 字符串长度,-1表示全部
|
||||
* @return 转换成功后的字符串字符数
|
||||
*/
|
||||
int to_utf16(const CharSet &charset,u16char *dst,const int dst_size,const void *src,const int src_size=-1);
|
||||
|
||||
int to_utf8(const CharSet &charset,u8char **dst,const void *src,const int src_size=-1);
|
||||
|
||||
@ -254,8 +285,15 @@ namespace hgl
|
||||
{
|
||||
return to_u8(ws.c_str(),ws.Length());
|
||||
}
|
||||
|
||||
#if HGL_OS == HGL_OS_Windows
|
||||
AnsiString ToAnsiString(const CharSet &cs,const UTF16String &str);
|
||||
inline AnsiString ToAnsiString(const UTF16String &str)
|
||||
{
|
||||
const CharSet cs((uint16)0);
|
||||
|
||||
return ToAnsiString(cs,str);
|
||||
}
|
||||
|
||||
inline OSString ToOSString(const u8char *str){return to_u16(str);}
|
||||
inline OSString ToOSString(const UTF8String &str){return to_u16(str.c_str(), (int)(str.Length()));}
|
||||
|
||||
|
@ -16,6 +16,8 @@ namespace hgl
|
||||
{
|
||||
NONE=0, ///<起始定义,无意义
|
||||
|
||||
IBM437 =437, ///<OEM United States (dos)
|
||||
|
||||
//中文
|
||||
GBK =936, ///<中国GBK标准中文
|
||||
Big5 =950, ///<中国台湾Big5标准繁体中文
|
||||
@ -24,6 +26,9 @@ namespace hgl
|
||||
|
||||
//日文
|
||||
ShiftJIS =932, ///<日文ShiftJIS
|
||||
EUC_JP =20932, ///<日文JIS 0208-1990 and 0212-1990
|
||||
ISO2022JP =50220, ///<ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS)
|
||||
csISO2022JP =50221, ///<ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana)
|
||||
JISX =50222, ///<日文JIS X/ISO 2022
|
||||
|
||||
//韩文
|
||||
@ -105,7 +110,7 @@ namespace hgl
|
||||
|
||||
ByteOrderMask bom; ///<字节序枚举
|
||||
const CharSetName *char_set;///<字符集名称
|
||||
CharCodePage code_page; ///<代码页
|
||||
uint16 code_page; ///<代码页
|
||||
};
|
||||
|
||||
/**
|
||||
@ -113,11 +118,11 @@ namespace hgl
|
||||
*/
|
||||
constexpr BOMFileHeader BOMData[size_t(ByteOrderMask::RANGE_SIZE)]=
|
||||
{
|
||||
{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 }
|
||||
{3,{0xEF,0xBB,0xBF} ,ByteOrderMask::UTF8, &utf8_charset ,(uint16)CharCodePage::UTF8 },
|
||||
{2,{0xFF,0xFE} ,ByteOrderMask::UTF16LE,&utf16le_charset ,(uint16)CharCodePage::UTF16LE },
|
||||
{2,{0xFE,0xFF} ,ByteOrderMask::UTF16BE,&utf16be_charset ,(uint16)CharCodePage::UTF16BE },
|
||||
{4,{0xFF,0xFE,0x00,0x00},ByteOrderMask::UTF32LE,&utf32le_charset ,(uint16)CharCodePage::UTF32LE },
|
||||
{4,{0x00,0x00,0xFE,0xFF},ByteOrderMask::UTF32BE,&utf32be_charset ,(uint16)CharCodePage::UTF32BE }
|
||||
};
|
||||
|
||||
inline ByteOrderMask CheckBOM(const void *data)
|
||||
|
@ -5,13 +5,15 @@
|
||||
#include<math.h>
|
||||
namespace hgl
|
||||
{
|
||||
#define HGL_OFFICAL_WEB "www.hyzgame.com"
|
||||
#define HGL_OFFICAL_WEB_U8 u8"www.hyzgame.com"
|
||||
#define HGL_OFFICAL_WEB_URL "http://www.hyzgame.com"
|
||||
#define HGL_OFFICAL_WEB_URL_u8 u8"http://www.hyzgame.com"
|
||||
#define HGL_OFFICAL_WEB "www.hyzgame.com"
|
||||
#define HGL_OFFICAL_WEB_U8 U8_TEXT("www.hyzgame.com")
|
||||
#define HGL_OFFICAL_WEB_OS OS_TEXT("www.hyzgame.com")
|
||||
#define HGL_OFFICAL_WEB_URL "http://www.hyzgame.com"
|
||||
#define HGL_OFFICAL_WEB_URL_u8 U8_TEXT("http://www.hyzgame.com")
|
||||
#define HGL_OFFICAL_WEB_URL_OS OS_TEXT("http://www.hyzgame.com")
|
||||
|
||||
#define HGL_COPYRIGHT_STRING "(C)Copyright 2022 www.hyzgame.com"
|
||||
#define HGL_COPYRIGHT_STRING_U8 u8"(C)Copyright 2022 www.hyzgame.com"
|
||||
#define HGL_COPYRIGHT_STRING_U8 U8_TEXT("(C)Copyright 2022 www.hyzgame.com")
|
||||
#define HGL_COPYRIGHT_STRING_OS OS_TEXT("(C)Copyright 2022 www.hyzgame.com")
|
||||
|
||||
#define ENUM_CLASS_RANGE(begin,end) BEGIN_RANGE=begin,END_RANGE=end,RANGE_SIZE=(END_RANGE-BEGIN_RANGE)+1
|
||||
|
97
inc/hgl/URI.h
Normal file
97
inc/hgl/URI.h
Normal file
@ -0,0 +1,97 @@
|
||||
#ifndef HGL_URI_INCLUDE
|
||||
#define HGL_URI_INCLUDE
|
||||
|
||||
#include<hgl/type/String.h>
|
||||
namespace hgl
|
||||
{
|
||||
const uint16 GetSchemePort(const char *scheme);
|
||||
|
||||
/**
|
||||
* 统一地址标识符类<br>
|
||||
* <p>注:此类只处理名称,与真实文件系统/网络系统没有任何相关操作</p>
|
||||
*
|
||||
* <p>example 1:
|
||||
* http:// www.hyzgame.com / index .php
|
||||
* ------- --------------- ----- ---
|
||||
* scheme path main_name ext_name
|
||||
*
|
||||
* scheme: http
|
||||
* path: www.hyzgame.com
|
||||
* main_name: index
|
||||
* ext_name: php
|
||||
* </p>
|
||||
*
|
||||
* <p> example 2:
|
||||
* file:// C:/windows/system32/1234.dll
|
||||
*
|
||||
* scheme: file
|
||||
* driver: C
|
||||
* path: Windows\System32
|
||||
* main_name: 1234
|
||||
* ext_name: dll
|
||||
* fullname: C:\windows\system32\1234.dll
|
||||
* </p>
|
||||
*
|
||||
* <p> example 3:
|
||||
* C:\windows\system32\1234.dll
|
||||
*
|
||||
* scheme:
|
||||
* driver: C
|
||||
* path: Windows\System32
|
||||
* main_name: 1234
|
||||
* ext_name: dll
|
||||
* fullname: C:\windows\system32\1234.dll
|
||||
* </p>
|
||||
*/
|
||||
class URI
|
||||
{
|
||||
public:
|
||||
|
||||
enum class SchemeType
|
||||
{
|
||||
Unknow=0,
|
||||
LocalFile, ///<本地文件系统
|
||||
ArachivesFile, ///<档案文件(压缩包/tar/ISO镜像之类)
|
||||
Device, ///<设备虚拟文件
|
||||
Network, ///<网络
|
||||
};
|
||||
|
||||
protected:
|
||||
|
||||
OSString origin_name;
|
||||
|
||||
OSString scheme_name; ///<协议名称(如http,ftp之类)
|
||||
SchemeType scheme_type; ///<协议
|
||||
|
||||
UTF8String network_host; ///<网络主机(IP或网址)
|
||||
uint16 network_port; ///<网络协议默认端口
|
||||
|
||||
OSString fullname; ///<完整文件名
|
||||
|
||||
OSString path_name; ///<路径名
|
||||
OSString main_name; ///<主名称
|
||||
OSString ext_name; ///<文件扩展名
|
||||
|
||||
UTF8String url;
|
||||
|
||||
public:
|
||||
|
||||
URI(const OSString &);
|
||||
URI(const OSString &scheme,const OSString &path,const OSString &filename);
|
||||
~URI()=default;
|
||||
|
||||
const bool isFile();
|
||||
const bool isDevice();
|
||||
const bool isNetwork();
|
||||
|
||||
public:
|
||||
|
||||
const OSString &path();
|
||||
const OSString &main();
|
||||
const OSString &ext();
|
||||
const OSString &full();
|
||||
|
||||
const UTF8String &URL();
|
||||
};//class Filename
|
||||
}//namespace hgl
|
||||
#endif//HGL_URI_INCLUDE
|
@ -2,6 +2,7 @@
|
||||
#define HGL_FILESYSTEM_FILENAME_INCLUDE
|
||||
|
||||
#include<hgl/type/StringList.h>
|
||||
#include<hgl/math/PrimaryMathematics.h>
|
||||
|
||||
/**
|
||||
* Maximum Path Length Limitation
|
||||
@ -68,7 +69,7 @@ namespace hgl
|
||||
{
|
||||
int str_len[count];
|
||||
|
||||
for(int i=0;i<count;++)
|
||||
for(int i=0;i<count;i++)
|
||||
str_len=strlen(str_list[i]);
|
||||
|
||||
return ComboFilename(str_list,str_len,count,spear_char);
|
||||
|
@ -23,15 +23,20 @@ namespace hgl
|
||||
llHint, //提示,不重要,debug状态默认出对话框
|
||||
llLog //记录一下
|
||||
};//enum LogLevel
|
||||
|
||||
bool InitLogger(const OSString &app_name);
|
||||
|
||||
void Log(LogLevel level,const u16char *str,int size);
|
||||
void Log(LogLevel level,const u8char *str,int size);
|
||||
|
||||
inline void Log(LogLevel ll,const UTF16String &str)
|
||||
{
|
||||
std::wcout<<str.c_str()<<std::endl;
|
||||
Log(ll,str.c_str(),str.Length());
|
||||
}
|
||||
|
||||
inline void Log(LogLevel ll,const UTF8String &str)
|
||||
{
|
||||
std::cout<<(char *)str.c_str()<<std::endl;
|
||||
Log(ll,str.c_str(),str.Length());
|
||||
}
|
||||
|
||||
#ifdef HGL_SUPPORT_CHAR8_T
|
||||
|
@ -1,9 +1,9 @@
|
||||
#ifndef HGL_Primary_Mathematics_INCLUDE
|
||||
#ifndef HGL_Primary_Mathematics_INCLUDE
|
||||
#define HGL_Primary_Mathematics_INCLUDE
|
||||
namespace hgl
|
||||
{
|
||||
/**
|
||||
* 求一批数的合
|
||||
* 求一批数的合
|
||||
*/
|
||||
template<typename T>
|
||||
const T sum(const T *data,const int count)
|
||||
@ -20,7 +20,7 @@ namespace hgl
|
||||
}
|
||||
|
||||
/**
|
||||
* 求一批数的合
|
||||
* 求一批数的合
|
||||
*/
|
||||
template<typename R,typename T>
|
||||
const R sum(const T *data,const int count)
|
||||
|
@ -9,15 +9,8 @@ namespace hgl
|
||||
#define DEF_RGB_U8_TO_F(r,g,b) {float(r)/255.0f,float(g)/255.0f,float(b)/255.0f}
|
||||
#define DEF_RGBA_U8_TO_F(r,g,b,a) {float(r)/255.0f,float(g)/255.0f,float(b)/255.0f,float(a)/255.0f}
|
||||
|
||||
inline constexpr uint8 RGB2Lum(const uint8 red,const uint8 green,const uint8 blue)
|
||||
{
|
||||
return float(red)*0.299+float(green)*0.587+float(blue)*0.114;
|
||||
}
|
||||
|
||||
inline constexpr float RGB2Lumf(const float red,const float green,const float blue)
|
||||
{
|
||||
return red*0.299+green*0.587+blue*0.114;
|
||||
}
|
||||
#define HEXColor3(value) (0x##value>>16),((0x##value&0xFF00)>>8),(0x##value&0xFF)
|
||||
#define HEXColor3f(value) float(0x##value>>16)/255.0f,float((0x##value&0xFF00)>>8)/255.0f,float(0x##value&0xFF)/255.0f
|
||||
|
||||
const Color3f GetSpectralColor(const double l); ///<根据光谱值获取对应的RGB值
|
||||
|
||||
|
@ -2,96 +2,113 @@
|
||||
#define HGL_COLOR_SPACE_INCLUDE
|
||||
|
||||
#include<math.h>
|
||||
#include<hgl/TypeFunc.h>
|
||||
|
||||
namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
enum class ColorSpace
|
||||
{
|
||||
enum class ColorSpace
|
||||
{
|
||||
Linear=0,
|
||||
sRGB,
|
||||
YCbCr,
|
||||
Linear=0,
|
||||
sRGB,
|
||||
YCbCr,
|
||||
|
||||
ENUM_CLASS_RANGE(Linear,YCbCr)
|
||||
};//enum class ColorSpace
|
||||
ENUM_CLASS_RANGE(Linear,YCbCr)
|
||||
};//enum class ColorSpace
|
||||
|
||||
constexpr double GAMMA =2.4f;
|
||||
constexpr double INV_GAMMA =1.0f/GAMMA;
|
||||
constexpr double SRGB_ALPHA =0.055f;
|
||||
constexpr double GAMMA =2.4f;
|
||||
constexpr double INV_GAMMA =1.0f/GAMMA;
|
||||
constexpr double SRGB_ALPHA =0.055f;
|
||||
|
||||
template<typename T>
|
||||
inline constexpr T sRGB2Linear(const T &in)
|
||||
{
|
||||
if(in<=0.4045)
|
||||
return (double)in/12.92;
|
||||
else
|
||||
return pow((double(in)+SRGB_ALPHA)/(1.0f+SRGB_ALPHA),GAMMA);
|
||||
}
|
||||
template<typename T>
|
||||
inline constexpr T sRGB2Linear(const T &in,const T &gamma=GAMMA,const T &srgb_alpha=SRGB_ALPHA)
|
||||
{
|
||||
if(in<=0.4045)
|
||||
return (double)in/12.92;
|
||||
else
|
||||
return pow((double(in)+srgb_alpha)/(1.0f+srgb_alpha),gamma);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline constexpr T Linear2sRGB(const T &in)
|
||||
{
|
||||
if(in<=0.0031308f)
|
||||
return double(in)*12.92f;
|
||||
else
|
||||
return pow(double(in),INV_GAMMA)*(1.0f+SRGB_ALPHA)-SRGB_ALPHA;
|
||||
}
|
||||
template<typename T>
|
||||
inline constexpr T Linear2sRGB(const T &in,const T &inv_gamma=INV_GAMMA,const T &srgb_alpha=SRGB_ALPHA)
|
||||
{
|
||||
if(in<=0.0031308f)
|
||||
return double(in)*12.92f;
|
||||
else
|
||||
return pow(double(in),inv_gamma)*(1.0f+srgb_alpha)-srgb_alpha;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline constexpr T sRGB2LinearCheaper(const T &in)
|
||||
{
|
||||
return (T)pow(double(in),GAMMA);
|
||||
}
|
||||
template<typename T>
|
||||
inline constexpr T sRGB2LinearCheaper(const T &in,const T &gamma=GAMMA)
|
||||
{
|
||||
return (T)pow(double(in),gamma);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline constexpr T Linear2sRGBCheaper(const T &in)
|
||||
{
|
||||
return (T)pow((double)in,INV_GAMMA);
|
||||
}
|
||||
template<typename T>
|
||||
inline constexpr T Linear2sRGBCheaper(const T &in,const T &inv_gamma=INV_GAMMA)
|
||||
{
|
||||
return (T)pow((double)in,inv_gamma);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline constexpr T sRGB2LinearCheapest(const T &in)
|
||||
{
|
||||
return in*in;
|
||||
}
|
||||
template<typename T>
|
||||
inline constexpr T sRGB2LinearCheapest(const T &in)
|
||||
{
|
||||
return in*in;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline void sRGB2LinearFast(T &x,T &y,T &z,const T &r,const T &g,const T &b)
|
||||
{
|
||||
x=0.4124f*r+0.3576f*g+0.1805f*b;
|
||||
y=0.2126f*r+0.7152f*g+0.0722f*b;
|
||||
z=0.0193f*r+0.1192f*g+0.9505f*b;
|
||||
}
|
||||
template<typename T>
|
||||
inline void sRGB2LinearFast(T &x,T &y,T &z,const T &r,const T &g,const T &b)
|
||||
{
|
||||
x=0.4124f*r+0.3576f*g+0.1805f*b;
|
||||
y=0.2126f*r+0.7152f*g+0.0722f*b;
|
||||
z=0.0193f*r+0.1192f*g+0.9505f*b;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline void Linear2sRGBFast(T &r,T &g,T &b,const T &x,const T &y,const T &z)
|
||||
{
|
||||
r= 3.2406f*x-1.5373f*y-0.4986f*z;
|
||||
g=-0.9689f*x+1.8758f*y+0.0416f*z;
|
||||
b= 0.0557f*x-0.2040f*y+1.0570f*z;
|
||||
}
|
||||
template<typename T>
|
||||
inline void Linear2sRGBFast(T &r,T &g,T &b,const T &x,const T &y,const T &z)
|
||||
{
|
||||
r= 3.2406f*x-1.5373f*y-0.4986f*z;
|
||||
g=-0.9689f*x+1.8758f*y+0.0416f*z;
|
||||
b= 0.0557f*x-0.2040f*y+1.0570f*z;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline constexpr T Clamp(const T &value,const T &min_value,const T &max_value)
|
||||
{
|
||||
if(value<min_value)return min_value;
|
||||
if(value>max_value)return max_value;
|
||||
template<typename T>
|
||||
inline constexpr T Clamp(const T &value,const T &min_value,const T &max_value)
|
||||
{
|
||||
if(value<min_value)return min_value;
|
||||
if(value>max_value)return max_value;
|
||||
|
||||
return value;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline constexpr T Clamp(const T &value)
|
||||
{
|
||||
return Clamp<T>(value,T(0),T(1));
|
||||
}
|
||||
template<typename T>
|
||||
inline constexpr T Clamp(const T &value)
|
||||
{
|
||||
return Clamp<T>(value,T(0),T(1));
|
||||
}
|
||||
|
||||
template<> inline constexpr uint8 Clamp<uint8>(const uint8 &value)
|
||||
{
|
||||
return Clamp<uint8>(value,0,255);
|
||||
}
|
||||
}//namespace graph
|
||||
template<typename T>
|
||||
inline constexpr T RGB2Lum(const T &r,const T &g,const T &b)
|
||||
{
|
||||
return 0.299f*r+0.587f*g+0.114f*b;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline constexpr T RGB2Cb(const T &r,const T &g,const T &b)
|
||||
{
|
||||
return -0.168736f*r-0.331264f*g+0.5f*b;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline constexpr T RGB2Cr(const T &r,const T &g,const T &b)
|
||||
{
|
||||
return 0.5f*r-0.418688f*g-0.081312f*b;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline void RGB2YCbCr(T &y,T &cb,T &cr,const T &r,const T &g,const T &b)
|
||||
{
|
||||
y =RGB2Lum(r,g,b);
|
||||
cb=RGB2Cb(r,g,b);
|
||||
cr=RGB2Cr(r,g,b);
|
||||
}
|
||||
}//namespace hgl
|
||||
#endif//HGL_COLOR_SPACE_INCLUDE
|
||||
|
@ -165,7 +165,12 @@ namespace hgl
|
||||
|
||||
T &operator[](int n)
|
||||
{
|
||||
return buf+n;
|
||||
return buf[n];
|
||||
}
|
||||
|
||||
const T &operator[](int n)const
|
||||
{
|
||||
return buf[n];
|
||||
}
|
||||
};//template<typename T> class MemBlock
|
||||
|
||||
|
@ -251,7 +251,7 @@ namespace hgl
|
||||
if(!new_items)
|
||||
return(false);
|
||||
|
||||
items=new_items;
|
||||
this->items=new_items;
|
||||
}
|
||||
|
||||
return(true);
|
||||
|
@ -15,7 +15,7 @@ namespace hgl
|
||||
List<T> data_list;
|
||||
|
||||
bool FindPos(const T &,int &)const; ///<查找数据如果插入后,会所在的位置,返回是否存在这个数据
|
||||
int FindPos(const T &flag)const{int pos;return FindPos(flag,pos)?return(pos):-1;} ///<查找数据如果插入后,会所在的位置
|
||||
int FindPos(const T &flag)const{int pos;return FindPos(flag,pos)?pos:-1;} ///<查找数据如果插入后,会所在的位置
|
||||
|
||||
public: //属性
|
||||
|
||||
|
@ -4,31 +4,61 @@
|
||||
#include<hgl/type/String.h>
|
||||
#include<hgl/CodePage.h>
|
||||
|
||||
#if HGL_OS == HGL_OS_Windows
|
||||
inline hgl::OSString std_to_os(const std::string &str)
|
||||
namespace hgl
|
||||
{
|
||||
return hgl::to_u16((hgl::u8char *)str.c_str(),(int)(str.length()));
|
||||
}
|
||||
#if HGL_OS == HGL_OS_Windows
|
||||
inline hgl::OSString ToOSString(const std::string &str)
|
||||
{
|
||||
return hgl::to_u16((hgl::u8char *)str.c_str(),(int)(str.length()));
|
||||
}
|
||||
|
||||
inline std::string to_std(const hgl::OSString &str)
|
||||
{
|
||||
hgl::UTF8String u8_str=hgl::to_u8(str);
|
||||
inline hgl::OSString ToOSString(const std::wstring &str)
|
||||
{
|
||||
return hgl::OSString(str.c_str(),(int)str.length());
|
||||
}
|
||||
|
||||
return std::string((char *)u8_str.c_str(),str.Length());
|
||||
}
|
||||
#else
|
||||
inline hgl::OSString std_to_os(const std::string &str)
|
||||
{
|
||||
return hgl::OSString(str.c_str(),str.size());
|
||||
}
|
||||
inline hgl::UTF8String ToUTF8String(const std::wstring &str)
|
||||
{
|
||||
return hgl::to_u8(str.c_str(),(int)str.length());
|
||||
}
|
||||
|
||||
inline std::string to_std(const hgl::OSString &str)
|
||||
{
|
||||
return std::string(str.c_str(),str.Length());
|
||||
}
|
||||
#endif//
|
||||
inline std::string ToStdString(const hgl::OSString &str)
|
||||
{
|
||||
hgl::UTF8String u8_str=hgl::to_u8(str);
|
||||
|
||||
inline hgl::UTF8String std_to_u8(const std::string &str)
|
||||
{
|
||||
return hgl::UTF8String((hgl::u8char *)str.c_str(),int(str.size()));
|
||||
}
|
||||
return std::string((char *)u8_str.c_str(),str.Length());
|
||||
}
|
||||
|
||||
inline std::wstring ToStdWString(const hgl::OSString &str)
|
||||
{
|
||||
return std::wstring(str.c_str(),str.Length());
|
||||
}
|
||||
#else
|
||||
inline hgl::OSString ToOSString(const std::string &str)
|
||||
{
|
||||
return hgl::OSString(str.c_str(),str.size());
|
||||
}
|
||||
|
||||
inline hgl::OSString ToOSString(const std::wstring &str)
|
||||
{
|
||||
return hgl::to_u8(str.c_str(),str.size());
|
||||
}
|
||||
|
||||
inline std::string ToStdString(const hgl::OSString &str)
|
||||
{
|
||||
return std::string(str.c_str(),str.Length());
|
||||
}
|
||||
|
||||
inline std::wstring ToStdWString(const OSString &str)
|
||||
{
|
||||
hgl::WideString w_str=hgl::to_wide<sizeof(wchar_t)>(str);
|
||||
|
||||
return std::wstring(w_str.c_str(),w_str.Length());
|
||||
}
|
||||
#endif//
|
||||
|
||||
inline hgl::UTF8String ToUTF8String(const std::string &str)
|
||||
{
|
||||
return hgl::UTF8String((hgl::u8char *)str.c_str(),int(str.size()));
|
||||
}
|
||||
}
|
@ -44,7 +44,7 @@ namespace hgl
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据一个C指针风格字符串设置当前字符串内容(传入的str需要delete[])
|
||||
* 根据一个C指针风格字符串设置当前字符串内容(传入的str会被复制一份,所以需要传入者自行delete[])
|
||||
* @param str 字符串内容,在len<0的情况下,需以0为结尾
|
||||
* @param len 字符串长度,如果str以0为结尾,可以为负值,将启用自动计算长度
|
||||
*/
|
||||
|
@ -19,7 +19,7 @@ file(GLOB TYPE_TEMPLATE_HEADER ${TYPE_INCLUDE_PATH}/*.h)
|
||||
|
||||
SET(TYPE_SOURCE_FILES Type/Collection.cpp)
|
||||
|
||||
SOURCE_GROUP("DataType\\Collection" FILES ${TYPE_INCLUDE_PATH}/Collection.h
|
||||
SOURCE_GROUP("DataType\\Collection" FILES ${TYPE_INCLUDE_PATH}/Collection.h
|
||||
${COLLECTION_SOURCE})
|
||||
|
||||
SET(SYSTEM_INFO_SOURCE ${CORE_PLATFORM_INCLUDE_PATH}/SystemInfo.h
|
||||
@ -145,12 +145,11 @@ SET(IO_SOURCE_FILES ${IO_BASE_FILES}
|
||||
SET(FILESYSTEM_INCLUDE_PATH ${CMCORE_ROOT_INCLUDE_PATH}/hgl/filesystem)
|
||||
|
||||
SET(FILESYSTEM_HEADER_FILES ${FILESYSTEM_INCLUDE_PATH}/EnumFile.h
|
||||
${FILESYSTEM_INCLUDE_PATH}/EnumVolume.h
|
||||
${FILESYSTEM_INCLUDE_PATH}/Filename.h
|
||||
${FILESYSTEM_INCLUDE_PATH}/FileSystem.h)
|
||||
${FILESYSTEM_INCLUDE_PATH}/EnumVolume.h
|
||||
${FILESYSTEM_INCLUDE_PATH}/FileSystem.h)
|
||||
|
||||
SET(FILESYSTEM_SOURCE_FILES FileSystem/FileSystem.cpp
|
||||
FileSystem/EnumFile.cpp)
|
||||
FileSystem/EnumFile.cpp)
|
||||
|
||||
SOURCE_GROUP("FileSystem" FILES ${FILESYSTEM_HEADER_FILES} ${FILESYSTEM_SOURCE_FILES})
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include<hgl/type/Color3f.h>
|
||||
#include<hgl/type/Color.h>
|
||||
#include<hgl/type/ColorSpace.h>
|
||||
namespace hgl
|
||||
{
|
||||
void Color3f::Clamp()
|
||||
@ -16,20 +17,20 @@ namespace hgl
|
||||
*/
|
||||
void Color3f::To(float nr,float ng,float nb,float pos)
|
||||
{
|
||||
if(pos==0)return;
|
||||
if(pos==1)
|
||||
if(pos<=0)return;
|
||||
if(pos>=1)
|
||||
{
|
||||
r=nr;
|
||||
g=ng;
|
||||
b=nb;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
r+=(nr-r)*pos;
|
||||
g+=(ng-g)*pos;
|
||||
b+=(nb-b)*pos;
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void Color3f::Grey(float v1,float v2,float v3)
|
||||
{
|
||||
float lum=RGB2Lum(v1,v2,v3);
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include<hgl/type/Color4f.h>
|
||||
#include<hgl/type/Color.h>
|
||||
#include<hgl/type/ColorSpace.h>
|
||||
namespace hgl
|
||||
{
|
||||
void Color4f::Clamp()
|
||||
@ -17,8 +18,8 @@ namespace hgl
|
||||
*/
|
||||
void Color4f::To(float nr,float ng,float nb,float pos)
|
||||
{
|
||||
if(pos==0)return;
|
||||
if(pos==1)
|
||||
if(pos<=0)return;
|
||||
if(pos>=1)
|
||||
{
|
||||
r=nr;
|
||||
g=ng;
|
||||
|
@ -4,9 +4,9 @@ namespace hgl
|
||||
{
|
||||
CharSet DefaultCharSet();
|
||||
|
||||
CharSet UTF8CharSet (CharCodePage::UTF8, utf8_charset );
|
||||
CharSet UTF16LECharSet (CharCodePage::UTF16LE,utf16le_charset );
|
||||
CharSet UTF16BECharSet (CharCodePage::UTF16BE,utf16be_charset );
|
||||
CharSet UTF8CharSet ((uint16)CharCodePage::UTF8, utf8_charset );
|
||||
CharSet UTF16LECharSet ((uint16)CharCodePage::UTF16LE,utf16le_charset );
|
||||
CharSet UTF16BECharSet ((uint16)CharCodePage::UTF16BE,utf16be_charset );
|
||||
|
||||
int u16_to_u8(u8char *dst,int dst_size,const u16char *src,const int src_size)
|
||||
{
|
||||
|
89
src/URI.cpp
Normal file
89
src/URI.cpp
Normal file
@ -0,0 +1,89 @@
|
||||
#include<hgl/URI.h>
|
||||
|
||||
namespace hgl
|
||||
{
|
||||
namespace
|
||||
{
|
||||
// https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
|
||||
|
||||
struct SchemePort
|
||||
{
|
||||
uint16 port;
|
||||
char scheme[16];
|
||||
};
|
||||
|
||||
const SchemePort SchemePortList[]=
|
||||
{
|
||||
{7, "echo"},
|
||||
{21, "ftp"},
|
||||
{22, "ssh"},
|
||||
{23, "telnet"},
|
||||
{25, "smtp"},
|
||||
{53, "dns"},
|
||||
{69, "tftp"},
|
||||
{80, "http"},
|
||||
{80, "ws"},
|
||||
{110, "pop3"},
|
||||
{119, "nntp"},
|
||||
{123, "ntp"},
|
||||
{143, "imap"},
|
||||
{161, "snmp"},
|
||||
{162, "snmptrap"},
|
||||
{194, "irc"},
|
||||
{199, "smux"},
|
||||
{389, "ldap"},
|
||||
{443, "https"},
|
||||
{443, "wss"},
|
||||
{445, "smb"},
|
||||
{465, "smtps"},
|
||||
{548, "afp"}, //Apple File Services
|
||||
{554, "rtsp"},
|
||||
{636, "ldaps"},
|
||||
{853, "dnss"},
|
||||
{873, "rsync"},
|
||||
{993, "imaps"},
|
||||
{5060, "sip"},
|
||||
{5061, "sips"},
|
||||
{5222, "xmpp"}
|
||||
};
|
||||
}
|
||||
|
||||
const uint16 GetSchemePort(const char *scheme)
|
||||
{
|
||||
for(const SchemePort &sp:SchemePortList)
|
||||
if(strcmp(scheme,sp.scheme)==0)
|
||||
return sp.port;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
URI::URI(const OSString &fn)
|
||||
{
|
||||
origin_name=fn;
|
||||
|
||||
scheme_type=SchemeType::Unknow;
|
||||
}
|
||||
|
||||
URI::URI(const OSString &scheme,const OSString &path,const OSString &filename)
|
||||
{
|
||||
scheme_name=scheme;
|
||||
|
||||
if(scheme=="file")
|
||||
scheme_type=SchemeType::LocalFile;
|
||||
else
|
||||
|
||||
}
|
||||
|
||||
const bool URI::isFile()
|
||||
{
|
||||
if(scheme_type==SchemeType::Unknow)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
if(scheme_type==SchemeType::LocalFile)
|
||||
return(true);
|
||||
|
||||
return(false);
|
||||
}
|
||||
}//namespace hgl
|
Loading…
x
Reference in New Issue
Block a user