home *** CD-ROM | disk | FTP | other *** search
- /*------------------------------------------------------------------------*/
- /* */
- /* QUEUE.H */
- /* */
- /* Copyright Borland International 1991, 1993 */
- /* All Rights Reserved */
- /* */
- /*------------------------------------------------------------------------*/
-
- #if !defined( __QUEUE_H )
- #define __QUEUE_H
-
- #define BI_OLDNAMES
-
- #if !defined( TEMPLATES )
-
- #if !defined( __CLSTYPES_H )
- #include "classlib\obsolete\ClsTypes.h"
- #endif // __CLSTYPES_H
-
- #if !defined( __DEQUE_H )
- #include "classlib\obsolete\Deque.h"
- #endif // __DEQUE_H
-
- #pragma option -Vo-
- #if defined( __BCOPT__ ) && !defined( __FLAT__ ) && !defined( _ALLOW_po )
- #pragma option -po-
- #endif
-
- _CLASSDEF(Queue)
-
- class _CLASSTYPE Queue : public Deque
- {
-
- public:
-
- Object _FAR & get()
- {
- return Deque::getRight();
- }
-
- void put( Object _FAR & o )
- {
- Deque::putLeft( o );
- }
-
- virtual classType isA() const
- {
- return queueClass;
- }
-
- virtual char _FAR *nameOf() const
- {
- return "Queue";
- }
-
- private:
-
- Object _FAR & getLeft();
- Object _FAR & getRight();
-
- void putLeft( Object _FAR & );
- void putRight( Object _FAR & );
-
- };
-
- #else // TEMPLATES
-
- #if !defined( __QUEUES_H )
- #include "classlib\Queues.h"
- #endif // __QUEUES_H
-
- #pragma option -Vo-
- #if defined( __BCOPT__ ) && !defined( __FLAT__ ) && !defined( _ALLOW_po )
- #pragma option -po-
- #endif
-
- #define Queue BI_TCQueueAsDoubleList
- #define PQueue PBI_TCQueueAsDoubleList
- #define RQueue RBI_TCQueueAsDoubleList
- #define RPQueue RPBI_TCQueueAsDoubleList
- #define PCQueue PCBI_TCQueueAsDoubleList
- #define RCQueue RCBI_TCQueueAsDoubleList
-
- _CLASSDEF( BI_TCQueueAsDoubleList )
-
- #define QueueIterator BI_TCQueueAsDoubleListIterator
- #define PQueueIterator PBI_TCQueueAsDoubleListIterator
- #define RQueueIterator RBI_TCQueueAsDoubleListIterator
- #define RPQueueIterator RPBI_TCQueueAsDoubleListIterator
- #define PCQueueIterator PCBI_TCQueueAsDoubleListIterator
- #define RCQueueIterator RCBI_TCQueueAsDoubleListIterator
-
- _CLASSDEF( BI_TCQueueAsDoubleListIterator )
-
- /*------------------------------------------------------------------------*/
- /* */
- /* class BI_OQueueAsVector */
- /* */
- /* Implements a queue of pointers to Object, */
- /* using a vector as the underlying implementation. */
- /* */
- /*------------------------------------------------------------------------*/
-
- class _CLASSTYPE BI_OQueueAsVector : public BI_ODequeAsVector
- {
-
- public:
-
- BI_OQueueAsVector( unsigned sz = DEFAULT_QUEUE_SIZE ) :
- BI_ODequeAsVector(sz)
- {
- }
-
- Object _FAR *get()
- {
- return BI_ODequeAsVector::getRight();
- }
-
- void put( Object _FAR *t )
- {
- BI_ODequeAsVector::putLeft( t );
- }
-
- private:
-
- Object _FAR *getLeft();
- Object _FAR *getRight();
-
- void putLeft( Object _FAR * );
- void putRight( Object _FAR * );
-
- };
-
- class _CLASSTYPE BI_OQueueAsVectorIterator :
- public BI_ODequeAsVectorIterator
- {
-
- public:
-
- BI_OQueueAsVectorIterator( const BI_ODequeAsVector _FAR &q ) :
- BI_ODequeAsVectorIterator(q) {}
-
- };
-
- /*------------------------------------------------------------------------*/
- /* */
- /* class BI_TCQueueAsVector */
- /* */
- /* Implements an Object queue, with the full semantics of */
- /* the BC 2.0 style queue, using a vector as the underlying */
- /* implementation. */
- /* */
- /*------------------------------------------------------------------------*/
-
- class _CLASSTYPE BI_TCQueueAsVector : public BI_TCDequeAsVector
- {
-
- public:
-
- BI_TCQueueAsVector( unsigned sz = DEFAULT_QUEUE_SIZE ) :
- BI_TCDequeAsVector(sz)
- {
- }
-
- Object _FAR & get()
- {
- return BI_TCDequeAsVector::getRight();
- }
-
- void put( Object _FAR & t )
- { BI_TCDequeAsVector::putLeft( t );
- }
-
- virtual classType isA() const
- {
- return queueClass;
- }
-
- virtual char _FAR *nameOf() const
- {
- return "BI_TCQueueAsDoubleList";
- }
-
- virtual ContainerIterator _FAR & initIterator() const;
-
- private:
-
- Object _FAR & getLeft();
- Object _FAR & getRight();
-
- void putLeft( Object _FAR & );
- void putRight( Object _FAR & );
-
- };
-
- class _CLASSTYPE BI_TCQueueAsVectorIterator :
- public BI_TCDequeAsVectorIterator
- {
-
- public:
-
- BI_TCQueueAsVectorIterator( const BI_TCQueueAsVector _FAR &q ) :
- BI_TCDequeAsVectorIterator(q)
- {
- }
-
- };
-
- inline ContainerIterator _FAR & BI_TCQueueAsVector::initIterator() const
- {
- return *new BI_TCQueueAsVectorIterator( *this );
- }
-
- /*------------------------------------------------------------------------*/
- /* */
- /* class BI_OQueueAsDoubleList */
- /* */
- /* Implements a queue of pointers to Object, */
- /* using a double linked list as the underlying implementation. */
- /* */
- /*------------------------------------------------------------------------*/
-
- class _CLASSTYPE BI_OQueueAsDoubleList : public BI_ODequeAsDoubleList
- {
-
- public:
-
- Object _FAR *get()
- {
- return BI_ODequeAsDoubleList::getRight();
- }
-
- void put( Object _FAR *t )
- {
- BI_ODequeAsDoubleList::putLeft( t );
- }
-
- private:
-
- Object _FAR *getLeft();
- Object _FAR *getRight();
-
- void putLeft( Object _FAR * );
- void putRight( Object _FAR * );
-
- };
-
- class _CLASSTYPE BI_OQueueAsDoubleListIterator :
- public BI_ODequeAsDoubleListIterator
- {
-
- public:
-
- BI_OQueueAsDoubleListIterator( const BI_OQueueAsDoubleList _FAR & q ) :
- BI_ODequeAsDoubleListIterator(q) {}
-
- };
-
- /*------------------------------------------------------------------------*/
- /* */
- /* class BI_TCQueueAsDoubleList */
- /* */
- /* Implements an Object queue, with the full semantics of */
- /* the BC 2.0 style queue, using a double linked list as the underlying */
- /* implementation. */
- /* */
- /*------------------------------------------------------------------------*/
-
- class _CLASSTYPE BI_TCQueueAsDoubleList : public BI_TCDequeAsDoubleList
- {
-
- public:
-
- Object _FAR & get()
- {
- return BI_TCDequeAsDoubleList::getRight();
- }
-
- void put( Object _FAR & t )
- {
- BI_TCDequeAsDoubleList::putLeft( t );
- }
-
- virtual classType isA() const
- {
- return queueClass;
- }
-
- virtual char _FAR *nameOf() const
- {
- return "BI_TCQueueAsDoubleList";
- }
-
- virtual ContainerIterator _FAR & initIterator() const;
-
- private:
-
- Object _FAR & getLeft();
- Object _FAR & getRight();
-
- void putLeft( Object _FAR & );
- void putRight( Object _FAR & );
-
- };
-
- class _CLASSTYPE BI_TCQueueAsDoubleListIterator :
- public BI_TCDequeAsDoubleListIterator
- {
-
- public:
-
- BI_TCQueueAsDoubleListIterator( const BI_TCQueueAsDoubleList _FAR &q ) :
- BI_TCDequeAsDoubleListIterator(q) {}
-
- };
-
- inline ContainerIterator _FAR & BI_TCQueueAsDoubleList::initIterator() const
- {
- return *new BI_TCQueueAsDoubleListIterator( *this );
- }
-
- #endif // TEMPLATES
-
- #if defined( __BCOPT__ ) && !defined( __FLAT__ ) && !defined( _ALLOW_po )
- #pragma option -po.
- #endif
- #pragma option -Vo.
-
- #endif // __QUEUE_H
-
-