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

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

?? bags.h

?? 在純DOS下運行的TurboC3_ucos2_ucgui bug改進版本
?? H
字號:
/*------------------------------------------------------------------------*/
/*                                                                        */
/*  BAGS.H                                                                */
/*                                                                        */
/*  Copyright Borland International 1991                                  */
/*  All Rights Reserved                                                   */
/*                                                                        */
/*------------------------------------------------------------------------*/

#if !defined( __BAGS_H )
#define __BAGS_H

#if !defined( __CHECKS_H )
#include <Checks.h>
#endif	// __CHECKS_H

#if !defined( __SHDDEL_H )
#include <ShdDel.h>
#endif	// __SHDDEL_H

#if !defined( __VECTIMP_H )
#include <VectImp.h>
#endif	// __VECTIMP_H

#if !defined( __RESOURCE_H )
#include <Resource.h>
#endif	// __RESOURCE_H

#if !defined( __COLLECT_H )
#include <Collect.h>
#endif	// __COLLECT_H

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class Vect, class T> class BI_BagAsVectorImp                */
/*                                                                        */
/*  Implements a bag, using a vector as the underlying implementation.    */
/*  The type Vect specifies the form of the vector, either a              */
/*  BI_CVectorImp<T0> or a BI_ICVectorImp<T0>.  The type T specifies the  */
/*  type of the objects to be put in the bag.  When using                 */
/*  BI_VectorImp<T0>, T should be the same as T0. When using              */
/*  BI_IVectorImp<T0>, T should be of type pointer to T0.  See            */
/*  BI_BagAsVector and BI_IBagAsVector for examples.                      */
/*                                                                        */
/*------------------------------------------------------------------------*/

template <class Vect, class T> class _CLASSTYPE BI_BagAsVectorImp
{

public:

    BI_BagAsVectorImp( unsigned sz = DEFAULT_BAG_SIZE ) :
        data(sz,1)
        {
        }

    void add( T t )
        {
        data.add( t );
        }

    void detach( T t, TShouldDelete::DeleteType = TShouldDelete::NoDelete )
        {
        data.detach( t );
        }

    void flush( TShouldDelete::DeleteType = TShouldDelete::DefDelete )
        {
        data.flush();
        }

    int hasMember( T t ) const
        {
        return data.find(t) != UINT_MAX;
        }

    T findMember( T t ) const
        {
        PRECONDITION( hasMember(t) );
        return data[data.find(t)];
        }

    int isEmpty() const
        {
        return data.isEmpty();
        }

    int isFull() const
        { return 0;
        }

    int getItemsInContainer() const
        {
        return data.top();
        }

protected:

    Vect data;

};

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class T> class BI_BagAsVector                               */
/*                                                                        */
/*  Implements a bag of objects of type T, using a vector as              */
/*  the underlying implementation.                                        */
/*                                                                        */
/*------------------------------------------------------------------------*/

template <class T> class _CLASSTYPE BI_BagAsVector :
    public BI_BagAsVectorImp<BI_CVectorImp<T>,T>
{

public:

    friend class _CLASSTYPE BI_BagAsVectorIterator<T>;

    BI_BagAsVector( unsigned sz = DEFAULT_BAG_SIZE ) :
        BI_BagAsVectorImp<BI_CVectorImp<T>,T>( sz )
        {
        }

    void forEach( void (_FAR *f)(T _FAR &, void _FAR *), void _FAR *args )
        {
        data.forEach( f, args, 0, data.top() );
        }

    T _FAR *firstThat( int (_FAR *f)(const T _FAR &, void _FAR *),
                       void _FAR *args
                     ) const
        {
        return data.firstThat( f, args, 0, data.top() );
        }

    T _FAR *lastThat( int (_FAR *f)(const T _FAR &, void _FAR *),
                      void _FAR *args
                    ) const
        {
        return data.lastThat( f, args, 0, data.top() );
        }

protected:

    virtual T _FAR *find( T ) const;

};

