NAME

ACE_Unbounded_Queue - A Queue of "infinite" length.

SYNOPSIS

#include <ace/Containers.h>

template<class T> class ACE_Unbounded_Queue { public: friend class ACE_Unbounded_Queue_Iterator<T>; typedef ACE_Unbounded_Queue_Iterator<T> ITERATOR; ACE_Unbounded_Queue (ACE_Allocator *alloc = 0); ACE_Unbounded_Queue (const ACE_Unbounded_Queue<T> &); void operator= (const ACE_Unbounded_Queue<T> &); ~ACE_Unbounded_Queue (void); int is_empty (void) const; int is_full (void) const; int enqueue_tail (const T &new_item); int enqueue_head (const T &new_item); int dequeue_head (T &item); void reset (void); int get (T *&item, size_t slot = 0) const; int set (const T &item, size_t slot); size_t size (void) const; void dump (void) const; ACE_Unbounded_Queue_Iterator<T> begin (void); ACE_Unbounded_Queue_Iterator<T> end (void); ACE_ALLOC_HOOK_DECLARE; protected: void delete_nodes (void); void copy_nodes (const ACE_Unbounded_Queue<T> &); ACE_Node<T> *head_; size_t cur_size_; ACE_Allocator *allocator_; };

DESCRIPTION

This implementation of an unbounded queue uses a circular linked list with a dummy node.

Initialization and termination methods.

ACE_Unbounded_Queue (ACE_Allocator *alloc = 0);

ACE_Unbounded_Queue (const ACE_Unbounded_Queue<T> &);

void operator= (const ACE_Unbounded_Queue<T> &);

~ACE_Unbounded_Queue (void);

Check boundary conditions.

int is_empty (void) const;

int is_full (void) const;

Classic queue operations.

int enqueue_tail (const T &new_item);

int enqueue_head (const T &new_item);

int dequeue_head (T &item);

Additional utility methods.

void reset (void);

int get (T *&item, size_t slot = 0) const;

int set (const T &item, size_t slot);

size_t size (void) const;

void dump (void) const;

STL-styled unidirectional iterator factory.

ACE_Unbounded_Queue_Iterator<T> begin (void);

ACE_Unbounded_Queue_Iterator<T> end (void);

ACE_ALLOC_HOOK_DECLARE;

AUTHOR

Doug Schmidt

LIBRARY

ace