Source: classlib/include/classlib/queues.h


Annotated List
Files
Globals
Hierarchy
Index
/***************************************************************************
    queues.h  -  code di oggetti
                             -------------------
    begin                : ven dic  7 17:40:01 CET 2001
    copyright            : (C) 2001 by Nicola De Nisco
    email                : nicola@winada.it
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#if !defined( __CLASSLIB_QUEUES_H )
#define __CLASSLIB_QUEUES_H

#if !defined( __CLASSLIB_DEFS_H )
#include "classlib/defs.h"
#endif  // __CLASSLIB_DEFS_H

#if !defined( __CLASSLIB_DEQUES_H )
#include "classlib/deques.h"
#endif  // __CLASSLIB_DEQUES_H

template  class TMQueueAsVectorIterator;

/**

  template  class TMQueueAsVector
  template  class TMQueueAsVectorIterator

  Implements a managed queue of objects of type T, using a vector as
  the underlying implementation.

*/

template  class TMQueueAsVector :
    private TMDequeAsVector
{

    typedef TMDequeAsVector Parent;

public:

    friend class TMQueueAsVectorIterator;

    TMQueueAsVector( unsigned sz = DEFAULT_QUEUE_SIZE ) :
        TMDequeAsVector(sz)
        {
        }

    const T& Peek() const
        {
        return Parent::PeekRight();
        }

    T Get()
        {
        return Parent::GetRight();
        }

    void Put( const T& t )
        {
        Parent::PutLeft( t );
        }

    typedef void (*IterFunc)(T&, void *);
    typedef int  (*CondFunc)(const T&, void *);
    Parent::ForEach;
    Parent::FirstThat;
    Parent::LastThat;
    Parent::Flush;
    Parent::IsFull;
    Parent::IsEmpty;
    Parent::GetItemsInContainer;
};

template  class TMQueueAsVectorIterator :
    public TMDequeAsVectorIterator
{

public:

    TMQueueAsVectorIterator( const TMQueueAsVector& q ) :
        TMDequeAsVectorIterator(q)
        {
        }

};

/**

  template  class TQueueAsVector
  template  class TQueueAsVectorIterator

  Implements a queue of objects of type T, using a vector as
  the underlying implementation.

*/

template  class TQueueAsVector :
    public TMQueueAsVector
{

public:

    TQueueAsVector( unsigned sz = DEFAULT_QUEUE_SIZE ) :
        TMQueueAsVector(sz)
        {
        }

};

template  class TQueueAsVectorIterator :
    public TMQueueAsVectorIterator
{

public:

    TQueueAsVectorIterator( const TQueueAsVector& q ) :
        TMQueueAsVectorIterator(q)
        {
        }

};

template  class TMIQueueAsVectorIterator;

/**

  template  class TMIQueueAsVector
  template  class TMIQueueAsVectorIterator

  Implements a managed queue of pointers to objects of type T,
  using a vector as the underlying implementation.

*/

template  class TMIQueueAsVector :
    private TMIDequeAsVector
{

    typedef TMIDequeAsVector Parent;

public:

    friend class TMIQueueAsVectorIterator;

    TMIQueueAsVector( unsigned sz = DEFAULT_QUEUE_SIZE ) :
        TMIDequeAsVector(sz)
        {
        }

    T *Peek() const
        {
        return Parent::PeekRight();
        }

    T *Get()
        {
        return Parent::GetRight();
        }

    void Put( T *t )
        {
        Parent::PutLeft( t );
        }

    typedef void (*IterFunc)(T&, void *);
    typedef int  (*CondFunc)(const T&, void *);
    Parent::IsFull;
    Parent::IsEmpty;
    Parent::GetItemsInContainer;
    Parent::Flush;
    Parent::ForEach;
    Parent::FirstThat;
    Parent::LastThat;
		Parent::OwnsElements;
};

template  class TMIQueueAsVectorIterator :
    public TMIDequeAsVectorIterator
{

public:

    TMIQueueAsVectorIterator( const TMIQueueAsVector& q ) :
        TMIDequeAsVectorIterator(q) {}

};

/**

  template  class TIQueueAsVector
  template  class TIQueueAsVectorIterator

  Implements a queue of pointers to objects of type T,
  using a vector as the underlying implementation and
  TStandardAllocator as its memory manager.

*/

template  class TIQueueAsVector :
    public TMIQueueAsVector
{

public:

    TIQueueAsVector( unsigned sz = DEFAULT_QUEUE_SIZE ) :
        TMIQueueAsVector(sz)
        {
        }

};

template  class TIQueueAsVectorIterator :
    public TMIQueueAsVectorIterator
{

public:

    TIQueueAsVectorIterator( const TIQueueAsVector& q ) :
        TMIQueueAsVectorIterator(q)
        {
        }

};

template  class TMQueueAsDoubleListIterator;

/**

  template  class TMQueueAsDoubleList
  template  class TMQueueAsDoubleListIterator

  Implements a managed queue of objects of type T, using a double
  linked list as the underlying implementation.

*/

