www.pudn.com > MessageQueue.zip > list.h
/*
This module declares a thread scheduling routine and some thread management routines.
Copyright (C) 2004 Liu Ge
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of 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 of
MERCHANTABILITY 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 License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef LIST_H_
#define LIST_H_
typedef struct tagIntListNode
{
int Data;
struct tagIntListNode * pNext;
}St_IntListNode, * P_IntListNode;
typedef struct tagIntList
{
P_IntListNode pFirst;
P_IntListNode pLast;
}St_IntList, * P_IntList;
#define List_init( list ) ( (list).pFirst = NULL, (list).pLast = NULL )
#define List_isEmpty( list ) ( !(list).pFirst )
#define List_getFirst( list ) ( (list).pFirst )
#define List_add( list, pNode ) \
if( List_isEmpty( list ) ) \
{ \
(list).pFirst = pNode; \
(list).pLast = pNode; \
} \
else\
{ \
(list).pFirst->pNext = pNode; \
(list).pLast = pNode; \
}
#define List_removeFirst( list ) \
if( !List_isEmpty( list ) ) \
{ \
(list).pFirst = (list).pFirst->pNext; \
if( !(list).pFirst ) \
{ \
(list).pLast = NULL; \
} \
}
#endif