Merge branch 'master' of https://github.com/hyzboy/CMCore
This commit is contained in:
@@ -105,6 +105,17 @@ namespace hgl
|
||||
{4,{0x00,0x00,0xFE,0xFF},bomUTF32BE,&utf32be_charset ,ccpUTF32BE }
|
||||
};
|
||||
|
||||
inline ByteOrderMask CheckBOM(const void *data)
|
||||
{
|
||||
for(uint i=bomNone+1;i<bomEnd;i++)
|
||||
{
|
||||
if(memcmp(data,BOMData[i].data,BOMData[i].size)==0)
|
||||
return (ByteOrderMask)i;
|
||||
}
|
||||
|
||||
return bomNone;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline T EndianSwap(const T value)
|
||||
{
|
||||
|
@@ -163,6 +163,7 @@ namespace hgl
|
||||
bool FileCanWrite(const OSString &); ///<检测文件是否可写
|
||||
bool FileCanExec(const OSString &); ///<检测文件是否可执行
|
||||
|
||||
void *LoadFileToMemory(const OSString &,int64 &,bool append_zero=false); ///<加载一个文件到内存
|
||||
int64 LoadFileToMemory(const OSString &,void **,bool append_zero=false); ///<加载一个文件到内存
|
||||
int64 SaveMemoryToFile(const OSString &,const void *,const int64 &); ///<保存一块内存成文件
|
||||
int64 SaveMemoryToFile(const OSString &,void **,const int64 *,const int &); ///<保存多块内存成一个文件
|
||||
|
@@ -186,25 +186,25 @@ namespace hgl
|
||||
|
||||
//16bit str-length
|
||||
virtual bool ReadUTF8ShortString (char *, uint max_len=0);
|
||||
virtual bool ReadUTF8ShortString (UTF8String &, uint max_len=0); ///<读取utf8格式字符串(前缀四字节的字符串字节长度)
|
||||
virtual bool ReadUTF8ShortString (UTF16String &, uint max_len=0); ///<读取utf8格式字符串(前缀四字节的字符串字节长度)
|
||||
virtual bool ReadUTF8ShortString (UTF8String &, uint max_len=0); ///<读取utf8格式字符串(前缀2字节的字符串字节长度)
|
||||
virtual bool ReadUTF8ShortString (UTF16String &, uint max_len=0); ///<读取utf8格式字符串(前缀2字节的字符串字节长度)
|
||||
|
||||
virtual bool ReadUTF16LEShortString (u16char *, uint max_len=0);
|
||||
virtual bool ReadUTF16BEShortString (u16char *, uint max_len=0);
|
||||
|
||||
virtual bool ReadUTF16LEShortString (UTF16String &, uint max_len=0); ///<读取utf16-le格式字符串(前缀四字节的字符串字节长度)
|
||||
virtual bool ReadUTF16BEShortString (UTF16String &, uint max_len=0); ///<读取utf16-be格式字符串(前缀四字节的字符串字节长度)
|
||||
virtual bool ReadUTF16LEShortString (UTF16String &, uint max_len=0); ///<读取utf16-le格式字符串(前缀2字节的字符串字节长度)
|
||||
virtual bool ReadUTF16BEShortString (UTF16String &, uint max_len=0); ///<读取utf16-be格式字符串(前缀2字节的字符串字节长度)
|
||||
|
||||
//8bit str-length
|
||||
virtual bool ReadUTF8TinyString (char *, uint max_len=0);
|
||||
virtual bool ReadUTF8TinyString (UTF8String &, uint max_len=0); ///<读取utf8格式字符串(前缀四字节的字符串字节长度)
|
||||
virtual bool ReadUTF8TinyString (UTF16String &, uint max_len=0); ///<读取utf8格式字符串(前缀四字节的字符串字节长度)
|
||||
virtual bool ReadUTF8TinyString (UTF8String &, uint max_len=0); ///<读取utf8格式字符串(前缀1字节的字符串字节长度)
|
||||
virtual bool ReadUTF8TinyString (UTF16String &, uint max_len=0); ///<读取utf8格式字符串(前缀1字节的字符串字节长度)
|
||||
|
||||
virtual bool ReadUTF16LETinyString (u16char *, uint max_len=0);
|
||||
virtual bool ReadUTF16BETinyString (u16char *, uint max_len=0);
|
||||
|
||||
virtual bool ReadUTF16LETinyString (UTF16String &, uint max_len=0); ///<读取utf16-le格式字符串(前缀四字节的字符串字节长度)
|
||||
virtual bool ReadUTF16BETinyString (UTF16String &, uint max_len=0); ///<读取utf16-be格式字符串(前缀四字节的字符串字节长度)
|
||||
virtual bool ReadUTF16LETinyString (UTF16String &, uint max_len=0); ///<读取utf16-le格式字符串(前缀1字节的字符串字节长度)
|
||||
virtual bool ReadUTF16BETinyString (UTF16String &, uint max_len=0); ///<读取utf16-be格式字符串(前缀1字节的字符串字节长度)
|
||||
};//class DataInputStream
|
||||
|
||||
template<> bool inline DataInputStream::ReadNumber<int8>(int8 &value){return ReadInt8(value);}
|
||||
|
@@ -71,7 +71,7 @@ namespace hgl
|
||||
{
|
||||
fos=new FileOutputStream();
|
||||
|
||||
if(!fos->Open(filename))
|
||||
if(!fos->Open(filename,mode))
|
||||
{
|
||||
delete fos;
|
||||
fos=nullptr;
|
||||
|
@@ -145,6 +145,12 @@ namespace hgl
|
||||
return cur_pos;
|
||||
}
|
||||
|
||||
const void *TellPointer()const
|
||||
{
|
||||
if(!buf)return(nullptr);
|
||||
return buf+cur_pos;
|
||||
}
|
||||
|
||||
int64 GetSize()const
|
||||
{
|
||||
if(!buf)return(-1);
|
||||
|
@@ -1086,7 +1086,7 @@ namespace hgl
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int FindExcludeChar(const BaseString &ch){return FindExcludeChar(0,ch);}
|
||||
int FindExcludeChar(const BaseString &ch)const{return FindExcludeChar(0,ch);}
|
||||
|
||||
/**
|
||||
* 在整个字符串内,查找指定字符串
|
||||
|
@@ -187,6 +187,10 @@ namespace hgl
|
||||
cePlayStationLightBlue,
|
||||
|
||||
cePlum, ///<洋李色
|
||||
|
||||
cePornHubRed, ///<PornHub红
|
||||
cePornHubYellow, ///<PornHub黄
|
||||
|
||||
cePowderBlue, ///<粉蓝色
|
||||
cePurple, ///<紫色
|
||||
ceRed, ///<红色
|
||||
|
@@ -482,6 +482,7 @@ namespace hgl
|
||||
|
||||
operator T *(){return obj;}
|
||||
operator const T *()const{return obj;}
|
||||
const bool operator !()const{return !obj;}
|
||||
|
||||
void Clear()
|
||||
{
|
||||
@@ -529,6 +530,7 @@ namespace hgl
|
||||
|
||||
operator T *(){return obj;}
|
||||
operator const T *()const{return obj;}
|
||||
const bool operator !()const{return !obj;}
|
||||
|
||||
T &operator[](int index){return obj[index];}
|
||||
const T &operator[](int index)const{return obj[index];}
|
||||
|
@@ -182,6 +182,10 @@ namespace hgl
|
||||
DEF_COLOR(PlayStationLightBlue, 0,120,200,"PlayStation亮蓝")
|
||||
|
||||
DEF_COLOR(Plum, 221,160,221,"洋李色")
|
||||
|
||||
DEF_COLOR(PornHubRed, 242, 68, 68,"PorhHub红")
|
||||
DEF_COLOR(PornHubYellow, 255,153, 0,"PorhHub黄")
|
||||
|
||||
DEF_COLOR(PowderBlue, 176,224,230,"粉蓝色")
|
||||
DEF_COLOR(Purple, 128, 0,128,"紫色")
|
||||
DEF_COLOR(Red, 255, 0, 0,"红色")
|
||||
|
@@ -52,6 +52,29 @@ namespace hgl
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
void *LoadFileToMemory(const OSString &filename,int64 &size,bool append_zero)
|
||||
{
|
||||
io::FileInputStream fs;
|
||||
|
||||
if(!fs.Open(filename))
|
||||
return(nullptr);
|
||||
|
||||
size=fs.GetSize();
|
||||
|
||||
char *fb=new char[append_zero?size+1:size];
|
||||
|
||||
if(fs.Read(fb,size)==size)
|
||||
{
|
||||
if(append_zero)
|
||||
fb[size]=0;
|
||||
|
||||
return fb;
|
||||
}
|
||||
|
||||
delete[] fb;
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载一个文件到内存,文件数据请自己delete[]掉
|
||||
@@ -61,27 +84,11 @@ namespace hgl
|
||||
*/
|
||||
int64 LoadFileToMemory(const OSString &filename,void **buf,bool append_zero)
|
||||
{
|
||||
io::FileInputStream fs;
|
||||
int64 size;
|
||||
|
||||
if(!fs.Open(filename))
|
||||
return(-1);
|
||||
*buf=LoadFileToMemory(filename,size,append_zero);
|
||||
|
||||
const int64 size=fs.GetSize();
|
||||
|
||||
char *fb=new char[append_zero?size+1:size];
|
||||
|
||||
if(fs.Read(fb,size)==size)
|
||||
{
|
||||
*buf=fb;
|
||||
|
||||
if(append_zero)
|
||||
fb[size]=0;
|
||||
|
||||
return(size);
|
||||
}
|
||||
|
||||
delete[] fb;
|
||||
return(-1);
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user