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

📄 asn1p_list.h

📁 RSA加密/解密算法源码 asn1c-0.9.12
💻 H
字号:
/* * Singly linked tail queue support. */#ifndef	ASN1_PARSER_LIST_H#define	ASN1_PARSER_LIST_H#define	TQ_HEAD(type)					\	struct {					\		type *tq_head;				\		type**tq_tail;				\	}#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;				\	}#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)/* * 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; })#endif	/* ASN1_PARSER_LIST_H */

⌨️ 快捷键说明

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