📄 dvb_list.h
字号:
#ifndef _DVB_LIST_H
#define _DVB_LIST_H
#include <stdio.h>
#include "dvb_type.h"
typedef enum
{
EN_APPEND,
EN_INSERT
} EN_LIST_ADD_TYPE;
typedef int (*CallBack_Free_List)(void *);
typedef int (*CallBack_Feeding_Two_Objs)(void * Obj0, void * Obj1);
typedef struct NODE
{
struct NODE *Prev, *Next;
CallBack_Free_List ExDtor; // extra destructor
s16 OBJ_TYPE;
u32 OBJ_SIZE;
u8 OBJ_BODY[1];
} ST_NODE;
/*******************************************************************/
typedef struct LIST
{
int Total, Nth;
ST_NODE *First, *Last, *Now;
} ST_LIST;
void DVB_LIST_Initialize(ST_LIST *pList);
/*
// Initial List
*/
void* DVB_LIST_Get_Obj(ST_NODE *pNode);
/*
// Get data of node from list
// ex. u16Temp = *(u16 *)DVB_LIST_Get_Obj(pNode);
*/
void DVB_LIST_Destory(ST_LIST *pList);
/*
// Destory list
*/
ST_NODE* DVB_LIST_Add(ST_LIST *pList, u32 u32ObjSize, void *pObj, CallBack_Free_List FreeListFun, EN_LIST_ADD_TYPE en_AddType);
ST_NODE* DVB_LIST_Operation_With_Two_Objs(ST_LIST *pList, CallBack_Feeding_Two_Objs Feeding_Fun, void *pSecondObj);
ST_NODE* DVB_LIST_GoTo_Head(ST_LIST *pList);
ST_NODE* DVB_LIST_GoTo_Nail(ST_LIST *pList);
void DVB_LIST_Delete_Current_Node(ST_LIST *pList);
void DVB_LIST_Delete_Nth_Node(ST_LIST *pList, u16 u16Nth);
/*
// パヘ玡List
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -