📄 link.c
字号:
#include <types.h>
#include "link.h"
#define LINK_TRACE
#ifdef LINK_TRACE
int link_trace_index=0;
struct {LinkBufStruct *head, *tail; int num;} link_trace_table[20];
#endif
void LinkInit(LinkStruct *link)
{
if(link!=NULL){
link->Head=link->Tail=NULL;
link->Number=0;
}
}
void LinkAppendBuf(LinkStruct *link, LinkBufStruct *buf)
{
int ilev;
if(link==NULL)return;
if(link->Tail==NULL){ link->Head=link->Tail=buf; }
else { link->Tail->Next=buf; link->Tail=buf; }
link->Number++;
#ifdef LINK_TRACE
link_trace_index=(link_trace_index+1)%20;
link_trace_table[link_trace_index].head=link->Head;
link_trace_table[link_trace_index].tail=link->Tail;
link_trace_table[link_trace_index].num=link->Number;
#endif
}
int link_buffer_error=0;
LinkBufStruct *LinkGetBuf(LinkStruct *link)
{
int ilev;
LinkBufStruct *buf;
if(link==NULL)return NULL;
if(link->Number==0)return NULL;
if(link->Number==1)
{
buf=link->Head;
link->Head=NULL;
link->Tail=NULL;
}
else
{
buf=link->Head;
if(memcmp(((char *)buf)-4,"abcd",4)!=0){
link_buffer_error++;
return NULL;
}
link->Head=(link->Head)->Next;
}
link->Number--;
buf->Next=NULL;
#ifdef LINK_TRACE
link_trace_index=(link_trace_index+1)%20;
link_trace_table[link_trace_index].head=link->Head;
link_trace_table[link_trace_index].tail=link->Tail;
link_trace_table[link_trace_index].num=link->Number;
#endif
return buf;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -