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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dlistimp.h

?? uc/os 很好的學(xué)習(xí)代碼
?? H
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*------------------------------------------------------------------------*/
/*                                                                        */
/*  DLISTIMP.H                                                            */
/*                                                                        */
/*  Copyright Borland International 1991                                  */
/*  All Rights Reserved                                                   */
/*                                                                        */
/*------------------------------------------------------------------------*/

#if !defined( __DLISTIMP_H )
#define __DLISTIMP_H

#if !defined( __MEMMGR_H )
#include <MemMgr.h>
#endif  // __MEMMGR_H

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class T> class BI_DoubleListElement                         */
/*                                                                        */
/*  Node for templates BI_DoubleListImp<T> and BI_IDoubleListImp<T>       */
/*                                                                        */
/*------------------------------------------------------------------------*/

template <class T> class _CLASSTYPE BI_DoubleListImp;

template <class T> class _CLASSTYPE BI_DoubleListBlockInitializer
{

protected:

    BI_DoubleListBlockInitializer()
        {
        PRECONDITION( count != UINT_MAX );
        if( count++ == 0 )
            BI_DoubleListElement<T>::mgr = 
                new MemBlocks( sizeof(BI_DoubleListElement<T>), 20 );
        }

    ~BI_DoubleListBlockInitializer()
        {
        PRECONDITION( count != 0 );
        if( --count == 0 )
            {
            delete BI_DoubleListElement<T>::mgr;
            BI_DoubleListElement<T>::mgr = 0;
            }
        }

    static unsigned count;

};

template <class T> unsigned BI_DoubleListBlockInitializer<T>::count = 0;

template <class T> class _CLASSTYPE BI_DoubleListElement
{

public:

    BI_DoubleListElement( T t, BI_DoubleListElement<T> _FAR *p ) :
        data(t)
        {
        next = p->next;
        prev = p;
        p->next = this;
        next->prev = this;
        }

    BI_DoubleListElement();

    BI_DoubleListElement<T> _FAR *next;
    BI_DoubleListElement<T> _FAR *prev;
    T data;

    void _FAR *operator new( size_t sz );
    void operator delete( void _FAR * );

private:

    friend class BI_DoubleListBlockInitializer<T>;

    static MemBlocks _FAR *mgr;

};

template <class T> MemBlocks _FAR *BI_DoubleListElement<T>::mgr = 0;

template <class T> inline BI_DoubleListElement<T>::BI_DoubleListElement()
{
    next = prev = 0;
}

template <class T>
void _FAR *BI_DoubleListElement<T>::operator new( size_t sz )
{
    PRECONDITION( mgr != 0 );
    return mgr->allocate( sz );
}

template <class T>
void BI_DoubleListElement<T>::operator delete( void _FAR *b )
{
    PRECONDITION( mgr != 0 );
    mgr->free( b );
}

inline BI_DoubleListElement<void _FAR *>::BI_DoubleListElement()
{
    next = prev = 0;
    data = 0;
}

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class T> class BI_DoubleListImp                             */
/*                                                                        */
/*  Implements a double-linked list of objects of type T.  Assumes that   */
/*  T has meaningful copy semantics and a default constructor.            */
/*                                                                        */
/*------------------------------------------------------------------------*/

template <class T> class _CLASSTYPE BI_DoubleListIteratorImp;

template <class T> class _CLASSTYPE BI_DoubleListImp :
    private BI_DoubleListBlockInitializer<T>
{

public:

    friend class BI_DoubleListIteratorImp<T>;

    BI_DoubleListImp()
        {
        initList();
        }

    ~BI_DoubleListImp()
        {
        flush();
        }

    T peekHead() const
        {
        return head.next->data;
        }

    T peekTail() const
        {
        return tail.prev->data;
        }

    void add( T );
    void addAtTail( T );
    void detach( T, int = 0 );
    void flush( int = 0 );

    int isEmpty() const
        {
        return head.next == &tail;
        }

    void forEach( void (_FAR *)(T _FAR &, void _FAR *), void _FAR * );
    T _FAR *firstThat( int (_FAR *)(const T _FAR &, void _FAR *),
                       void _FAR *
                     ) const;
    T _FAR *lastThat( int (_FAR *)(const T _FAR &, void _FAR *),
                      void _FAR *
                    ) const;

protected:

    BI_DoubleListElement<T> head, tail;

    virtual BI_DoubleListElement<T> _FAR *findDetach( T t )
        {
        return findPred(t);
        }

    virtual BI_DoubleListElement<T> _FAR *findPred( T );

private:

    virtual void removeData( BI_DoubleListElement<T> _FAR * )
        {
        }

    void initList();

};

template <class T> void BI_DoubleListImp<T>::initList()
{
    head.next = &tail;
    head.prev = &head;
    tail.prev = &head;
    tail.next = &tail;
}

template <class T> void BI_DoubleListImp<T>::add( T toAdd )
{
    new BI_DoubleListElement<T>( toAdd, &head );
}

template <class T>
BI_DoubleListElement<T> _FAR *BI_DoubleListImp<T>::findPred( T t )
{
    tail.data = t;
    BI_DoubleListElement<T> _FAR *cursor = &head;
    while( t != cursor->next->data )
        cursor = cursor->next;
    return cursor;
}

template <class T> void BI_DoubleListImp<T>::addAtTail( T toAdd )
{
    new BI_DoubleListElement<T>( toAdd, tail.prev );
}

template <class T> void BI_DoubleListImp<T>::detach( T toDetach, int del )
{
    BI_DoubleListElement<T> _FAR *pred = findDetach( toDetach );
    BI_DoubleListElement<T> _FAR *item = pred->next;
    if( item != &tail )
        {
        pred->next = pred->next->next;
        pred->next->prev = pred;
        if( del != 0 )
            removeData( item );
        delete item;
        }
}

template <class T> void BI_DoubleListImp<T>::flush( int del )
{
    BI_DoubleListElement<T> _FAR *current = head.next;
    while( current != &tail )
        {
        BI_DoubleListElement<T> _FAR *temp = current;
        current = current->next;
        if( del != 0 )
            removeData( temp );
        delete temp;
        }
    initList();
}

template <class T>
void BI_DoubleListImp<T>::forEach( void (_FAR *f)(T _FAR &, void _FAR *),
                                   void _FAR *args
                                 )
{
    BI_DoubleListElement<T> _FAR *cur = head.next;
    while( cur->next != cur )
        {
        f( cur->data, args );
        cur = cur->next;
        }
}

template <class T>
T _FAR *BI_DoubleListImp<T>::firstThat( int (_FAR *cond)(const T _FAR &, void _FAR *),
                                   void _FAR *args
                                 ) const
{
    BI_DoubleListElement<T> _FAR *cur = head.next;
    while( cur->next != cur )
        if( cond( cur->data, args ) != 0 )
            return &(cur->data);
        else
            cur = cur->next;
    return 0;
}

template <class T>
T _FAR *BI_DoubleListImp<T>::lastThat( int (_FAR *cond)(const T _FAR &, void _FAR *),
                                  void _FAR *args
                                ) const
{
    T _FAR *res = 0;
    BI_DoubleListElement<T> _FAR *cur = head.next;
    while( cur->next != cur )
        {
        if( cond( cur->data, args ) != 0 )
            res = &(cur->data);
        cur = cur->next;
        }
    return res;
}

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class T> class BI_SDoubleListImp                            */
/*                                                                        */
/*  Implements a sorted double-linked list of objects of type T.          */
/*  Assumes that T has meaningful copy semantics, a meaningful            */
/*  < operator, and a default constructor.                                */
/*                                                                        */
/*------------------------------------------------------------------------*/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合婷婷亚洲小说| 成人蜜臀av电影| 午夜av区久久| 亚洲成人先锋电影| 亚洲影院免费观看| 亚洲高清久久久| 天涯成人国产亚洲精品一区av| 亚洲成人中文在线| 丝袜亚洲另类丝袜在线| 色婷婷一区二区| 色系网站成人免费| 91国偷自产一区二区三区成为亚洲经典 | 国产精品影视天天线| 久久er99精品| 久久99精品国产麻豆婷婷洗澡| 激情六月婷婷久久| 国产精品996| 成人激情免费视频| 色婷婷亚洲精品| 久久精品免视看| 中文字幕免费观看一区| 亚洲日本护士毛茸茸| 亚洲永久精品大片| 男男成人高潮片免费网站| 久久丁香综合五月国产三级网站| 国模娜娜一区二区三区| 成人免费高清视频| 色一情一乱一乱一91av| 欧美精品日韩精品| 久久综合精品国产一区二区三区| 国产午夜精品理论片a级大结局| 中文字幕一区二区在线播放| 亚洲国产日韩一区二区| 久久精品99国产精品日本| 成人开心网精品视频| 在线观看日韩av先锋影音电影院| 欧美一区二区网站| 国产日产欧美一区| 一区二区三区久久久| 蜜臀久久99精品久久久久宅男 | 日本高清不卡aⅴ免费网站| 欧美日韩精品系列| 精品久久久久久久久久久久包黑料| 国产欧美中文在线| 亚洲欧美日韩人成在线播放| 男女男精品网站| 99久久精品国产网站| 91麻豆精品国产自产在线| 久久久国产一区二区三区四区小说| 亚洲美女偷拍久久| 久久成人免费网站| 91在线丨porny丨国产| 日韩午夜在线观看视频| 国产精品国产a| 免费高清视频精品| 色婷婷av一区| 久久久精品国产免大香伊| 午夜电影一区二区三区| 成人av在线资源网| 欧美成人三级电影在线| 亚洲人被黑人高潮完整版| 麻豆精品新av中文字幕| 91久久久免费一区二区| 一区二区三区91| 欧美视频在线播放| 国产精品国产三级国产aⅴ中文 | 欧美大片免费久久精品三p| 精品国产免费一区二区三区香蕉| 日本视频一区二区| 欧美一区二区日韩一区二区| 午夜伊人狠狠久久| 成人av综合在线| 欧美v日韩v国产v| 亚洲第一成年网| 99久久精品免费观看| 久久久蜜桃精品| 日产欧产美韩系列久久99| 色94色欧美sute亚洲线路一久| 久久综合久久久久88| 视频一区视频二区在线观看| 91尤物视频在线观看| 亚洲国产高清不卡| 国产综合久久久久久久久久久久| 国产成人精品综合在线观看| 国产精品久久免费看| 欧美性做爰猛烈叫床潮| 午夜日韩在线观看| 99在线热播精品免费| 丰满白嫩尤物一区二区| 精品黑人一区二区三区久久| 舔着乳尖日韩一区| 91精彩视频在线观看| 看电影不卡的网站| 国产精品网站导航| 欧美日韩一区高清| 国产一区91精品张津瑜| 一区二区在线观看不卡| 精品国产1区二区| 欧美日韩精品欧美日韩精品一| 免费视频一区二区| 色999日韩国产欧美一区二区| 免费不卡在线观看| 亚洲日本va在线观看| 日韩欧美一卡二卡| 欧美日韩中文国产| 日韩av在线播放中文字幕| 日本一区免费视频| 69堂精品视频| 欧美伊人久久久久久午夜久久久久| 亚洲综合激情小说| 国产精品乱子久久久久| 91麻豆精品国产自产在线观看一区| jlzzjlzz亚洲女人18| 国产一区二区三区精品视频| 艳妇臀荡乳欲伦亚洲一区| 国产精品久久午夜| 最新久久zyz资源站| 欧美日韩一区二区欧美激情| 懂色一区二区三区免费观看| 蜜桃视频一区二区三区| 午夜视黄欧洲亚洲| 亚洲精品一区在线观看| 国内精品久久久久影院色| 日韩福利视频网| 国产精品久久久久久亚洲毛片 | 亚洲香肠在线观看| 一区二区三区四区激情| 国产精品初高中害羞小美女文| 国产午夜精品久久久久久免费视| 日韩一区二区三区四区五区六区| 欧美一级爆毛片| 精品久久久久av影院| 亚洲国产高清在线观看视频| 日韩三级视频中文字幕| 欧美日韩国产乱码电影| 日韩一区二区在线观看视频| 久久精品人人做人人综合| 1000部国产精品成人观看| 国产欧美日本一区二区三区| 久久久亚洲高清| 国产精品久久二区二区| 久久精品欧美一区二区三区不卡 | 色一区在线观看| 欧美成人猛片aaaaaaa| 国产人妖乱国产精品人妖| 亚洲欧洲国产日本综合| 亚洲综合免费观看高清完整版| 麻豆精品蜜桃视频网站| 粉嫩久久99精品久久久久久夜| 久久精品999| 欧美中文字幕一区| 国产精品无码永久免费888| 精品午夜一区二区三区在线观看| 免费成人av在线播放| 色偷偷成人一区二区三区91| 精品国一区二区三区| 日韩高清国产一区在线| www.欧美日韩| 欧美激情一区二区在线| 青娱乐精品视频| 欧美日韩国产欧美日美国产精品| 中文字幕av一区二区三区| 日韩高清不卡一区二区| 欧美日韩精品专区| 婷婷六月综合亚洲| 911精品国产一区二区在线| 中文在线一区二区| 99精品国产视频| 亚洲成人激情av| 久久在线免费观看| 高清shemale亚洲人妖| 国产精品国产自产拍高清av| 99国产精品久| 国产日韩欧美a| 99久久综合精品| ...av二区三区久久精品| av电影天堂一区二区在线| 日韩一区中文字幕| 粉嫩av一区二区三区| 亚洲视频一区二区在线| 欧美在线观看一二区| 国产人成一区二区三区影院| 国产精品资源站在线| 日韩美女视频19| 欧美性猛交xxxx乱大交退制版| 久久免费国产精品| 国产成人福利片| 日本午夜精品视频在线观看| 制服.丝袜.亚洲.另类.中文| 日本欧美在线观看| 久久久久88色偷偷免费 | 欧美视频中文字幕| 亚洲精品成a人| 欧美性极品少妇| 视频在线观看国产精品| 在线中文字幕一区二区| 亚洲18色成人| 欧美日韩亚洲综合一区| 舔着乳尖日韩一区| 久久亚洲精华国产精华液|