📄 roundbuf.c
字号:
#define ROUNDBUF_GLOBAL
#include "includes.h"
void Init_RoundBuf(void)
{
uchar i;
for(i=0; i<MAX_ROUNDBUF_NUM; i++)
{
round[i].status = _FREE;
round[i].in = NULL;
round[i].out = NULL;
round[i].start = NULL;
round[i].end = NULL;
round[i].size = 0;
round[i].use = 0;
}
}
uchar Find_FreeRoundBuf(void)
{
uchar i;
for(i=0; i<MAX_ROUNDBUF_NUM; i++)
{
if(round[i].status==_FREE)
{
return i;
}
}
return 0xff;
}
ROUNDBUF_STRUCT *Create_RoundBuf(uchar far *buf ,uint size)
{
uchar id;
id= Find_FreeRoundBuf();
if(id==0xff){
return NULL;
}
else{
round[id].status = _USE;
round[id].start = buf;
round[id].end = (uchar far *)(buf+size);
round[id].in = round[id].start;
round[id].out = round[id].start;
round[id].size = size;
round[id].use = 0;
return round+id;
}
}
uchar Write_RoundByte(ROUNDBUF_STRUCT *ptr,uchar ch)
{
if((ptr->use+1)<=ptr->size)
{
*(ptr->in)++ = ch;
if(ptr->in==ptr->end){
ptr->in = ptr->start;
}
ptr->use++;
return TRUE;
}
else
{
return FALSE;
}
}
uchar Write_RoundWord(ROUNDBUF_STRUCT *ptr,uint ch)
{
if((ptr->use+2)<=ptr->size)
{
*(ptr->in)++ = ch&0xff;
if(ptr->in==ptr->end){
ptr->in = ptr->start;
}
*(ptr->in)++ = (ch>>8)&0xff;
if(ptr->in==ptr->end){
ptr->in = ptr->start;
}
ptr->use += 2;
return TRUE;
}
else
{
return FALSE;
}
}
uchar Write_RoundStream(ROUNDBUF_STRUCT *ptr,uchar far *src,uint len)
{
uint i;
if((ptr->use+len)<=ptr->size)
{
for(i=0; i<len; i++)
{
Write_RoundByte(ptr,src[i]);
}
return TRUE;
}
else
{
return FALSE;
}
}
uchar Read_RoundByte(ROUNDBUF_STRUCT *ptr,uchar *temp)
{
if(ptr->use>0)
{
*temp = *(ptr->out)++;
if(ptr->out==ptr->end){
ptr->out = ptr->start;
}
ptr->use --;
return TRUE;
}
else
{
return FALSE;
}
}
uchar read_roundstream(ROUNDBUF_STRUCT *ptr,uchar *des,uint len)
{
uchar i;
if(ptr->use>len){
for(i=0; i<len; i++)
{
Read_RoundByte(ptr,des+i);
}
}
else{
return FALSE;
}
}
uchar IsRoundBufFull(ROUNDBUF_STRUCT *ptr)
{
if(ptr->use==ptr->size)
{
return TRUE;
}
else
{
return FALSE;
}
}
uchar IsRoundBufEmpty(ROUNDBUF_STRUCT *ptr)
{
if(ptr->use==0)
{
return TRUE;
}
else
{
return FALSE;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -