libevent-キュー

queue.hは、5つのデータ構造を定義しています。

1.Singlyにリンクされたリスト:リストの方法、使用中に、構造、例えばのSLIST_ENTRY独自の定義の中に埋め込まれました

/ * 
 *片方向リンクリストの定義。
 * / 
の#define SLIST_HEAD(名前、タイプ)\の
 構造体名{\の
     構造体のタイプ* slh_first。    / * 最初の要素* /             \ 
} 

の#define     SLIST_HEAD_INITIALIZER(ヘッド)\ 
    {NULL} 

WIN32 #ifndefの
に#define SLIST_ENTRY(タイプ)\の
 構造体{\の
     構造体のタイプ* sle_next。    / * 次の要素* /             \ 
} 
#endifの

/ * 
 *片方向リンクリストのアクセス方法。
 * / 
の#define     SLIST_FIRST(ヘッド)((ヘッド) - > slh_first)
 の#define     SLIST_END(ヘッド)のNULL
 の#define     SLIST_EMPTY(ヘッド)(SLIST_FIRST(ヘッド)== SLIST_END(ヘッド))
 の#define     SLIST_NEXT(ニレ、フィールド() (ニレ) - > field.sle_next)の#define     SLIST_FOREACH(VAR、頭、フィールド)、\
     のための((VAR)= SLIST_FIRST(ヘッド); \ VAR)=!SLIST_END(ヘッド); \ VAR)= SLIST_NEXT(VAR 、フィールド))/ *




 *片方向リンクリスト機能。
 * / 
の#define     SLIST_INIT(ヘッド){\ 
    SLIST_FIRST(ヘッド) = SLIST_END(ヘッド)\ 
} 

の#define     SLIST_INSERT_AFTER(slistelm、ニレ、フィールド)を実行{\ 
    (ELM) - > field.sle_next =(slistelm) - > field.sle_next。\ 
    (slistelm) - > field.sle_next = (ELM)。\ 
} ながら0 

の#define     SLIST_INSERT_HEAD(ヘッド、ニレ、フィールド)を実行{\ 
    (ELM) - > field.sle_next =(ヘッド) - > slh_first。\ 
    (ヘッド)- > slh_first = (ELM)。\ 
} ながら0 

の#define     SLIST_REMOVE_HEAD(頭、フィールド)を実行{\ ヘッド) - > slh_first =(ヘッド) - > slh_first-> field.sle_next。\ 
} ながら0

 

おすすめ

転載: www.cnblogs.com/ajpslcwds/p/10967814.html