template <class T> T _FAR *BI_BagAsVector<T>::find( T t ) const
{
    if( isEmpty() )
        return 0;
    for( int index = 0; index < data.top(); index++ )
        if( data[index] == t )
            return &(data[index]);
    return 0;
}

template <class T> class _CLASSTYPE BI_BagAsVectorIterator :
    public BI_VectorIteratorImp<T>
{

public:

    BI_BagAsVectorIterator( const BI_BagAsVector<T> _FAR & b ) :
        BI_VectorIteratorImp<T>(b.data,0,b.data.top()) {}

};

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class T> class BI_IBagAsVector                              */
/*                                                                        */
/*  Implements a bag of pointers to objects of type T,                    */
/*  using a vector as the underlying implementation.                      */
/*                                                                        */
/*------------------------------------------------------------------------*/

template <class T> class _CLASSTYPE BI_IBagAsVector :
    public BI_BagAsVectorImp<BI_ICVectorImp<T>,T _FAR *>,
    public virtual TShouldDelete
{

public:

    friend class _CLASSTYPE BI_IBagAsVectorIterator<T>;

    BI_IBagAsVector( unsigned sz = DEFAULT_BAG_SIZE ) :
        BI_BagAsVectorImp<BI_ICVectorImp<T>,T _FAR *>(sz)
        {
        }

    ~BI_IBagAsVector()
        {
        flush();
        }

    void add( T _FAR *t )
        {
        BI_BagAsVectorImp<BI_ICVectorImp<T>,T _FAR *>::add(t);
        }

    void detach( T _FAR *t, DeleteType dt = NoDelete )
        {
        data.detach( t, delObj(dt) );
        }

    void flush( TShouldDelete::DeleteType dt = TShouldDelete::DefDelete )
        {
        data.flush( delObj(dt), data.top(), 0 );
        }

    T _FAR *findMember( T _FAR *t ) const
        {
        unsigned loc = data.find(t);
        return (T _FAR *)( loc == UINT_MAX ? 0 : data[loc] );
        }

    void forEach( void (_FAR *f)(T _FAR &, void _FAR *), void _FAR *args )
        {
        data.forEach( f, args, 0, data.top() );
        }

    T _FAR *firstThat( int (_FAR *f)(const T _FAR &, void _FAR *),
                       void _FAR *args
                     ) const
        {
        return data.firstThat( f, args, 0, data.top() );
        }

    T _FAR *lastThat( int (_FAR *f)(const T _FAR &, void _FAR *),
                      void _FAR *args
                    ) const
        {
        return data.lastThat( f, args, 0, data.top() );
        }

};

template <class T> class _CLASSTYPE BI_IBagAsVectorIterator :
    public BI_IVectorIteratorImp<T>
{

public:

    BI_IBagAsVectorIterator( const BI_IBagAsVector<T> _FAR & s ) :
        BI_IVectorIteratorImp<T>(s.data,0,s.data.top()) {}

};

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  class BI_OBagAsVector                                                 */
/*                                                                        */
/*  Implements a bag of pointers to Object,                               */
/*  using a vector as the underlying implementation.                      */
/*                                                                        */
/*------------------------------------------------------------------------*/

class _CLASSTYPE BI_OBagAsVector
{

public:

    friend class _CLASSTYPE BI_OBagAsVectorIterator;

    BI_OBagAsVector( unsigned sz = DEFAULT_BAG_SIZE ) :
        obag( sz )
        {
        }

    void add( Object _FAR *o )
        {
        obag.add(o);
        }

    void detach( Object _FAR *o,
                 TShouldDelete::DeleteType dt = TShouldDelete::NoDelete
               )
        {
        obag.detach( o, dt );
        }

    void flush( TShouldDelete::DeleteType dt = TShouldDelete::DefDelete )
        {
        obag.flush( dt );
        }

