📄 gen_list.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 + -