NAME

ACE_Unbounded_Stack - Implement a generic LIFO abstract data type.

SYNOPSIS

#include <ace/Containers.h>

template<class T> class ACE_Unbounded_Stack { public: friend class ACE_Unbounded_Stack_Iterator<T>; typedef ACE_Unbounded_Stack_Iterator<T> ITERATOR; ACE_Unbounded_Stack (ACE_Allocator *alloc = 0); ACE_Unbounded_Stack (const ACE_Unbounded_Stack<T> &s); void operator= (const ACE_Unbounded_Stack<T> &s); ~ACE_Unbounded_Stack (void); int push (const T &new_item); int pop (T &item); int top (T &item) const; int is_empty (void) const; int is_full (void) const; int insert (const T &new_item); int remove (const T &item); int find (const T &item) const; size_t size (void) const; void dump (void) const; ACE_ALLOC_HOOK_DECLARE; private: void delete_all_nodes (void); void copy_all_nodes (const ACE_Unbounded_Stack<T> &s); ACE_Node<T> *head_; size_t cur_size_; ACE_Allocator *allocator_; };

DESCRIPTION

This implementation of an unbounded Stack uses a linked list. If you use the insert or remove methods you should keep in mind that duplicate entries aren't allowed. In general, therefore, you should avoid the use of these methods since they aren't really part of the ADT stack.

Initialization, assignemnt, and termination methods.

ACE_Unbounded_Stack (ACE_Allocator *alloc = 0);

ACE_Unbounded_Stack (const ACE_Unbounded_Stack<T> &s);

void operator= (const ACE_Unbounded_Stack<T> &s);

~ACE_Unbounded_Stack (void);

Classic Stack operations.

int push (const T &new_item);

int pop (T &item);

int top (T &item) const;

Check boundary conditions.

int is_empty (void) const;

int is_full (void) const;

Auxiliary methods (not strictly part of the Stack ADT).

int insert (const T &new_item);

int remove (const T &item);

int find (const T &item) const;

size_t size (void) const;

void dump (void) const;

ACE_ALLOC_HOOK_DECLARE;

AUTHOR

Doug Schmidt

Initialization and termination methods.

Check boundary conditions.

Classic unordered set operations.

LIBRARY

ace