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

📄 chain.inl

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 INL
字号:
/*  macros/chain.h * *  This include file contains the bodies of the routines which are *  associated with doubly linked chains and inlined. * *  COPYRIGHT (c) 1989-1999. *  On-Line Applications Research Corporation (OAR). * *  The license and distribution terms for this file may be *  found in the file LICENSE in this distribution or at *  http://www.rtems.com/license/LICENSE. * *  $Id: chain.inl,v 1.9.6.1 2003/09/04 18:55:06 joel Exp $ */#ifndef __MACROS_CHAIN_h#define __MACROS_CHAIN_h/*PAGE * *  _Chain_Are_nodes_equal */#define _Chain_Are_nodes_equal( _left, _right ) \  ( (_left) == (_right) )/*PAGE * *  _Chain_Is_null */#define _Chain_Is_null( _the_chain ) \  ( (_the_chain) == NULL )/*PAGE * *  _Chain_Is_null_node */#define _Chain_Is_null_node( _the_node ) \  ( (_the_node) == NULL )/*PAGE * *  _Chain_Head */#define _Chain_Head( _the_chain ) \   ((Chain_Node *) (_the_chain))/*PAGE * *  _Chain_Tail */#define _Chain_Tail( _the_chain ) \   ((Chain_Node *) &(_the_chain)->permanent_null)/*PAGE * *  _Chain_Is_empty */#define _Chain_Is_empty( _the_chain ) \  ( (_the_chain)->first == _Chain_Tail( (_the_chain) ) )/*PAGE * *  _Chain_Is_first */#define _Chain_Is_first( _the_node ) \  ( (the_node)->previous == NULL )/*PAGE * *  _Chain_Is_last */#define _Chain_Is_last( _the_node ) \  ( (_the_node)->next == NULL )/*PAGE * *  _Chain_Has_only_one_node */#define _Chain_Has_only_one_node( _the_chain ) \  ( (_the_chain)->first == (_the_chain)->last )/*PAGE * *  _Chain_Is_head */#define _Chain_Is_head( _the_chain, _the_node ) \   ( (_the_node) == _Chain_Head( (_the_chain) ) )/*PAGE * *  _Chain_Is_tail */#define _Chain_Is_tail( _the_chain, _the_node ) \   ( (_the_node) == _Chain_Tail( (_the_chain) ) )/*PAGE * *  Chain_Initialize_empty */#define _Chain_Initialize_empty( _the_chain ) \{ \  (_the_chain)->first          = _Chain_Tail( (_the_chain) ); \  (_the_chain)->permanent_null = NULL; \  (_the_chain)->last           = _Chain_Head( (_the_chain) ); \}/*PAGE * *  _Chain_Extract_unprotected */#define _Chain_Extract_unprotected( _the_node ) \{ \  Chain_Node *_next; \  Chain_Node *_previous; \   \  _next           = (_the_node)->next; \  _previous       = (_the_node)->previous; \  _next->previous = _previous; \  _previous->next = _next; \}/*PAGE * *  _Chain_Get_unprotected *//*PAGE * *  Chain_Get_unprotected */#define _Chain_Get_unprotected( _the_chain ) \  (( !_Chain_Is_empty( (_the_chain) ) ) \    ? _Chain_Get_first_unprotected( (_the_chain) ) \    : NULL)/*PAGE * *  _Chain_Insert_unprotected */#define _Chain_Insert_unprotected( _after_node, _the_node ) \do {  \  Chain_Node *_before_node; \   \  (_the_node)->previous  = (_after_node); \  _before_node           = (_after_node)->next; \  (_after_node)->next    = (_the_node);  \  (_the_node)->next      = _before_node;  \  _before_node->previous = (_the_node);  \} while (0)/*PAGE * *  _Chain_Append_unprotected */#define _Chain_Append_unprotected( _the_chain, _the_node ) \{ \  Chain_Node *_old_last_node; \    \  (_the_node)->next     = _Chain_Tail( (_the_chain) ); \  _old_last_node        = (_the_chain)->last; \  (_the_chain)->last    = (_the_node); \  _old_last_node->next  = (_the_node); \  (_the_node)->previous = _old_last_node; \}/*PAGE * *  _Chain_Prepend_unprotected */#define _Chain_Prepend_unprotected( _the_chain, _the_node ) \  _Chain_Insert_unprotected( _Chain_Head( (_the_chain) ), (_the_node) )/*PAGE * *  _Chain_Prepend */#define _Chain_Prepend( _the_chain, _the_node ) \  _Chain_Insert( _Chain_Head( (_the_chain) ), (_the_node) )#endif/* end of include file */

⌨️ 快捷键说明

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