TextInputStream support parse from buffer.
This commit is contained in:
parent
252f2f6a1f
commit
70b6567029
@ -67,7 +67,7 @@ namespace hgl
|
||||
|
||||
InputStream *input_stream; ///<输入流
|
||||
|
||||
uint8 *buffer; ///<缓冲区
|
||||
char *buffer; ///<缓冲区
|
||||
int32 buffer_size; ///<缓冲区大小
|
||||
int32 cur_buf_size; ///<当前缓冲区大小
|
||||
|
||||
@ -92,9 +92,13 @@ namespace hgl
|
||||
public:
|
||||
|
||||
TextInputStream(InputStream *i,const int buf_size=HGL_SIZE_1MB);
|
||||
TextInputStream(char *buf,const int buf_size);
|
||||
virtual ~TextInputStream()
|
||||
{
|
||||
SAFE_CLEAR_ARRAY(buffer);
|
||||
if(input_stream) //有input_stream证明是从流加载的,需要删除临时缓冲区
|
||||
{
|
||||
SAFE_CLEAR_ARRAY(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
void SetDefaultBOM(const ByteOrderMask &bo){default_bom=bo;} ///<设置缺省BOM头}
|
||||
|
@ -16,7 +16,7 @@ namespace hgl
|
||||
else
|
||||
buffer_size=stream_size;
|
||||
|
||||
buffer=new uint8[buffer_size];
|
||||
buffer=new char[buffer_size];
|
||||
cur_buf_size=0;
|
||||
|
||||
bom=ByteOrderMask::NONE;
|
||||
@ -28,6 +28,26 @@ namespace hgl
|
||||
event_callback=nullptr;
|
||||
}
|
||||
|
||||
TextInputStream::TextInputStream(char *buf,const int buf_size)
|
||||
{
|
||||
input_stream=nullptr;
|
||||
|
||||
stream_pos=0;
|
||||
stream_size=0;
|
||||
|
||||
buffer=buf;
|
||||
buffer_size=buf_size;
|
||||
cur_buf_size=buf_size;
|
||||
|
||||
bom=ByteOrderMask::NONE;
|
||||
default_bom=ByteOrderMask::UTF8;
|
||||
|
||||
callback_u8=nullptr;
|
||||
callback_u16=nullptr;
|
||||
callback_u32=nullptr;
|
||||
event_callback=nullptr;
|
||||
}
|
||||
|
||||
template<> void TextInputStream::SetParseCallback(ParseCallback<char> *pc){callback_u8=pc;}
|
||||
template<> void TextInputStream::SetParseCallback(ParseCallback<u16char> *pc){callback_u16=pc;}
|
||||
template<> void TextInputStream::SetParseCallback(ParseCallback<u32char> *pc){callback_u32=pc;}
|
||||
@ -80,7 +100,7 @@ namespace hgl
|
||||
|
||||
int TextInputStream::TextBlockParse()
|
||||
{
|
||||
uint8 *p=buffer;
|
||||
uint8 *p=(uint8 *)buffer;
|
||||
|
||||
if(stream_pos==0) //最开始,那检测一下BOM头
|
||||
{
|
||||
@ -124,11 +144,19 @@ namespace hgl
|
||||
|
||||
int TextInputStream::Run()
|
||||
{
|
||||
if(!input_stream)return(-1);
|
||||
|
||||
if(!callback_u8
|
||||
&&!callback_u16
|
||||
&&!callback_u32)return(-2);
|
||||
&&!callback_u32)return(-2);
|
||||
|
||||
if(!input_stream)
|
||||
{
|
||||
if(buffer)
|
||||
{
|
||||
return TextBlockParse();
|
||||
}
|
||||
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int64 read_size;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user