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

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

?? bags.h

?? Turbo C 3.0 + UCOS2 + UCGUI PC學(xué)習(xí)版本
?? H
字號(hào):
/*------------------------------------------------------------------------*/
/*                                                                        */
/*  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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲精品福利| 伊人夜夜躁av伊人久久| 一本大道久久a久久综合| 激情综合色播五月| 亚洲自拍偷拍网站| 国产日韩欧美麻豆| 欧美一区二区日韩一区二区| 色诱亚洲精品久久久久久| 黄一区二区三区| 性做久久久久久免费观看| 亚洲欧洲色图综合| 久久久精品2019中文字幕之3| 欧美精品第1页| 91首页免费视频| 国产91丝袜在线播放| 麻豆国产欧美日韩综合精品二区| 亚洲精品成人少妇| 国产精品乱子久久久久| 久久久久成人黄色影片| 日韩精品一区二区三区在线播放| 欧美另类久久久品| 色婷婷av一区二区三区gif| 波多野结衣91| 国产成人av一区二区| 国内外成人在线| 青娱乐精品视频在线| 午夜精品福利一区二区三区蜜桃| 伊人婷婷欧美激情| 《视频一区视频二区| 国产精品热久久久久夜色精品三区 | 国产成人综合在线播放| 免费av网站大全久久| 日韩精品亚洲一区| 亚洲不卡在线观看| 偷窥少妇高潮呻吟av久久免费| 亚洲综合色成人| 亚洲综合免费观看高清完整版 | 91精品综合久久久久久| 欧美亚洲动漫精品| 91黄色在线观看| 欧美在线观看视频一区二区| 91久久精品国产91性色tv| 色综合一个色综合| 色综合夜色一区| 欧美综合视频在线观看| 欧美三级三级三级爽爽爽| 欧美日韩国产在线观看| 欧美精品高清视频| 日韩一区二区三区高清免费看看 | 91精品蜜臀在线一区尤物| 欧美日韩国产不卡| 91精品视频网| 久久毛片高清国产| 国产欧美一区二区精品性| 国产精品久久久久一区| 亚洲视频在线一区观看| 一二三四社区欧美黄| 五月综合激情婷婷六月色窝| 麻豆精品蜜桃视频网站| 国产成人av电影| 色婷婷国产精品久久包臀| 中文字幕精品一区二区三区精品| 中文字幕巨乱亚洲| 亚洲一区二区三区四区五区黄| 日本色综合中文字幕| 国产精品综合二区| gogo大胆日本视频一区| 欧美卡1卡2卡| 国产欧美日韩在线| 亚洲精品视频观看| 日本午夜精品一区二区三区电影| 国产在线视频不卡二| 99久久99久久精品国产片果冻| 欧美久久免费观看| 久久久国产午夜精品| 亚洲综合免费观看高清完整版在线| 日本亚洲电影天堂| 99久久婷婷国产| 日韩一区二区影院| 中文字幕不卡三区| 日韩精品一卡二卡三卡四卡无卡| 国产在线不卡一区| 在线观看精品一区| 久久精品欧美日韩| 亚洲高清久久久| 高清免费成人av| 7777精品伊人久久久大香线蕉的 | 91麻豆精品国产91| 国产日韩精品一区二区三区| 午夜欧美2019年伦理| 国产成人综合网站| 欧美久久一二三四区| 国产精品网站在线观看| 五月婷婷色综合| 成人高清在线视频| 日韩欧美国产三级| 亚洲一区在线观看免费观看电影高清| 九色porny丨国产精品| 91麻豆产精品久久久久久| 精品国产3级a| 亚洲成人动漫在线观看| 成人蜜臀av电影| 欧美成人官网二区| 亚洲va欧美va人人爽午夜| 成人美女视频在线观看18| 日韩一级大片在线| 一区二区在线观看av| 成人黄色片在线观看| 精品国内二区三区| 天堂资源在线中文精品| 色噜噜狠狠色综合欧洲selulu| 亚洲精品乱码久久久久久黑人| 国产真实精品久久二三区| 欧美一三区三区四区免费在线看| 亚洲欧美另类久久久精品2019| 大白屁股一区二区视频| 日韩精品一区二区三区在线| 视频在线观看91| 欧美三级电影网| 亚洲影院在线观看| 91啦中文在线观看| 亚洲欧洲日韩在线| 成人美女视频在线观看| 国产欧美在线观看一区| 国产精品一级片在线观看| 日韩欧美一二三四区| 无吗不卡中文字幕| 在线不卡中文字幕播放| 午夜激情综合网| 欧美精品九九99久久| 日本成人在线一区| 日韩一区二区免费视频| 蜜桃av一区二区三区| 日韩免费高清av| 激情文学综合网| 久久久久97国产精华液好用吗 | 欧美日本一区二区三区| 亚洲成人福利片| 91超碰这里只有精品国产| 偷拍一区二区三区| 欧美一区二区人人喊爽| 男人的j进女人的j一区| 日韩欧美国产成人一区二区| 老司机午夜精品99久久| 欧美v日韩v国产v| 韩国精品一区二区| 欧美激情在线看| 97精品久久久午夜一区二区三区| 亚洲天堂免费看| 欧美性猛片xxxx免费看久爱| 天天综合色天天| 欧美成人精品1314www| 国产精品小仙女| 国产精品国产三级国产有无不卡| 99久久精品免费看| 亚洲午夜在线视频| 日韩亚洲欧美高清| 国产精品一区二区免费不卡| 国产精品久久久久久久久搜平片| 91免费国产在线| 婷婷综合另类小说色区| 日韩欧美国产电影| 成人黄色在线网站| 亚洲成人福利片| 久久色在线观看| 色综合久久久久综合体| 日韩激情视频在线观看| 久久精品在线观看| 在线国产电影不卡| 久久99在线观看| 国产精品福利一区二区| 欧美日韩一二三区| 国产一区二区主播在线| 亚洲男人的天堂在线观看| 欧美日韩不卡一区| 成人在线视频一区二区| 亚洲一区二区三区四区在线 | 精品国产麻豆免费人成网站| voyeur盗摄精品| 午夜精品久久久久久久久久久 | 一区二区三区在线看| 884aa四虎影成人精品一区| 国产精品白丝jk黑袜喷水| 一区二区三区精品| 欧美精品一区二区精品网| 91国产成人在线| 国产精品一区二区免费不卡| 亚洲国产精品久久久男人的天堂| 久久久久久久久久久久电影| 91影院在线免费观看| 精品在线一区二区三区| 亚洲综合男人的天堂| 欧美国产精品一区二区三区| 欧美日韩三级在线| 99久久久免费精品国产一区二区| 麻豆精品国产传媒mv男同| 亚洲永久精品国产| 中文一区二区在线观看 | 亚洲精品乱码久久久久久久久 | 久久久久久久久久美女|