ll_man.h

来自「An interactive water fountain. A realis」· C头文件 代码 · 共 78 行

H
78
字号
/*Copyright (C) 1994-1995 Apogee Software, Ltd.This program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the GNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)*//**********************************************************************   module: LL_MAN.H   author: James R. Dose   date:   February 4, 1994   Public header for LL_MAN.C.  Linked list management routines.   (c) Copyright 1994 James R. Dose.  All Rights Reserved.**********************************************************************/#ifndef __LL_MAN_H#define __LL_MAN_H#include "compat.h"enum LL_Errors   {   LL_Warning = -2,   LL_Error   = -1,   LL_Ok      = 0   };typedef struct list   {   void *start;   void *end;   } list;void LL_AddNode( char *node, char **head, char **tail, int32_t next, int32_t prev );void LL_RemoveNode( char *node, char **head, char **tail, int32_t next, int32_t prev );#define LL_AddToHead( type, listhead, node )         \    LL_AddNode( ( char * )( node ),                  \                ( char ** )&( ( listhead )->start ), \                ( char ** )&( ( listhead )->end ),   \                ( int32_t )&( ( type * ) 0 )->next,      \                ( int32_t )&( ( type * ) 0 )->prev )#define LL_AddToTail( type, listhead, node )         \    LL_AddNode( ( char * )( node ),                  \                ( char ** )&( ( listhead )->end ),   \                ( char ** )&( ( listhead )->start ), \                ( int32_t )&( ( type * ) 0 )->prev,      \                ( int32_t )&( ( type * ) 0 )->next )#define LL_Remove( type, listhead, node )               \    LL_RemoveNode( ( char * )( node ),                  \                   ( char ** )&( ( listhead )->start ), \                   ( char ** )&( ( listhead )->end ),   \                   ( int32_t )&( ( type * ) 0 )->next,      \                   ( int32_t )&( ( type * ) 0 )->prev )#define LL_NextNode( node )     ( ( node )->next )#define LL_PreviousNode( node ) ( ( node )->prev )#endif

⌨️ 快捷键说明

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