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

📄 btlist.h

📁 BlueTooth SDK Source Code! I hope that everybody like it.
💻 H
字号:
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Module Name:
    btlist.h
Abstract:
	This file includes the definition for thread safe list.
Author:
    Gang He
Revision History:2000.2
---------------------------------------------------------------------------*/

#ifndef BT_LIST_H
#define BT_LIST_H

struct BtList {
	UCHAR *			head;		/* head of the list*/
	UCHAR *			tail;		/* tail of the list*/
	INT16			number;		/* number of members in the list*/
	WORD			len;		/* member data length*/
	SYSTEM_LOCK		lock;		/* lock for the list*/
};
struct NewBtList {
	UCHAR *			head;		/* head of the list*/
	UCHAR *			tail;		/* tail of the list*/
	INT16			number;		/* number of members in the list*/
	WORD			len;		/* member data length*/
};

/*internal functions*/
#ifdef CONFIG_MEMORY_LEAK_DETECT
struct BtList * DBG_BtListNew(WORD len, UCHAR type,char* filename, int line);
UCHAR *	DBG_BtListMemberNew(WORD len, char* filename, int line);
#define BtListNew2(A,T) DBG_BtListNew(A,T, __FILE__, __LINE__)
#else
struct BtList * BtListNew2(WORD len,UCHAR type);
#endif
UCHAR BtListFree2(struct BtList * list,UCHAR type);
void AddHead2(struct BtList * list, UCHAR * data,UCHAR type);
void AddTail2(struct BtList * list, UCHAR * data,UCHAR type);
void InsertAt2(struct BtList * list, UCHAR * pos, UCHAR * data ,UCHAR type);
UCHAR * Find2(struct BtList * list,UCHAR * data, UCHAR len, UCHAR type);
UCHAR * GetHead2(struct BtList * list,UCHAR type);
UCHAR * GetTail2(struct BtList * list,UCHAR type);
UCHAR * RemoveHead2(struct BtList * list,UCHAR type);
UCHAR * RemoveTail2(struct BtList * list,UCHAR type);
UCHAR * RemoveAt2(struct BtList * list, UCHAR * pos,UCHAR type);
void RemoveAll2(struct BtList * list ,UCHAR type);

/*Export functions */
#ifdef CONFIG_MEMORY_LEAK_DETECT
#define BtListMemberNew(A) DBG_BtListMemberNew(A, __FILE__, __LINE__)
#else
UCHAR *	BtListMemberNew(WORD len);
#endif

#define BtListMemberFree FREE
#define Count(list) list->number
#define NEXT(s) (*((ULONG *)s+((list->len+sizeof(ULONG *)-1)>>PTR_BITS)))
				/*				~~~~~~~~~~~~~~~~~~~~~~~~~~~~ end of data, align to 4 bytes*/
#define PREV(s) (*((ULONG *)s+((list->len+sizeof(UCHAR *)+sizeof(ULONG *)-1)>>PTR_BITS)))
#define NEXT_MEM(l,m) (*((ULONG *)m+((l->len+sizeof(ULONG *)-1)>>PTR_BITS)))
#define PREV_MEM(l,m) (*((ULONG *)m+((l->len+sizeof(UCHAR *)+sizeof(ULONG *)-1)>>PTR_BITS)))

UCHAR BtInlist(struct BtList * list, UCHAR * pos);

#define OLD_LIST		0
#define NEW_LIST		1

/*for old list, (with lock)*/
#define BtListNew(l)	BtListNew2(l,OLD_LIST)
#define BtListFree(l)	BtListFree2(l,OLD_LIST)
#define AddHead(l,d)	AddHead2(l,d,OLD_LIST)
#define AddTail(l,d)	AddTail2(l,d,OLD_LIST)
#define InsertAt(l,p,d)	InsertAt2(l,p,d,OLD_LIST)
#define Find(l,d,le)	Find2(l,d,le,OLD_LIST)
#define GetHead(l)		GetHead2(l,OLD_LIST)
#define GetTail(l)		GetTail2(l,OLD_LIST)
#define RemoveHead(l)	RemoveHead2(l,OLD_LIST)
#define RemoveTail(l)	RemoveTail2(l,OLD_LIST)
#define RemoveAt(l,d)	RemoveAt2(l,d,OLD_LIST)
#define RemoveAll(l)	RemoveAll2(l,OLD_LIST)

/*for new list, (no lock)*/
#define BtNewListNew(l)			BtListNew2(l,NEW_LIST)
#define BtNewListFree(l)		BtListFree2(l,NEW_LIST)
#define NewListAddHead(l,d)		AddHead2(l,d,NEW_LIST)
#define NewListAddTail(l,d)		AddTail2(l,d,NEW_LIST)
#define NewListInsertAt(l,p,d)	InsertAt2(l,p,d,NEW_LIST)
#define NewListFind(l,d,le)		Find2(l,d,le,NEW_LIST)
#define NewListGetHead(l)		GetHead2(l,NEW_LIST)
#define NewListGetTail(l)		GetTail2(l,NEW_LIST)
#define NewListRemoveHead(l)	RemoveHead2(l,NEW_LIST)
#define NewListRemoveTail(l)	RemoveTail2(l,NEW_LIST)
#define NewListRemoveAt(l,d)	RemoveAt2(l,d,NEW_LIST)
#define NewListRemoveAll(l)		RemoveAll2(l,NEW_LIST)

#define NewRemoveHead(l)		NewListRemoveHead(l)
#define NewRemoveTail(l)		NewListRemoveTail(l)
#define NewRemoveAt(l,d)		NewListRemoveAt(l,d)
#define NewAddHead(l,d)			NewListAddHead(l,d)
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -