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

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

?? wxlist.h

?? 用DirectX制作高級動畫-[Advanced.Animation.with.DirectX]
?? H
?? 第 1 頁 / 共 2 頁
字號:
        }
        CNode *pn = (CNode *) pos;
        return (POSITION) pn->Prev();
    } //Prev


    /* Return the first position in *this which holds the given
       pointer.  Return NULL if the pointer was not not found.
    */
protected:
    POSITION FindI( void * pObj) const;

    /* Remove the first node in *this (deletes the pointer to its
       object from the list, does not free the object itself).
       Return the pointer to its object.
       If *this was already empty it will harmlessly return NULL.
    */
    void *RemoveHeadI();


    /* Remove the last node in *this (deletes the pointer to its
       object from the list, does not free the object itself).
       Return the pointer to its object.
       If *this was already empty it will harmlessly return NULL.
    */
    void *RemoveTailI();


    /* Remove the node identified by p from the list (deletes the pointer
       to its object from the list, does not free the object itself).
       Asking to Remove the object at NULL will harmlessly return NULL.
       Return the pointer to the object removed.
    */
    void *RemoveI(POSITION p);

    /* Add single object *pObj to become a new last element of the list.
       Return the new tail position, NULL if it fails.
       If you are adding a COM objects, you might want AddRef it first.
       Other existing POSITIONs in *this are still valid
    */
    POSITION AddTailI(void * pObj);
public:


    /* Add all the elements in *pList to the tail of *this.
       This duplicates all the nodes in *pList (i.e. duplicates
       all its pointers to objects).  It does not duplicate the objects.
       If you are adding a list of pointers to a COM object into the list
       it's a good idea to AddRef them all  it when you AddTail it.
       Return TRUE if it all worked, FALSE if it didn't.
       If it fails some elements may have been added.
       Existing POSITIONs in *this are still valid

       If you actually want to MOVE the elements, use MoveToTail instead.
    */
    BOOL AddTail(CBaseList *pList);


    /* Mirror images of AddHead: */

    /* Add single object to become a new first element of the list.
       Return the new head position, NULL if it fails.
       Existing POSITIONs in *this are still valid
    */
protected:
    POSITION AddHeadI(void * pObj);
public:

    /* Add all the elements in *pList to the head of *this.
       Same warnings apply as for AddTail.
       Return TRUE if it all worked, FALSE if it didn't.
       If it fails some of the objects may have been added.

       If you actually want to MOVE the elements, use MoveToHead instead.
    */
    BOOL AddHead(CBaseList *pList);


    /* Add the object *pObj to *this after position p in *this.
       AddAfter(NULL,x) adds x to the start - equivalent to AddHead
       Return the position of the object added, NULL if it failed.
       Existing POSITIONs in *this are undisturbed, including p.
    */
protected:
    POSITION AddAfterI(POSITION p, void * pObj);
public:

    /* Add the list *pList to *this after position p in *this
       AddAfter(NULL,x) adds x to the start - equivalent to AddHead
       Return TRUE if it all worked, FALSE if it didn't.
       If it fails, some of the objects may be added
       Existing POSITIONs in *this are undisturbed, including p.
    */
    BOOL AddAfter(POSITION p, CBaseList *pList);


    /* Mirror images:
       Add the object *pObj to this-List after position p in *this.
       AddBefore(NULL,x) adds x to the end - equivalent to AddTail
       Return the position of the new object, NULL if it fails
       Existing POSITIONs in *this are undisturbed, including p.
    */
    protected:
    POSITION AddBeforeI(POSITION p, void * pObj);
    public:

    /* Add the list *pList to *this before position p in *this
       AddAfter(NULL,x) adds x to the start - equivalent to AddHead
       Return TRUE if it all worked, FALSE if it didn't.
       If it fails, some of the objects may be added
       Existing POSITIONs in *this are undisturbed, including p.
    */
    BOOL AddBefore(POSITION p, CBaseList *pList);


    /* Note that AddAfter(p,x) is equivalent to AddBefore(Next(p),x)
       even in cases where p is NULL or Next(p) is NULL.
       Similarly for mirror images etc.
       This may make it easier to argue about programs.
    */



    /* The following operations do not copy any elements.
       They move existing blocks of elements around by switching pointers.
       They are fairly efficient for long lists as for short lists.
       (Alas, the Count slows things down).

       They split the list into two parts.
       One part remains as the original list, the other part
       is appended to the second list.  There are eight possible
       variations:
       Split the list {after/before} a given element
       keep the {head/tail} portion in the original list
       append the rest to the {head/tail} of the new list.

       Since After is strictly equivalent to Before Next
       we are not in serious need of the Before/After variants.
       That leaves only four.

       If you are processing a list left to right and dumping
       the bits that you have processed into another list as
       you go, the Tail/Tail variant gives the most natural result.
       If you are processing in reverse order, Head/Head is best.

       By using NULL positions and empty lists judiciously either
       of the other two can be built up in two operations.

       The definition of NULL (see Next/Prev etc) means that
       degenerate cases include
          "move all elements to new list"
          "Split a list into two lists"
          "Concatenate two lists"
          (and quite a few no-ops)

       !!WARNING!! The type checking won't buy you much if you get list
       positions muddled up - e.g. use a POSITION that's in a different
       list and see what a mess you get!
    */

    /* Split *this after position p in *this
       Retain as *this the tail portion of the original *this
       Add the head portion to the tail end of *pList
       Return TRUE if it all worked, FALSE if it didn't.

       e.g.
          foo->MoveToTail(foo->GetHeadPosition(), bar);
              moves one element from the head of foo to the tail of bar
          foo->MoveToTail(NULL, bar);
              is a no-op, returns NULL
          foo->MoveToTail(foo->GetTailPosition, bar);
              concatenates foo onto the end of bar and empties foo.

       A better, except excessively long name might be
           MoveElementsFromHeadThroughPositionToOtherTail
    */
    BOOL MoveToTail(POSITION pos, CBaseList *pList);


    /* Mirror image:
       Split *this before position p in *this.
       Retain in *this the head portion of the original *this
       Add the tail portion to the start (i.e. head) of *pList

       e.g.
          foo->MoveToHead(foo->GetTailPosition(), bar);
              moves one element from the tail of foo to the head of bar
          foo->MoveToHead(NULL, bar);
              is a no-op, returns NULL
          foo->MoveToHead(foo->GetHeadPosition, bar);
              concatenates foo onto the start of bar and empties foo.
    */
    BOOL MoveToHead(POSITION pos, CBaseList *pList);


    /* Reverse the order of the [pointers to] objects in *this
    */
    void Reverse();


    /* set cursor to the position of each element of list in turn  */
    #define TRAVERSELIST(list, cursor)               \
    for ( cursor = (list).GetHeadPosition()           \
        ; cursor!=NULL                               \
        ; cursor = (list).Next(cursor)                \
        )


    /* set cursor to the position of each element of list in turn
       in reverse order
    */
    #define REVERSETRAVERSELIST(list, cursor)        \
    for ( cursor = (list).GetTailPosition()           \
        ; cursor!=NULL                               \
        ; cursor = (list).Prev(cursor)                \
        )

}; // end of class declaration

template<class OBJECT> class CGenericList : public CBaseList
{
public:
    CGenericList(TCHAR *pName,
                 INT iItems,
                 BOOL bLock = TRUE,
                 BOOL bAlert = FALSE) :
                     CBaseList(pName, iItems) {
        UNREFERENCED_PARAMETER(bAlert);
        UNREFERENCED_PARAMETER(bLock);
    };
    CGenericList(TCHAR *pName) :
                     CBaseList(pName) {
    };

    POSITION GetHeadPosition() const { return (POSITION)m_pFirst; }
    POSITION GetTailPosition() const { return (POSITION)m_pLast; }
    int GetCount() const { return m_Count; }

    OBJECT *GetNext(POSITION& rp) const { return (OBJECT *) GetNextI(rp); }

    OBJECT *Get(POSITION p) const { return (OBJECT *) GetI(p); }
    OBJECT *GetHead() const  { return Get(GetHeadPosition()); }

    OBJECT *RemoveHead() { return (OBJECT *) RemoveHeadI(); }

    OBJECT *RemoveTail() { return (OBJECT *) RemoveTailI(); }

    OBJECT *Remove(POSITION p) { return (OBJECT *) RemoveI(p); }
    POSITION AddBefore(POSITION p, OBJECT * pObj) { return AddBeforeI(p, pObj); }
    POSITION AddAfter(POSITION p, OBJECT * pObj)  { return AddAfterI(p, pObj); }
    POSITION AddHead(OBJECT * pObj) { return AddHeadI(pObj); }
    POSITION AddTail(OBJECT * pObj)  { return AddTailI(pObj); }
    BOOL AddTail(CGenericList<OBJECT> *pList)
            { return CBaseList::AddTail((CBaseList *) pList); }
    BOOL AddHead(CGenericList<OBJECT> *pList)
            { return CBaseList::AddHead((CBaseList *) pList); }
    BOOL AddAfter(POSITION p, CGenericList<OBJECT> *pList)
            { return CBaseList::AddAfter(p, (CBaseList *) pList); };
    BOOL AddBefore(POSITION p, CGenericList<OBJECT> *pList)
            { return CBaseList::AddBefore(p, (CBaseList *) pList); };
    POSITION Find( OBJECT * pObj) const { return FindI(pObj); }
}; // end of class declaration



/* These define the standard list types */

typedef CGenericList<CBaseObject> CBaseObjectList;
typedef CGenericList<IUnknown> CBaseInterfaceList;

#endif /* __WXLIST__ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩影视精彩在线| 久久影院电视剧免费观看| 国产中文一区二区三区| 秋霞成人午夜伦在线观看| 一级中文字幕一区二区| 亚洲人成人一区二区在线观看| 国产精品久久久一本精品| 国产精品你懂的在线| 国产精品久久久久久亚洲伦| 中文字幕一区视频| 亚洲人午夜精品天堂一二香蕉| 亚洲视频综合在线| 亚洲福利一二三区| 青青草国产精品亚洲专区无| 精品午夜一区二区三区在线观看 | 久久人人97超碰com| 精品国免费一区二区三区| 欧美videofree性高清杂交| 精品日韩一区二区三区免费视频| 日韩精品一区二区三区swag| 久久久久亚洲蜜桃| 亚洲自拍欧美精品| 亚洲午夜国产一区99re久久| 日韩精品欧美精品| 国产黄色精品视频| 色综合久久天天| 欧美一区日本一区韩国一区| 精品播放一区二区| 亚洲丝袜美腿综合| 免费观看在线综合| av在线这里只有精品| 欧美在线免费视屏| 精品少妇一区二区三区免费观看| 国产视频一区不卡| 亚洲bt欧美bt精品777| 久久国产尿小便嘘嘘尿| 99re8在线精品视频免费播放| 一道本成人在线| 欧美变态凌虐bdsm| 一区二区三区日韩精品视频| 人人超碰91尤物精品国产| 成人晚上爱看视频| 日韩美女一区二区三区四区| 国产精品久久久久久久久免费丝袜 | 午夜视频一区二区| 国产69精品一区二区亚洲孕妇| 色综合天天综合网天天狠天天| 欧美精品第1页| 自拍偷拍欧美精品| 精品一区二区三区免费| 欧美性猛片aaaaaaa做受| 久久嫩草精品久久久精品一| 午夜视频一区在线观看| 成人高清av在线| 精品美女在线播放| 亚洲成人精品一区二区| 丁香一区二区三区| 精品黑人一区二区三区久久| 亚洲国产精品久久久久婷婷884 | 国产精品久久久久天堂| 蜜臀精品一区二区三区在线观看 | 亚洲成a人片在线观看中文| 成人永久免费视频| 久久久久久亚洲综合| 免费观看在线综合| 欧美视频在线播放| 亚洲美女淫视频| www.色综合.com| 中文字幕 久热精品 视频在线| 看片网站欧美日韩| 91精品国产欧美一区二区18| 香蕉av福利精品导航| 欧美自拍偷拍午夜视频| 亚洲码国产岛国毛片在线| jlzzjlzz国产精品久久| 日韩高清在线不卡| 欧美日韩一区二区在线观看| 一区二区三区四区在线播放| 91色视频在线| 一区二区三区电影在线播| 色综合天天在线| 亚洲最新在线观看| 欧美综合色免费| 亚洲成人av一区二区三区| 欧美日韩精品三区| 日本午夜一区二区| 日韩精品综合一本久道在线视频| 日本v片在线高清不卡在线观看| 欧美剧情电影在线观看完整版免费励志电影 | 91美女视频网站| 一区二区三区四区不卡视频| 日本道在线观看一区二区| 亚洲一二三级电影| 欧美一区二区三区精品| 捆绑紧缚一区二区三区视频| 久久精品在线观看| 99精品视频一区二区三区| 一区二区三区中文免费| 7777精品久久久大香线蕉| 国模无码大尺度一区二区三区| 久久久精品蜜桃| 91在线视频免费观看| 午夜在线成人av| 亚洲精品一区二区三区影院| 成人激情免费网站| 五月天中文字幕一区二区| 26uuu国产一区二区三区| 欧美在线999| 老司机一区二区| 国产精品久久久久久久久久免费看 | 国产一区二区三区免费| 中文字幕人成不卡一区| 538prom精品视频线放| 国产99一区视频免费| 亚洲综合色噜噜狠狠| 久久久精品蜜桃| 精品视频1区2区3区| 久草这里只有精品视频| 亚洲视频每日更新| 欧美第一区第二区| 欧美在线不卡视频| 国产黑丝在线一区二区三区| 亚洲一区二区三区激情| 国产婷婷一区二区| 欧美一区二区三区免费| 色综合久久66| 高清免费成人av| 蜜臂av日日欢夜夜爽一区| 亚洲日本va午夜在线电影| 精品人在线二区三区| 在线视频国内自拍亚洲视频| 国产在线不卡视频| 日韩激情视频在线观看| 亚洲精品视频在线观看网站| 久久一留热品黄| 91麻豆精品国产91久久久久| 91片黄在线观看| www.欧美日韩| 成人免费视频一区| 久久精品理论片| 日本中文一区二区三区| 亚洲aaa精品| 亚洲一区二区三区国产| 亚洲精品欧美综合四区| 国产精品久久精品日日| 亚洲国产精品激情在线观看| 26uuuu精品一区二区| 欧美精品一区二区蜜臀亚洲| 欧美一区二区三区性视频| 欧美日韩在线观看一区二区| 一本色道久久综合精品竹菊| 91亚洲精品一区二区乱码| 国产成人综合亚洲网站| 国产精品羞羞答答xxdd| 国产在线看一区| 国产精品中文字幕一区二区三区| 九色|91porny| 国产麻豆精品在线| 国产精品一区免费视频| 国产河南妇女毛片精品久久久| 国内成人自拍视频| 大尺度一区二区| 成人高清视频在线| 色综合久久久久综合99| 欧美视频一区在线| 91精品视频网| 久久久久久久久久美女| 国产精品丝袜久久久久久app| 国产精品丝袜黑色高跟| 一区二区在线观看av| 亚洲第一电影网| 蜜桃91丨九色丨蝌蚪91桃色| 国产一区二区伦理| 9久草视频在线视频精品| 在线观看视频91| 日韩欧美电影一区| 欧美经典三级视频一区二区三区| 亚洲视频一区二区在线观看| 亚洲欧美aⅴ...| 美国欧美日韩国产在线播放| 国产盗摄一区二区三区| 91首页免费视频| 91精品国产综合久久香蕉麻豆| 精品粉嫩aⅴ一区二区三区四区| 欧美国产精品一区二区| 亚洲精品乱码久久久久久久久| 五月婷婷综合激情| 国产福利精品一区| 色婷婷精品久久二区二区蜜臂av | 久色婷婷小香蕉久久| 成人精品免费网站| 欧美日韩一区二区欧美激情| 久久精品在这里| 亚洲成人动漫在线观看| 国产一区二区三区视频在线播放| 91免费视频大全| 欧美一区二区三区在线视频| 日本成人在线一区| 成人av在线电影| 日韩欧美精品在线视频|