    int hasMember( Object _FAR *o ) const
        {
        return obag.hasMember(o);
        }

    Object _FAR *findMember( Object _FAR *o ) const
        {
        Object _FAR *obj = obag.findMember( o );
        return obj != 0 ? obj : 0;
        }

    int isEmpty() const
        {
        return obag.isEmpty();
        }

    int isFull() const
        {
        return obag.isFull();
        }

    void forEach( void (_FAR*f)(Object _FAR &, void _FAR*), void _FAR*args )
        {
        obag.forEach( f, args );
        }

    Object _FAR *firstThat( int (_FAR *f)(const Object _FAR &, void _FAR *),
                            void _FAR *args
                          ) const
        {
        return obag.firstThat( f, args );
        }

    Object _FAR *lastThat( int (_FAR *f)(const Object _FAR &, void _FAR *),
                           void _FAR *args
                         ) const
        {
        return obag.lastThat( f, args );
        }

    int getItemsInContainer() const
        {
        return obag.getItemsInContainer();
        }

    int ownsElements()
        {
        return obag.ownsElements();
        }

    void ownsElements( int del )
        {
        obag.ownsElements( del );
        }

protected:

    BI_IBagAsVector<Object> obag;

};

class _CLASSTYPE BI_OBagAsVectorIterator :
    public BI_IBagAsVectorIterator<Object>
{

public:

    BI_OBagAsVectorIterator( const BI_OBagAsVector _FAR & b ) :
        BI_IBagAsVectorIterator<Object>(b.obag)
        {
        }

};

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  class BI_TCBagAsVector                                                */
/*                                                                        */
/*  Implements an Object bag, with the full semantics of                  */
/*  the BC 2.0 style Bag, using a vector as the underlying                */
/*  implementation.                                                       */
/*                                                                        */
/*------------------------------------------------------------------------*/

class _CLASSTYPE BI_TCBagAsVector : public Collection
{

public:

    friend class _CLASSTYPE BI_TCBagAsVectorIterator;

    BI_TCBagAsVector( int sz = DEFAULT_BAG_SIZE ) :
        bag(sz)
        {
        }

    virtual void add( Object _FAR & o )
        {
        bag.add( &o );
        }

    virtual void detach( Object _FAR & o,
                    TShouldDelete::DeleteType dt = TShouldDelete::NoDelete )
        {
        bag.detach( &o, dt );
        }

    virtual void flush(TShouldDelete::DeleteType dt=TShouldDelete::DefDelete )
        {
        bag.flush( dt );
        }

    virtual int isEmpty() const
        {
        return bag.isEmpty();
        }

    virtual countType getItemsInContainer() const
        {
        return bag.getItemsInContainer();
        }

    void forEach( void (_FAR*f)(Object _FAR &, void _FAR*), void _FAR*args )
        {
        bag.forEach( f, args );
        }

    Object _FAR & firstThat( int (_FAR *f)(const Object _FAR &, void _FAR *),
                             void _FAR *args
                           ) const
        {
        return ptrToRef(bag.firstThat( f, args ));
        }

    Object _FAR & lastThat( int (_FAR *f)(const Object _FAR &, void _FAR *),
                            void _FAR *args
                          ) const
        {
        return ptrToRef(bag.lastThat( f, args ));
        }

    virtual int hasMember( Object _FAR & o ) const
        {
        return bag.hasMember( &o );
        }

    virtual Object _FAR & findMember( Object _FAR & o ) const
        {
        return ptrToRef(bag.findMember(&o));
        }

    virtual ContainerIterator _FAR & initIterator() const;

    virtual classType isA() const
        {
        return bagClass;
        }

    virtual char _FAR *nameOf() const
        {
        return "BI_TCBagAsVector";
        }

    int ownsElements()
        {
        return bag.ownsElements();
        }

    void ownsElements( int del )
        {
        bag.ownsElements( del );
        }

protected:

    BI_OBagAsVector bag;

};

class _CLASSTYPE BI_TCBagAsVectorIterator : public ContainerIterator
{

public:

    BI_TCBagAsVectorIterator( const BI_TCBagAsVector _FAR &b ) :
        iter(b.bag)
        {
        }

    virtual operator int()
        {
        return int(iter);
        }

    virtual Object _FAR & current()
        {
        return Object::ptrToRef(iter.current());
        }

    virtual Object _FAR & operator ++ ( int )
        {
        return Object::ptrToRef(iter++);
        }

    virtual Object _FAR & operator ++ ()
        {
        return Object::ptrToRef(++iter);
        }

    virtual void restart()
        {
        iter.restart();
        }

private:

    BI_OBagAsVectorIterator iter;

};

inline ContainerIterator _FAR & BI_TCBagAsVector::initIterator() const
{
    return *new BI_TCBagAsVectorIterator( *this );
}

#endif  // __BAGS_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美你懂的| 亚洲欧洲精品一区二区三区不卡| 久久精品在线观看| 亚洲男女一区二区三区| 久久99久久久久久久久久久| 91在线免费视频观看| 日韩欧美一区在线| 亚洲国产中文字幕| 波多野结衣一区二区三区| 日韩欧美国产一区在线观看| 一区二区三区四区精品在线视频| 国产精品乡下勾搭老头1| 制服丝袜av成人在线看| 亚洲激情图片一区| 99久久精品免费| 国产精品全国免费观看高清 | 国产乱码精品一区二区三区av| 色94色欧美sute亚洲线路一久| 国产日韩欧美综合在线| 韩国精品免费视频| 精品日韩一区二区| 青青草原综合久久大伊人精品 | 成人一区二区视频| 久久女同互慰一区二区三区| 青青草国产成人99久久| 6080yy午夜一二三区久久| 亚洲影院在线观看| 在线观看国产一区二区| 亚洲欧美日韩国产手机在线| 97久久超碰国产精品电影| 中文字幕一区二区三区视频| av电影在线观看完整版一区二区| 久久精品日韩一区二区三区| 国产精品一区二区久久不卡| 26uuu欧美日本| 国产精品资源网站| 欧美国产综合色视频| aaa欧美色吧激情视频| 亚洲男人的天堂在线aⅴ视频| 在线日韩国产精品| 亚洲成人av资源| 日韩欧美一区在线| 国产精选一区二区三区| 中文字幕一区二区三区精华液 | 国产亚洲综合av| 岛国精品在线观看| 亚洲乱码中文字幕| 欧美无砖专区一中文字| 欧美a级一区二区| 国产欧美日韩三级| 欧美中文一区二区三区| 日韩成人精品在线| 久久久亚洲午夜电影| www.99精品| 午夜精品影院在线观看| 欧美成人伊人久久综合网| 国产成人自拍高清视频在线免费播放| 日本一区二区三级电影在线观看| 91视频一区二区| 免费看黄色91| 国产精品国产三级国产aⅴ原创 | 欧美v日韩v国产v| 国产1区2区3区精品美女| 亚洲精品日产精品乱码不卡| 4438成人网| 成人av资源站| 婷婷久久综合九色综合绿巨人| 日韩精品一区二区三区蜜臀 | 国产mv日韩mv欧美| 亚洲国产精品视频| 国产免费观看久久| 在线电影一区二区三区| 粉嫩蜜臀av国产精品网站| 日韩精品亚洲专区| 国产精品国产三级国产a| 欧美一区二区三区四区久久| av午夜一区麻豆| 美女一区二区三区在线观看| 国产精品电影院| 日韩一级免费观看| 一本大道久久a久久综合| 精品一区在线看| 午夜久久久影院| 成人欧美一区二区三区小说| 欧美一区二区精美| 欧美主播一区二区三区美女| 成人av网站免费观看| 久久av资源站| 男男视频亚洲欧美| 一区二区三区欧美视频| 国产精品久久久久久久久晋中| 日韩欧美成人一区| 在线播放中文字幕一区| 色综合久久综合| 国产成人精品一区二区三区四区| 免费在线欧美视频| 石原莉奈在线亚洲二区| 亚洲影院在线观看| 亚洲精品视频在线观看网站| 国产精品欧美久久久久一区二区| 日韩精品一区在线观看| 91精品蜜臀在线一区尤物| 欧美性xxxxxxxx| 欧美做爰猛烈大尺度电影无法无天| 成人一区二区三区视频在线观看 | 欧美性大战久久久久久久蜜臀 | 国产精品成人免费| 国产香蕉久久精品综合网| 日韩视频免费直播| 欧美一级国产精品| 3d成人动漫网站| 日韩一区二区三区视频在线 | 激情综合色丁香一区二区| 日韩电影免费一区| 26uuu国产日韩综合| 日本午夜一本久久久综合| 蜜桃一区二区三区在线| 欧美一级国产精品| 欧美日韩不卡在线| 久久er99热精品一区二区| 国产精品无圣光一区二区| 欧美色图天堂网| 国产乱码精品1区2区3区| 亚洲综合色自拍一区| 欧美国产在线观看| 日韩精品专区在线| 欧美日韩一级黄| 色婷婷综合久久久中文一区二区 | 成人动漫一区二区在线| 视频一区视频二区中文| 亚洲欧美另类久久久精品 | 欧美日韩国产综合一区二区三区| 国产精品中文字幕日韩精品| 亚洲超丰满肉感bbw| 亚洲免费毛片网站| 国产精品免费视频观看| 欧美成人一区二区| 欧美电视剧在线观看完整版| 欧美系列在线观看| 色婷婷香蕉在线一区二区| 成人污污视频在线观看| 国产中文字幕一区| 精品中文字幕一区二区| 日韩福利视频导航| 免费久久精品视频| 免费不卡在线视频| 日韩精品久久理论片| 午夜精品一区在线观看| 亚洲国产精品麻豆| 午夜视频一区在线观看| 午夜天堂影视香蕉久久| 日韩不卡免费视频| 日产国产欧美视频一区精品| 日韩电影在线一区二区三区| 亚洲成人动漫在线免费观看| 性做久久久久久免费观看欧美| 亚洲一区在线电影| 日韩精品亚洲一区| 捆绑变态av一区二区三区| 久久草av在线| 国产麻豆成人传媒免费观看| 国产一区二区三区av电影| 国产成人精品免费一区二区| 成人性视频免费网站| 99亚偷拍自图区亚洲| 一本色道久久综合狠狠躁的推荐| 色哟哟精品一区| 911精品国产一区二区在线| 日韩三级在线观看| 国产欧美日韩在线看| 亚洲精品国产视频| 日日摸夜夜添夜夜添国产精品| 精品一区二区久久久| 成人精品国产福利| 欧美性生活一区| 精品成人免费观看| 亚洲天堂免费在线观看视频| 亚洲国产精品一区二区久久| 久草热8精品视频在线观看| 国产精品亚洲综合一区在线观看| 99久久久国产精品| 欧美一卡二卡在线| 椎名由奈av一区二区三区| 石原莉奈在线亚洲二区| 国产成人免费视频精品含羞草妖精 | 久久福利资源站| 成人国产视频在线观看| 欧美精品第一页| 国产精品欧美一区二区三区| 亚洲成av人片在线观看无码| 国产高清不卡一区二区| 欧美亚洲国产怡红院影院| 久久久久国产精品厨房| 婷婷夜色潮精品综合在线| eeuss影院一区二区三区| 日韩欧美另类在线| 一二三四社区欧美黄| 丁香网亚洲国际| 日韩欧美一级片| 亚洲高清一区二区三区|