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

📄 asn1p_list.h

📁 ASN.1解析解码工具,可以解析各种ASN.1格式的文件,并对相应的BER文件解码
💻 H
字号:
#include <stddef.h>/** Singly linked tail queue support.*/#ifndef	ASN1_PARSER_LIST_C_H#define	ASN1_PARSER_LIST_C_Htypedef struct tq_head_s
{
	void *tq_head;
	void **tq_tail;
}tq_head_t;
typedef struct tq_entry_s
{
	void *tq_next;
}tq_entry_t;
#define	TQ_HEAD(type) \struct {					\	type *tq_head;				\	type**tq_tail;				\}typedef TQ_HEAD(void) tq_void_head_t;#define	TQ_MOVE(to, from)	do {			\	if(&(TQ_FIRST(from)) == (from)->tq_tail) {	\	TQ_INIT(to);				\	} else {					\	(to)->tq_head = (from)->tq_head;	\	(to)->tq_tail = (from)->tq_tail;	\	}						\	TQ_INIT(from);					\} while(0)#define	TQ_ENTRY(type)	\struct {					\	type *tq_next;				\}typedef TQ_ENTRY(void) tq_void_entry_t;#define TQ_FIRST(headp)		((headp)->tq_head)#define TQ_NEXT(el, field)	((el)->field.tq_next)#define TQ_INIT(head) do {				\	TQ_FIRST((head)) = 0;				\	(head)->tq_tail = &TQ_FIRST((head));		\} while(0)#define	TQ_FOR(var, head, field)			\	for((var) = TQ_FIRST((head));			\	(var); (var) = TQ_NEXT((var), field))/* MSVC does not have typeof(), cannot prevent side effects! */#define	TQ_ADD(head, xel, field) do {			\	typeof(xel) __el = (xel);			\	assert(TQ_NEXT((__el), field) == 0);		\	*(head)->tq_tail = (__el);			\	(head)->tq_tail = &TQ_NEXT((__el), field);	\} while(0)#define	TQ_ADD_TYPE(_type,head, xel, field) do {			\	_type *__el = (xel);			\	assert(TQ_NEXT((__el), field) == 0);		\	*(head)->tq_tail = (__el);			\	(head)->tq_tail = &TQ_NEXT((__el), field);	\} while(0)/** Remove the first element and return it.*/#define	TQ_REMOVE(head, field)	({			\	typeof(TQ_FIRST((head))) __fel;			\	__fel = TQ_FIRST((head));			\	if(__fel == 0					\	|| (TQ_FIRST((head)) = TQ_NEXT(__fel, field))	\	== 0) {					\	(head)->tq_tail = &TQ_FIRST((head));	\} else {					\	TQ_NEXT(__fel, field) = 0;		\}						\	__fel; })#define TQ_REMOVE_TYPE(_type,head,field) ((_type*) \	asn1p_list_remove( (tq_void_head_t*)(head),offsetof(_type,field) ))void* asn1p_list_remove(tq_void_head_t* head,size_t offset);#endif	/* ASN1_PARSER_LIST_H */

⌨️ 快捷键说明

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