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

📄 dvb_list.h

📁 DVB软件,基于CT216软件的开发源程序.
💻 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 + -