template  class TMQueueAsDoubleList :
    private TMDequeAsDoubleList
{

    typedef TMDequeAsDoubleList Parent;

public:

    friend class TMQueueAsDoubleListIterator;

    const T& Peek() const
        {
        return Parent::PeekRight();
        }

    T Get()
        {
        return Parent::GetRight();
        }

    void Put( const T& t )
        {
        Parent::PutLeft( t );
        }

    typedef void (*IterFunc)(T&, void *);
    typedef int  (*CondFunc)(const T&, void *);
    Parent::IsFull;
    Parent::IsEmpty;
    Parent::GetItemsInContainer;
    Parent::Flush;
    Parent::ForEach;
    Parent::FirstThat;
    Parent::LastThat;
		Parent::Detach;
};

template  class TMQueueAsDoubleListIterator :
    public TMDequeAsDoubleListIterator
{

public:

    TMQueueAsDoubleListIterator( const TMQueueAsDoubleList& q ) :
        TMDequeAsDoubleListIterator(q)
        {
        }

};

/**

  template  class TQueueAsDoubleList
  template  class TQueueAsDoubleListIterator

  Implements a queue of objects of type T, using a double linked list
  as the underlying implementation.

*/

template  class TQueueAsDoubleList :
    public TMQueueAsDoubleList
{
};

/**

  template  class TQueueAsDoubleList
  template  class TQueueAsDoubleListIterator

  Implements a queue of objects of type T, using a double linked list
  as the underlying implementation.

*/

template  class TQueueAsDoubleListIterator :
    public TMQueueAsDoubleListIterator
{

public:

    TQueueAsDoubleListIterator( const TQueueAsDoubleList& q ) :
        TMQueueAsDoubleListIterator(q)
        {
        }

};

template  class TMIQueueAsDoubleListIterator;

/**

  template  class TMIQueueAsDoubleList
  template  class TMIQueueAsDoubleListIterator

  Implements a managed queue of pointers to objects of type T,
  using a double linked list as the underlying implementation.

*/

template  class TMIQueueAsDoubleList :
    private TMIDequeAsDoubleList
{

    typedef TMIDequeAsDoubleList Parent;

public:

    friend class TMIQueueAsDoubleListIterator;

    T *Peek() const
        {
        return Parent::PeekRight();
        }

    T *Get()
        {
        return Parent::GetRight();
        }

    void Put( T *t )
        {
        Parent::PutLeft( t );
        }

    typedef void (*IterFunc)(T&, void *);
    typedef int  (*CondFunc)(const T&, void *);
    Parent::IsFull;
    Parent::IsEmpty;
    Parent::GetItemsInContainer;
    Parent::Flush;
    Parent::ForEach;
    Parent::FirstThat;
    Parent::LastThat;
		Parent::Detach;
		Parent::OwnsElements;
};

/**

  template  class TMIQueueAsDoubleList
  template  class TMIQueueAsDoubleListIterator

  Implements a managed queue of pointers to objects of type T,
  using a double linked list as the underlying implementation.

*/

template  class TMIQueueAsDoubleListIterator :
    public TMIDequeAsDoubleListIterator
{

public:

    TMIQueueAsDoubleListIterator( const TMIQueueAsDoubleList& q ) :
        TMIDequeAsDoubleListIterator(q) {}

};

/**

  template  class TIQueueAsDoubleList
  template  class TIQueueAsDoubleListIterator

  Implements a queue of pointers to objects of type T, using a double
  linked list as the underlying implementation and TStandardAllocator
  as its memory manager.

*/

template  class TIQueueAsDoubleList :
    public TMIQueueAsDoubleList
{
};

template  class TIQueueAsDoubleListIterator :
    public TMIQueueAsDoubleListIterator
{

public:

    TIQueueAsDoubleListIterator( const TIQueueAsDoubleList& q ) :
        TMIQueueAsDoubleListIterator(q) {}

};

/////////////////////////////////////////////////////////////////////////////////////

/**

  template  class TQueue
  template  class TQueueIterator

  Easy names for TQueueAsVector and TQueueAsVectorIterator

*/

template  class TQueue : public TQueueAsVector
{

public:

    TQueue( unsigned max = DEFAULT_QUEUE_SIZE ) :
        TQueueAsVector( max )
        {
        }

};

/**

  template  class TQueue
  template  class TQueueIterator

  Easy names for TQueueAsVector and TQueueAsVectorIterator

*/

template  class TQueueIterator :
    public TQueueAsVectorIterator
{

public:


    TQueueIterator( const TQueue& a ) :
        TQueueAsVectorIterator(a)
        {
        }

};

/////////////////////////////////////////////////////////////////////////////////////

/**

  template  class TIQueue
  template  class TIQueueIterator

  Easy names for TIQueueAsVector and TIQueueAsVectorIterator

*/

template  class TIQueue : public TIQueueAsVector
{

public:

    TIQueue( unsigned max = DEFAULT_QUEUE_SIZE ) :
        TIQueueAsVector( max )
        {
        }

};

/**

  template  class TIQueue
  template  class TIQueueIterator

  Easy names for TIQueueAsVector and TIQueueAsVectorIterator

*/

template  class TIQueueIterator :
    public TIQueueAsVectorIterator
{

public:


    TIQueueIterator( const TIQueue& a ) :
        TIQueueAsVectorIterator(a)
        {
        }

};

#endif  // __CLASSLIB_QUEUES_H


Generated by: nicola on gulliver.wadahome.it on Sun May 25 13:54:34 2003, using kdoc 2.0a53.