|
|
|
|
/************************************************************************
|
|
|
|
|
*
|
|
|
|
|
* Copyright (C) 2003-2004
|
|
|
|
|
* Shenzhen SCADA Control Technology Co., Ltd.
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* ʵ<EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2004/01/10
|
|
|
|
|
*
|
|
|
|
|
* $Id: list_entry.cpp,v 1.1.1.1 2006/07/05 07:31:43 jehu Exp $
|
|
|
|
|
*
|
|
|
|
|
***********************************************************************/
|
|
|
|
|
|
|
|
|
|
#include <sys/types.h>
|
|
|
|
|
|
|
|
|
|
#include "list_entry.h"
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* ˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
void Initialize_list_head ( list_entry_t * plist_head )
|
|
|
|
|
{
|
|
|
|
|
plist_head->flink = plist_head->blink = plist_head;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD>ж<EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* \retval 0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* \retval <EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
int is_list_empty ( list_entry_t * plist_head )
|
|
|
|
|
{
|
|
|
|
|
return (int)(plist_head->flink == plist_head);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD>ϵ
|
|
|
|
|
*/
|
|
|
|
|
list_entry_t * remove_head_list ( list_entry_t * plist_head )
|
|
|
|
|
{
|
|
|
|
|
list_entry_t * pHeadEntry = plist_head->flink;
|
|
|
|
|
remove_entry_list ( plist_head->flink );
|
|
|
|
|
return pHeadEntry;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD>ϵ
|
|
|
|
|
*/
|
|
|
|
|
list_entry_t * remove_tail_list ( list_entry_t * plist_head )
|
|
|
|
|
{
|
|
|
|
|
list_entry_t * pHeadEntry = plist_head->blink;
|
|
|
|
|
remove_entry_list ( plist_head->blink );
|
|
|
|
|
return pHeadEntry;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD>ϵ
|
|
|
|
|
*/
|
|
|
|
|
void remove_entry_list ( list_entry_t * pEntry )
|
|
|
|
|
{
|
|
|
|
|
list_entry_t * _EX_Blink = (list_entry_t *)0;
|
|
|
|
|
list_entry_t * _EX_Flink = (list_entry_t *)0;
|
|
|
|
|
|
|
|
|
|
_EX_Flink = pEntry->flink;
|
|
|
|
|
_EX_Blink = pEntry->blink;
|
|
|
|
|
_EX_Blink->flink = _EX_Flink;
|
|
|
|
|
_EX_Flink->blink = _EX_Blink;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ش<EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵽˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
void insert_tail_list ( list_entry_t * plist_head, list_entry_t * pEntry )
|
|
|
|
|
{
|
|
|
|
|
list_entry_t * _EX_Blink = (list_entry_t *)0;
|
|
|
|
|
list_entry_t * _EX_ListHead = (list_entry_t *)0;
|
|
|
|
|
|
|
|
|
|
_EX_ListHead = plist_head;
|
|
|
|
|
_EX_Blink = _EX_ListHead->blink;
|
|
|
|
|
pEntry->flink = _EX_ListHead;
|
|
|
|
|
pEntry->blink = _EX_Blink;
|
|
|
|
|
_EX_Blink->flink = pEntry;
|
|
|
|
|
_EX_ListHead->blink = pEntry;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ش<EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵽˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
void insert_head_list ( list_entry_t * plist_head, list_entry_t * pEntry)
|
|
|
|
|
{
|
|
|
|
|
list_entry_t * _EX_Flink = (list_entry_t *)0;
|
|
|
|
|
list_entry_t * _EX_ListHead = (list_entry_t *)0;
|
|
|
|
|
|
|
|
|
|
_EX_ListHead = plist_head;
|
|
|
|
|
_EX_Flink = _EX_ListHead->flink;
|
|
|
|
|
pEntry->flink = _EX_Flink;
|
|
|
|
|
pEntry->blink = _EX_ListHead;
|
|
|
|
|
_EX_Flink->blink = pEntry;
|
|
|
|
|
_EX_ListHead->flink = pEntry;
|
|
|
|
|
}
|