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

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

?? stacks.h

?? uc/os 很好的學習代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*------------------------------------------------------------------------*/
/*                                                                        */
/*  STACKS.H                                                              */
/*                                                                        */
/*  Copyright Borland International 1991                                  */
/*  All Rights Reserved                                                   */
/*                                                                        */
/*------------------------------------------------------------------------*/

#if !defined( __STACKS_H )
#define __STACKS_H

#if !defined( ___DEFS_H )
#include <_defs.h>
#endif  // ___DEFS_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( __LISTIMP_H )
#include <ListImp.h>
#endif  // __LISTIMP_H

#if !defined( __CONTAIN_H )
#include <Contain.h>
#endif  // __CONTAIN_H

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class Vect, class T> class BI_StackAsVectorImp              */
/*                                                                        */
/*  Implements the fundamental stack operations, using a vector           */
/*  as the underlying implementation.  The type Vect specifies the        */
/*  form of the vector, either a BI_VectorImp<T0> or a                    */
/*  BI_IVectorImp<T0>.  The type T specifies the type of the              */
/*  objects to be put on the stack.  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_StackAsVector and            */
/*  BI_IStackAsVector for examples.                                       */
/*                                                                        */
/*------------------------------------------------------------------------*/

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

public:

    BI_StackAsVectorImp( unsigned max = DEFAULT_STACK_SIZE ) :
        data(max),
        current(0)
        {
        }

    void push( T t )
        {
        PRECONDITION( current < data.limit() );
        data[current++] = t;
        }

    T pop()
        {
        PRECONDITION( current > 0 );
        return data[--current];
        }

    T top() const
        {
        PRECONDITION( current > 0 );
        return data[current-1];
        }

    int isEmpty() const
        {
        return current == 0;
        }

    int isFull() const
        {
        return current == data.limit();
        }

    int getItemsInContainer() const
        {
        return current;
        }

    void flush( TShouldDelete::DeleteType = TShouldDelete::DefDelete )
        {
        current = 0;
        }

protected:

    Vect data;
    unsigned current;

};

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

template <class T> class _CLASSTYPE BI_StackAsVector :
    public BI_StackAsVectorImp<BI_VectorImp<T>,T>
{

public:

    friend class _CLASSTYPE BI_StackAsVectorIterator<T>;

    BI_StackAsVector( unsigned max = DEFAULT_STACK_SIZE ) :
        BI_StackAsVectorImp<BI_VectorImp<T>,T>( max )
        {
        }

    void forEach( void (_FAR *f)(T _FAR &, void _FAR *), void _FAR *args )
        {
        if( !isEmpty() )
            data.forEach( f, args, 0, current );
        }

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

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

};

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

public:

    BI_StackAsVectorIterator( const BI_StackAsVector<T> _FAR & s ) :
        BI_VectorIteratorImp<T>(s.data,0,s.current)
        {
        }

};

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

template <class T> class _CLASSTYPE BI_IStackAsVector :
    public BI_StackAsVectorImp<BI_IVectorImp<T>, T _FAR * >,
    public virtual TShouldDelete
{

public:

    friend class _CLASSTYPE BI_IStackAsVectorIterator<T>;

    BI_IStackAsVector( unsigned max = DEFAULT_STACK_SIZE ) :
        BI_StackAsVectorImp<BI_IVectorImp<T>,T _FAR *>( max )
        {
        }

    ~BI_IStackAsVector()
        {
        flush();
        }

    void push( T _FAR *t )
        {
        BI_StackAsVectorImp<BI_IVectorImp<T>,T _FAR *>::push( t );
        }

    T _FAR *pop()

        {
        return (T _FAR *)BI_StackAsVectorImp<BI_IVectorImp<T>,T _FAR *>::pop();
        }

    T _FAR *top() const
        {
        return (T _FAR *)BI_StackAsVectorImp<BI_IVectorImp<T>,T _FAR *>::top();
        }

    void forEach( void (_FAR *f)(T _FAR &, void _FAR *), void _FAR *args )
        {
        if( !isEmpty() )
            data.forEach( f, args, 0, current );
        }

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

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

    void flush( DeleteType dt = DefDelete )
        {
        data.flush( delObj(dt), current );
        BI_StackAsVectorImp<BI_IVectorImp<T>,T _FAR *>::flush();
        }

};

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

public:

    BI_IStackAsVectorIterator( const BI_IStackAsVector<T> _FAR & s ) :
        BI_IVectorIteratorImp<T>(s.data,0,s.current)
        {
        }

};

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

class _CLASSTYPE BI_OStackAsVector
{

public:

