ACE
6.0.6

Implement a generic LIFO abstract data type. More...
#include <Containers_T.h>
Public Types  
typedef ACE_Unbounded_Stack_Iterator < T >  ITERATOR 
Public Member Functions  
ACE_Unbounded_Stack (ACE_Allocator *the_allocator=0)  
ACE_Unbounded_Stack (const ACE_Unbounded_Stack< T > &s)  
The copy constructor (performs initialization).  
void  operator= (const ACE_Unbounded_Stack< T > &s) 
Assignment operator (performs assignment).  
~ACE_Unbounded_Stack (void)  
Perform actions needed when stack goes out of scope.  
int  push (const T &new_item) 
Push an element onto the top of stack.  
int  pop (T &item) 
Pop the top element of the stack.  
int  top (T &item) const 
Examine the top of the stack.  
int  is_empty (void) const 
Returns 1 if the container is empty, otherwise returns 0.  
int  is_full (void) const 
Returns 1 if the container is full, otherwise returns 0.  
int  insert (const T &new_item) 
Linear Insert of an item.  
int  remove (const T &item) 
int  find (const T &item) const 
Finds if item occurs the set. Returns 0 if finds, else 1.  
size_t  size (void) const 
The number of items in the stack.  
void  dump (void) const 
Dump the state of an object.  
Public Attributes  
ACE_ALLOC_HOOK_DECLARE  
Declare the dynamic allocation hooks.  
Private Member Functions  
void  delete_all_nodes (void) 
Delete all the nodes in the stack.  
void  copy_all_nodes (const ACE_Unbounded_Stack< T > &s) 
Copy all nodes from {s} to {this}.  
Private Attributes  
ACE_Node< T > *  head_ 
Head of the linked list of Nodes.  
size_t  cur_size_ 
Current size of the stack.  
ACE_Allocator *  allocator_ 
Allocation strategy of the stack.  
Friends  
class  ACE_Unbounded_Stack_Iterator< T > 
Implement a generic LIFO abstract data type.
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. The stack is implemented as a doubly linked list.
Requirements and Performance Characteristics
ACE_Unbounded_Stack::ACE_Unbounded_Stack  (  ACE_Allocator *  the_allocator = 0  ) 
Initialize a new stack so that it is empty. Use user defined allocation strategy if specified. Initialize an empty stack using the user specified allocation strategy if provided.
ACE_Unbounded_Stack::ACE_Unbounded_Stack  (  const ACE_Unbounded_Stack< T > &  s  ) 
The copy constructor (performs initialization).
Initialize this stack to be an exact copy of {s}.
ACE_Unbounded_Stack::~ACE_Unbounded_Stack  (  void  ) 
Perform actions needed when stack goes out of scope.
Destroy the underlying list for the stack.
void ACE_Unbounded_Stack::copy_all_nodes  (  const ACE_Unbounded_Stack< T > &  s  )  [private] 
Copy all nodes from {s} to {this}.
void ACE_Unbounded_Stack::delete_all_nodes  (  void  )  [private] 
Delete all the nodes in the stack.
void ACE_Unbounded_Stack::dump  (  void  )  const 
Dump the state of an object.
int ACE_Unbounded_Stack::find  (  const T &  item  )  const 
Finds if item occurs the set. Returns 0 if finds, else 1.
Linear find operation.
int ACE_Unbounded_Stack::insert  (  const T &  new_item  ) 
Linear Insert of an item.
Insert {new_item} into the Stack at the head (but doesn't allow duplicates). Returns 1 if failures occur, 1 if item is already present (i.e., no duplicates are allowed), else 0.
int ACE_Unbounded_Stack::is_empty  (  void  )  const 
Returns 1 if the container is empty, otherwise returns 0.
Constant time check to see if the stack is empty.
int ACE_Unbounded_Stack::is_full  (  void  )  const 
Returns 1 if the container is full, otherwise returns 0.
Always resturns 0 since the stack is unbounded.
void ACE_Unbounded_Stack::operator=  (  const ACE_Unbounded_Stack< T > &  s  ) 
Assignment operator (performs assignment).
Perform a deep copy of the rhs into the lhs.
int ACE_Unbounded_Stack::pop  (  T &  item  ) 
Pop the top element of the stack.
Remove and return the top stack item. Returns 1 if the stack is already empty, 0 if the stack is not already empty, and 1 if failure occurs.
int ACE_Unbounded_Stack::push  (  const T &  new_item  ) 
Push an element onto the top of stack.
Place a new item on top of the stack. Returns 1 if the stack is already full, 0 if the stack is not already full, and 1 if failure occurs.
int ACE_Unbounded_Stack::remove  (  const T &  item  ) 
Remove 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. Linear remove operation.
size_t ACE_Unbounded_Stack::size  (  void  )  const 
The number of items in the stack.
Constant time access to the current stack size.
int ACE_Unbounded_Stack::top  (  T &  item  )  const 
Examine the top of the stack.
Return top stack item without removing it. Returns 1 if the stack is already empty, 0 if the stack is not already empty, and 1 if failure occurs.
friend class ACE_Unbounded_Stack_Iterator< T > [friend] 
Declare the dynamic allocation hooks.
ACE_Allocator* ACE_Unbounded_Stack::allocator_ [private] 
Allocation strategy of the stack.
size_t ACE_Unbounded_Stack::cur_size_ [private] 
Current size of the stack.
ACE_Node<T>* ACE_Unbounded_Stack::head_ [private] 
Head of the linked list of Nodes.