亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? list.h

?? 小型的操作系統開發的原代碼
?? H
字號:
//***********************************************************************/
//    Author                    : Garry
//    Original Date             : Aug,18 2005
//    Module Name               : LIST.H
//    Module Funciton           : 
//                                This module countains bi-direction list's definition and
//                                implementation code.
//    Last modified Author      :
//    Last modified Date        :
//    Last modified Content     :
//                                1.
//                                2.
//    Lines number              :
//***********************************************************************/

#ifndef __LIST_H__
#define __LIST_H__

BEGIN_DEFINE_OBJECT(__LIST_NODE)
    __LIST_NODE*    lpPrev;
    __LIST_NODE*    lpNext;
END_DEFINE_OBJECT()

//
//Initializes a list node,to form a ring list.
//
#define LIST_INIT(node) (node).lpPrev = &(node); \
    (node).lpNext = &(node);

//
//Check if the list node is an orphan,e.g.,it is the only
//element in the list.
//
#define LIST_NULL_NODE(nodeptr) \
    (((nodeptr) == (nodeptr)->lpNext) && ((nodeptr) == (nodeptr)->lpPrev))

//
//Add a list node in front of the list,as a stack.
//
__INLINE VOID ListAddHeader(__LIST_NODE* lpHdr,__LIST_NODE* lpEntry)
{
    if((NULL == lpHdr) || (NULL == lpEntry))  //Parameters check.
        return;
    lpEntry->lpNext = lpHdr->lpNext;
    lpEntry->lpPrev = lpHdr;
    lpHdr->lpNext->lpPrev = lpEntry;
    lpHdr->lpNext         = lpEntry;
}

//
//Add a list node at the tail of the list,like a queue.
//
__INLINE VOID ListAddTail(__LIST_NODE* lpHdr,__LIST_NODE* lpEntry)
{
    if((NULL == lpHdr) || (NULL == lpEntry)) //Parameters check.
        return;
    lpEntry->lpNext = lpHdr;
    lpEntry->lpPrev = lpHdr->lpPrev;
    lpHdr->lpPrev->lpNext = lpEntry;
    lpHdr->lpPrev         = lpEntry;
}

//
//Delete the node designated by lpEntry from list.
//
__INLINE VOID ListDelete(__LIST_NODE* lpEntry)
{
    if(NULL == lpEntry)  //Parameter check.
        return;
    if(LIST_NULL_NODE(lpEntry))  //This is a orphan node,e.g,this is the list header node.
        return;
    lpEntry->lpPrev->lpNext = lpEntry->lpNext;
    lpEntry->lpNext->lpPrev = lpEntry->lpPrev;
    LIST_INIT(*lpEntry);  //Initializes the deleted node to orphan node.
}

//
//Replace the old node with the new one.
//
__INLINE VOID ListReplace(__LIST_NODE* lpOld,__LIST_NODE* lpNew)
{
    if((NULL == lpOld) || (NULL == lpNew))  //Parameters check.
        return;
    lpNew->lpPrev = lpOld->lpPrev;
    lpNew->lpNext = lpOld->lpNext;
    lpOld->lpNext->lpPrev = lpNew;
    lpOld->lpPrev->lpNext = lpNew;
    LIST_INIT(*lpOld);    //Initializes the old one to an orphan.
}

//
//Get the first node,assume the lpHdr is the list's header.
//
__INLINE __LIST_NODE* ListGetHeader(__LIST_NODE* lpHdr)
{
    __LIST_NODE*    lpFirst = NULL;

    if(NULL == lpHdr)    //Parameter check.
        return NULL;
    if(LIST_NULL_NODE(lpHdr)) //The list is NULL.
        return NULL;
    lpFirst = lpHdr->lpNext;
    ListDelete(lpFirst);     //Delete this node from list.
    return lpFirst;
}

//
//Get the tail node,assume the lpHdr is the list's header.
//
__INLINE __LIST_NODE* ListGetTail(__LIST_NODE* lpHdr)
{
    __LIST_NODE*    lpLast  = NULL;

    if(NULL == lpHdr)    //Parameter check.
        return NULL;
    if(LIST_NULL_NODE(lpHdr)) //The list is NULL.
        return NULL;
    lpLast = lpHdr->lpPrev;
    ListDelete(lpLast);     //Delete this node from list.
    return lpLast;
}

//
//Get a member's offset of a object type.
//
#ifdef __I386
#define OFFSET_OF(type,member) \
    (DWORD)((DWORD)(&((type*)0x80000000)->(member)) - (DWORD)((type*)0x80000000))
#else
#define OFFSET_OF(type,member)
#endif

//
//The LIST_ENTRY macro gets the object associated with a list node.
//
#define LIST_ENTRY(nodeptr,type,member) \
    (type*)((DWORD)(nodeptr) - OFFSET_OF(type,member))

//
//This macro is used to iterate a list forward.
// pos   : __LIST_NODE* structure used as loop counter.
// lphdr : The target list's header element.
//
#define LIST_FOR_EACH(pos,lphdr) \
    for(pos = (lphdr)->lpNext;pos != (lphdr);pos = pos->lpNext)

//
//The macro is used to iterate a list backword.
// pos   : __LIST_NODE* structure used as loop counter.
// lphdr : List's header element,a pointer.
//
#define LIST_FOR_EACH_PREV(pos,lphdr) \
    for(pos = (lphdr)->lpPrev;pos != (lpHdr);pop = pos->lpPrev)

#endif    //End of LIST.H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天av天天翘天天综合网| 日韩视频免费观看高清在线视频| 韩国三级在线一区| 高清不卡一区二区| 欧美性感一区二区三区| 日韩一区二区在线观看视频 | 一二三区精品福利视频| 琪琪一区二区三区| 色狠狠色狠狠综合| 欧美韩日一区二区三区| 日本 国产 欧美色综合| av成人老司机| 2019国产精品| 麻豆免费精品视频| 精品视频在线看| 1024精品合集| 九九久久精品视频| 精品日韩在线观看| 亚洲福利视频一区| 欧美视频自拍偷拍| 亚洲精选视频在线| 北岛玲一区二区三区四区| 久久综合九色综合97婷婷女人| 婷婷六月综合亚洲| 欧美日韩激情一区| 一区二区国产盗摄色噜噜| 一本久久a久久精品亚洲| 久久精品一区四区| 97se狠狠狠综合亚洲狠狠| 综合色中文字幕| 91成人免费在线| 亚洲成人资源在线| 欧美精品 国产精品| 精品夜夜嗨av一区二区三区| 欧美成人bangbros| 国产电影一区二区三区| 国产精品国产三级国产aⅴ入口| 成人午夜电影小说| 亚洲成av人片| 久久久一区二区三区| 成a人片亚洲日本久久| 一区二区激情小说| 日本一区免费视频| 欧美美女喷水视频| 成人午夜av在线| 日本欧美一区二区在线观看| 日韩欧美久久久| 欧美吻胸吃奶大尺度电影| 欧美日韩精品一二三区| 亚洲青青青在线视频| 欧美精品在线观看一区二区| 成人一区二区三区中文字幕| 午夜精品福利一区二区蜜股av| 国产午夜精品理论片a级大结局 | 337p日本欧洲亚洲大胆色噜噜| 色88888久久久久久影院按摩| 日韩不卡一区二区| 亚洲卡通动漫在线| 国产精品久久久久久亚洲伦 | 无码av中文一区二区三区桃花岛| 久久夜色精品国产欧美乱极品| 在线电影院国产精品| 欧美在线看片a免费观看| av一本久道久久综合久久鬼色| 国内外成人在线| 国产主播一区二区三区| 久久精品理论片| 九一久久久久久| 顶级嫩模精品视频在线看| 另类欧美日韩国产在线| 美女mm1313爽爽久久久蜜臀| 亚洲国产sm捆绑调教视频 | 欧美国产精品一区二区| 国产精品欧美极品| 国产嫩草影院久久久久| 一色桃子久久精品亚洲| 亚洲成人在线观看视频| 日韩av网站免费在线| 天堂成人国产精品一区| 久88久久88久久久| av一本久道久久综合久久鬼色| 精品视频123区在线观看| 欧美成人综合网站| 综合激情网...| 毛片av中文字幕一区二区| 国产一区二区在线免费观看| 色综合久久久久综合| 精品国内片67194| 一区二区三区不卡在线观看| 国产一区二区在线免费观看| 欧美制服丝袜第一页| 一区在线观看视频| 经典三级一区二区| 91麻豆精品国产91久久久 | 欧美日韩精品二区第二页| 日本一区二区三区免费乱视频 | 欧美videossexotv100| 亚洲一区二区三区国产| 99久久免费国产| 欧美激情中文不卡| 成人小视频免费在线观看| 日韩欧美中文字幕一区| 亚洲成a人v欧美综合天堂下载| 91浏览器在线视频| 国产精品成人免费| 国产iv一区二区三区| 久久久久久亚洲综合影院红桃| 久久精品久久精品| 亚洲精品一区二区三区精华液| 天天av天天翘天天综合网色鬼国产 | 亚洲国产精品激情在线观看| 国产精品小仙女| 国产精品久久免费看| 欧美伊人久久大香线蕉综合69| 亚洲私人影院在线观看| 欧美精品乱人伦久久久久久| 国产91富婆露脸刺激对白| 久久久www成人免费毛片麻豆| 精品国产网站在线观看| 天天亚洲美女在线视频| 欧美一区二区播放| 激情伊人五月天久久综合| 尤物视频一区二区| 欧美一卡二卡在线| 国产呦萝稀缺另类资源| 亚洲三级电影网站| 日韩欧美在线网站| 国产乱妇无码大片在线观看| 国产精品久久久久久久久图文区 | 欧美一级精品大片| 成人教育av在线| 国内一区二区在线| 日韩国产一区二| 亚洲天堂网中文字| 久久久精品国产免费观看同学| 日韩一本二本av| 99久久99精品久久久久久| 国产一区日韩二区欧美三区| 亚洲人成7777| 亚洲欧洲精品天堂一级 | 日本欧美一区二区在线观看| 国产精品色哟哟| 精品久久国产老人久久综合| 欧美精选一区二区| 99久久综合国产精品| 国产九色精品成人porny| 天涯成人国产亚洲精品一区av| 亚洲欧美另类图片小说| 国产欧美一区二区三区在线老狼 | 久久精品国产精品青草| 青青草一区二区三区| 麻豆精品久久久| 久久电影网站中文字幕| 极品尤物av久久免费看| 国内成人精品2018免费看| 亚洲国产日日夜夜| 蜜桃视频在线一区| 美女国产一区二区三区| av影院午夜一区| 欧美日韩亚洲综合| 久久久久久久久久久黄色| 亚洲男女一区二区三区| 久久9热精品视频| thepron国产精品| 在线播放国产精品二区一二区四区| 日韩欧美国产一区在线观看| 欧美一级黄色大片| 成人免费在线视频| 午夜成人免费电影| 一本色道久久综合精品竹菊| 精品久久久久久久久久久久久久久久久 | 91精品91久久久中77777| 国产婷婷一区二区| 日日摸夜夜添夜夜添亚洲女人| 波多野洁衣一区| 欧美激情中文不卡| 日韩国产高清在线| 欧美性感一类影片在线播放| 久久老女人爱爱| 韩国v欧美v日本v亚洲v| 日韩欧美在线观看一区二区三区| 久久久国产一区二区三区四区小说| 黄色日韩网站视频| 日韩精品一区二区三区四区视频| 日韩精品乱码av一区二区| 精品视频在线视频| 蜜臀久久久99精品久久久久久| 日韩一区二区免费视频| 美女www一区二区| 日韩精品一区二区三区三区免费| 日韩精品乱码av一区二区| 精品区一区二区| 九一九一国产精品| 亚洲天堂久久久久久久| 欧美美女直播网站| 国产精品888| 亚洲第一二三四区| 国产清纯白嫩初高生在线观看91 | 国产精品不卡一区| 欧美三级电影精品|