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

📄 gen_list.h

📁 ICCP Toolkit 是在 Tru64下开发Tase.2通信协议的开发包
💻 H
字号:
/************************************************************************//* SISCO SOFTWARE MODULE HEADER *****************************************//************************************************************************//*   (c) Copyright Systems Integration Specialists Company, Inc.,       *//*	   1988-2000, All Rights Reserved   				*//*									*//* MODULE NAME : gen_list.h						*//* PRODUCT(S)  : General Use						*//*									*//* MODULE DESCRIPTION :                                                 *//*	This module contains the definitions as required for 		*//*	manipulation of double-linked circular lists			*//*									*//* MODIFICATION LOG :                                                   *//*  Date     Who   Rev      Comments                                    *//* --------  ---  ------   -------------------------------------------  *//* 04/20/00  JRB     03    Del (ST_VOID **) protos. ANSI doesn't like.	*//* 10/09/98  JRB     02    Add list_find_prev, list_find_last.		*//* 08/25/98  EJV     01    Use non-relaxed protos for __hpux.		*//* 04/02/97  DTL   7.00    MMSEASE 7.0 release. See MODL70.DOC for	*//*			   history.					*//************************************************************************/#ifndef GEN_LIST_INCLUDED#define GEN_LIST_INCLUDED#ifdef __cplusplusextern "C" {#endif/*#define FASTLIST *//************************************************************************//* LINKED LIST MECHANISM						*//************************************************************************//* This following structure is used in all doubly linked circular lists *//* as the first component in the structure.  This allows one set of list*//* manipulation primitives to be used with any linked structure		*//* containing it.							*/typedef struct dbl_lnk  {  struct dbl_lnk *next;  struct dbl_lnk *prev;  } DBL_LNK;/************************************************************************//* The variable below can be used to do integrity checking of any list	*//* manipulated in the generic queuing functions by setting it to SD_TRUE	*/extern ST_BOOLEAN list_debug_sel;/* For compatibility with older code only				*/#define list_sLogCtrl sLogCtrl/************************************************************************/#ifdef FASTLIST#define list_get_next(h,p)  (((DBL_LNK *)p)->next == (DBL_LNK *)h ? NULL : ((DBL_LNK *)p)->next) #define list_get_first(h)   *(h);list_unlink (h,*h)#else/* NOTE: I_AM_THE_TRUE_GEN_LIST is only defined in the module 		*//* genlists.c so it will compile.					*/#if defined(I_AM_THE_TRUE_GEN_LIST)ST_VOID *list_get_first (DBL_LNK **);		ST_VOID *list_get_next  (DBL_LNK *, DBL_LNK *);#elseST_VOID *list_get_first (ST_VOID *);		ST_VOID *list_get_next (ST_VOID *, ST_VOID *);#endif#endif	/* FASTLIST *//************************************************************************//* Primitive functions for generic queue handling			*/#if defined(I_AM_THE_TRUE_GEN_LIST)ST_RET	list_unlink         (DBL_LNK **, DBL_LNK *);ST_RET	list_add_first      (DBL_LNK **, DBL_LNK *);ST_RET	list_add_last       (DBL_LNK **, DBL_LNK *);	ST_RET 	list_move_to_first  (DBL_LNK **, DBL_LNK **, DBL_LNK *);ST_RET 	list_find_node      (DBL_LNK *,  DBL_LNK *);ST_RET 	list_add_node_after (DBL_LNK *,  DBL_LNK *);ST_INT  list_get_sizeof     (DBL_LNK *);ST_VOID *list_get_last       (DBL_LNK **);#else/* NOTE: these prototypes provide very little argument type checking.	*//* They allow you to pass almost any argument without casting.		*//* ANSI compilers automatically cast the arguments to (ST_VOID *).	*//*   This is not a great loss, because if the "real" prototypes were	*//* used, most code would have to cast arguments to (DBL_LNK *) or	*//* (DBL_LNK **), which would disable the argument type checking anyway.	*/ST_RET	list_unlink         (ST_VOID *pphol, ST_VOID *pnode);ST_RET	list_add_first      (ST_VOID *pphol, ST_VOID *pnode);ST_RET	list_add_last       (ST_VOID *pphol, ST_VOID *pnode);	ST_RET 	list_move_to_first  (ST_VOID *pphol1, ST_VOID *pphol2, ST_VOID *pnode);ST_RET 	list_find_node      (ST_VOID *pphol, ST_VOID *pnode);ST_RET 	list_add_node_after (ST_VOID *pnode1, ST_VOID *pnode2);ST_INT	list_get_sizeof     (ST_VOID *phol);ST_VOID   *list_get_last       (ST_VOID *pphol);#endif/* New functions. Abandon the "I_AM_THE_TRUE_GEN_LIST" casting business.*/DBL_LNK *list_find_prev (DBL_LNK *list_head_ptr, DBL_LNK *cur_node);DBL_LNK *list_find_last (DBL_LNK *list_head_ptr);#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

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