#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_;};
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);
new_item into the Stack at the head (but doesn't allow
duplicates). Returns -1 if failures occur, 1 if item is already
present, else 0.
int remove (const T &item);
item from the Stack. Returns 0 if it removes the item,
-1 if it can't find the item, and -1 if a failure occurs.
int find (const T &item) const;
item occurs the set. Returns 0 if finds, else -1.
size_t size (void) const;
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;