    friend class _CLASSTYPE BI_OStackAsVectorIterator;

    BI_OStackAsVector( unsigned max = DEFAULT_STACK_SIZE ) :
        ostack( max )
        {
        }


    void push( Object _FAR *t )
        {
        ostack.push( t );
        }

    Object _FAR *pop()
        {
        return (Object _FAR *)(ostack.pop());
        }

    Object _FAR *top() const
        {
        return (Object _FAR *)(ostack.top());
        }

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

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

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

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

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

    void flush( TShouldDelete::DeleteType dt )
        {
        ostack.flush( dt );
        }

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

private:

    BI_IStackAsVector<Object> ostack;

};

class _CLASSTYPE BI_OStackAsVectorIterator :
    public BI_IStackAsVectorIterator<Object>
{

public:

    BI_OStackAsVectorIterator( const BI_OStackAsVector _FAR & s ) :
        BI_IStackAsVectorIterator<Object>(s.ostack)
        {
        }

};

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

class _CLASSTYPE BI_TCStackAsVector : public Container
{

public:

    friend class _CLASSTYPE BI_TCStackAsVectorIterator;

    BI_TCStackAsVector( unsigned lim = DEFAULT_STACK_SIZE ) :
        stk(lim)
        {
        }

    void push( Object _FAR & o )
        {
        stk.push( &o );
        }

    Object _FAR & pop()
        {
        return ptrToRef(stk.pop());
        }

    Object _FAR & top() const
        {
        return ptrToRef(stk.top());
        }

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

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

    virtual void flush( DeleteType dt = DefDelete )
        {
        stk.flush( dt );
        }

    virtual ContainerIterator _FAR & initIterator() const;

    virtual classType isA() const
        {
        return stackClass;
        }

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

    virtual void forEach( iterFuncType f, void _FAR *args )
        {
        stk.forEach( f, args );
        }

    virtual Object _FAR & firstThat( condFuncType f, void _FAR *args ) const
        {
        return ptrToRef(stk.firstThat( f, args ));
        }

    virtual Object _FAR & lastThat( condFuncType f, void _FAR *args ) const
        {
        return ptrToRef(stk.lastThat( f, args ));
        }

private:

    BI_OStackAsVector stk;

};

class _CLASSTYPE BI_TCStackAsVectorIterator : public ContainerIterator
{

public:

    BI_TCStackAsVectorIterator( const BI_TCStackAsVector _FAR & s ) :
        iter(s.stk)
        {
        }

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级电影在线看| 国产精品精品国产色婷婷| 亚洲精品在线网站| 一区二区三区在线视频播放| 精品一区二区三区影院在线午夜| 91亚洲大成网污www| 久久精品一区二区三区四区| 婷婷开心激情综合| 91免费看片在线观看| 国产欧美日韩卡一| 激情综合色综合久久综合| 欧美日韩一区中文字幕| 最近中文字幕一区二区三区| 国产精品一区二区视频| 日韩一区二区电影| 五月天激情综合| 欧美亚洲精品一区| 亚洲夂夂婷婷色拍ww47| www.欧美精品一二区| 久久婷婷一区二区三区| 美国毛片一区二区| 欧美一二三区精品| 另类小说综合欧美亚洲| 777午夜精品免费视频| 亚洲成av人片一区二区| 在线观看日韩电影| 亚洲大片在线观看| 欧美三级一区二区| 91亚洲男人天堂| 欧美亚洲综合另类| 亚洲日本在线天堂| 99在线热播精品免费| 国产精品久久网站| 成人教育av在线| 欧美激情在线看| 成人精品视频网站| 国产精品久久久久久久久免费樱桃| 国产在线精品一区二区不卡了| 欧美精品一区二区不卡| 国模一区二区三区白浆 | 亚洲精品视频在线| 91欧美一区二区| 一区二区三区四区在线免费观看| 精品一二三四区| 91精品国产麻豆国产自产在线| 亚洲成人在线免费| 日韩一区二区中文字幕| 国产一区亚洲一区| 国产精品成人免费精品自在线观看 | 亚洲国产精品久久艾草纯爱| 欧美日韩国产一区| 美女网站一区二区| 中文字幕免费不卡| 欧美色区777第一页| 精品一区二区在线播放| 国产精品国产三级国产aⅴ中文 | 国产三区在线成人av| 99麻豆久久久国产精品免费| 夜夜嗨av一区二区三区四季av| 在线综合视频播放| 成人国产在线观看| 亚洲综合久久久久| 国产女同性恋一区二区| 欧洲亚洲国产日韩| 精品一区二区三区的国产在线播放| 中文字幕欧美激情| 91精品国产综合久久久蜜臀图片| 国产精品一线二线三线精华| 亚洲精品中文在线观看| 日韩精品一区二区三区在线观看 | 亚洲免费大片在线观看| 日韩一级成人av| heyzo一本久久综合| 青娱乐精品视频| 亚洲视频在线一区二区| 日韩三级在线免费观看| 91麻豆免费视频| 国产一区久久久| 亚洲小说欧美激情另类| 欧美激情一区二区在线| 欧美一级在线免费| 欧美天天综合网| 大尺度一区二区| 精品一区二区av| 天堂精品中文字幕在线| 国产精品久久久久久亚洲毛片 | 亚洲精品国产一区二区精华液| 日韩精品一区二区三区中文不卡 | 狠狠色伊人亚洲综合成人| 亚洲综合色区另类av| 国产精品污网站| 久久久久久久久久久99999| 在线不卡一区二区| 91久久香蕉国产日韩欧美9色| 国产寡妇亲子伦一区二区| 久久9热精品视频| 日本中文字幕一区| 午夜久久福利影院| 亚洲综合久久久| 亚洲青青青在线视频| 亚洲国产精品ⅴa在线观看| 久久久美女艺术照精彩视频福利播放| 欧美一区二区三区性视频| 欧美日韩国产a| 欧美影视一区在线| 欧美色图片你懂的| 欧美性一二三区| 色丁香久综合在线久综合在线观看| 国产成人精品亚洲777人妖| 国产乱人伦偷精品视频不卡| 看电视剧不卡顿的网站| 美女国产一区二区三区| 日本中文一区二区三区| 日本vs亚洲vs韩国一区三区二区 | 国产精品免费久久久久| 国产目拍亚洲精品99久久精品| 26uuu亚洲婷婷狠狠天堂| 久久精品亚洲精品国产欧美| 2欧美一区二区三区在线观看视频| 精品国产乱码久久久久久久 | 大白屁股一区二区视频| 成人av在线一区二区| 91丨九色丨蝌蚪富婆spa| 91麻豆文化传媒在线观看| 在线观看日韩国产| 欧美高清一级片在线| 欧美一级一级性生活免费录像| 欧美成人精品1314www| 亚洲精品一区二区三区福利| 国产网站一区二区| 亚洲日本一区二区三区| 亚洲国产一区二区三区青草影视| 亚洲成a人v欧美综合天堂下载| 日本一区中文字幕| 国产一区二三区| 99久久国产综合精品女不卡| 欧美乱妇23p| 精品1区2区在线观看| 国产精品二区一区二区aⅴ污介绍| 亚洲最快最全在线视频| 麻豆精品视频在线观看| 粉嫩高潮美女一区二区三区| 欧美性色黄大片| 久久久久久久久久电影| 亚洲精品一二三| 国产一区在线精品| 欧洲中文字幕精品| 精品欧美一区二区在线观看| 中文字幕中文乱码欧美一区二区 | 中文字幕亚洲欧美在线不卡| 亚洲韩国一区二区三区| 激情另类小说区图片区视频区| bt欧美亚洲午夜电影天堂| 欧美亚洲国产一区在线观看网站| 日韩精品一区二区三区中文精品| 最好看的中文字幕久久| 美女性感视频久久| 91麻豆国产福利精品| 久久综合狠狠综合久久激情| 有码一区二区三区| 国产91精品免费| 欧美一级淫片007| 一区二区三区久久| 色综合久久66| 欧美国产一区二区| 免费观看91视频大全| 91在线观看地址| 久久先锋影音av| 免费高清在线视频一区·| 色婷婷精品久久二区二区蜜臀av| 久久亚洲影视婷婷| 青青草原综合久久大伊人精品| 色综合久久中文综合久久牛| 国产欧美一区视频| 久久www免费人成看片高清| 欧美影视一区二区三区| 综合色中文字幕| 日韩精品一区二区在线| 26uuu久久综合| 午夜伦理一区二区| 欧美中文字幕一区| 亚洲日本护士毛茸茸| 国产高清无密码一区二区三区| 欧美一级片免费看| 天涯成人国产亚洲精品一区av| 色综合久久中文字幕| 国产精品久久久久桃色tv| 国产超碰在线一区| 国产亚洲成aⅴ人片在线观看| 久88久久88久久久| 日韩无一区二区| 美日韩一区二区| 日韩精品一区二区三区视频播放| 亚洲成人av福利| 欧美精品三级日韩久久| 三级成人在线视频| 91精品国产综合久久香蕉麻豆| 青青草原综合久久大伊人精品| 91精品在线免费| 麻豆精品视频在线观看|