📄 ammemstream.c
字号:
/*
* AMMemStream.cpp
*
*
*/
#include "AMComDef.h"
#include "AMMem.h"
#include "AMPlat.h"
#include "AMMemStream.h"
MBool AMStreamMemClose(HMSTREAM StreamHandle)
{
LPSTREAMHANDLE hStream = (LPSTREAMHANDLE ) StreamHandle;
AMMemFree(MNull,hStream);
return MTrue;
}
MLong AMStreamMemGetSize(HMSTREAM StreamHandle)
{
LPSTREAMHANDLE hStream = (LPSTREAMHANDLE ) StreamHandle;
return hStream->pty.mem_pty.size;
}
MLong AMStreamMemRead(HMSTREAM StreamHandle,void *pBuf,MLong Size)
{
MLong len;
MLong left_len;
LPSTREAMHANDLE hStream = (LPSTREAMHANDLE ) StreamHandle;
left_len = hStream->pty.mem_pty.size - hStream->pty.mem_pty.off_set;
if (left_len <=0 ) {
return 0;
}
else {
len = (Size>left_len)? left_len : Size;
AMMemCpy(pBuf,((char *)hStream->handle + hStream->pty.mem_pty.off_set),len);
hStream->pty.mem_pty.off_set += len;
return len;
}
}
MLong AMStreamMemWrite(HMSTREAM StreamHandle,void *pBuf,MLong Size)
{
MLong len;
MLong left_len;
LPSTREAMHANDLE hStream = (LPSTREAMHANDLE ) StreamHandle;
left_len = hStream->pty.mem_pty.size - hStream->pty.mem_pty.off_set;
if(left_len <= 0) {
return 0;
}
else{
len = (Size > left_len)?left_len : Size;
AMMemCpy(((char*)hStream->handle + hStream->pty.mem_pty.off_set),pBuf,len);
hStream->pty.mem_pty.off_set += len;
return len;
}
}
MLong AMStreamMemSeek(HMSTREAM StreamHandle,MShort Start,MLong Offset)
{
MLong ret;
LPSTREAMHANDLE hStream = (LPSTREAMHANDLE ) StreamHandle;
switch(Start){
case STREAM_BEGIN:
hStream->pty.mem_pty.off_set = Offset;
ret = 0;
break;
case STREAM_END:
hStream->pty.mem_pty.off_set = hStream->pty.mem_pty.size + Offset;
ret = 0;
break;
case STREAM_CUR:
hStream->pty.mem_pty.off_set =hStream->pty.mem_pty.off_set + Offset;
ret = 0;
break;
default:
ret = 1;
break;
}
if(hStream->pty.mem_pty.off_set<0)
hStream->pty.mem_pty.off_set = 0;
if(hStream->pty.mem_pty.off_set > hStream->pty.mem_pty.size)
hStream->pty.mem_pty.off_set = hStream->pty.mem_pty.size;
return ret;
}
MLong AMStreamMemTell(HMSTREAM StreamHandle)
{
LPSTREAMHANDLE hStream = (LPSTREAMHANDLE ) StreamHandle;
return hStream->pty.mem_pty.off_set;
}
MBool AMStreamMemFlush(HMSTREAM StreamHandle)
{
return MTrue;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -