⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ammemstream.c

📁 JPEG解压软件,包含PC端的测试程序,程序结构比较清晰
💻 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 + -