Correct feature names
[ACE_TAO.git] / ACE / ace / Containers_T.inl
blobadc0f42cd23327d219b0faf268dbbbf1dd38e4bd
1 // -*- C++ -*-
2 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
4 template <class T> ACE_INLINE int
5 ACE_Bounded_Stack<T>::is_empty (void) const
7   ACE_TRACE ("ACE_Bounded_Stack<T>::is_empty");
8   return this->top_ == 0;
11 template <class T> ACE_INLINE int
12 ACE_Bounded_Stack<T>::is_full (void) const
14   ACE_TRACE ("ACE_Bounded_Stack<T>::is_full");
15   return this->top_ >= this->size_;
18 template <class T> ACE_INLINE int
19 ACE_Bounded_Stack<T>::push (const T &new_item)
21   ACE_TRACE ("ACE_Bounded_Stack<T>::push");
22   if (this->is_full () == 0)
23     {
24       this->stack_[this->top_++] = new_item;
25       return 0;
26     }
27   else
28     return -1;
31 template <class T> ACE_INLINE int
32 ACE_Bounded_Stack<T>::pop (T &item)
34   ACE_TRACE ("ACE_Bounded_Stack<T>::pop");
35   if (this->is_empty () == 0)
36     {
37       item = this->stack_[--this->top_];
38       return 0;
39     }
40   else
41     return -1;
44 template <class T> ACE_INLINE int
45 ACE_Bounded_Stack<T>::top (T &item) const
47   ACE_TRACE ("ACE_Bounded_Stack<T>::top");
48   if (this->is_empty () == 0)
49     {
50       item = this->stack_[this->top_ - 1];
51       return 0;
52     }
53   else
54     return -1;
57 template <class T> ACE_INLINE size_t
58 ACE_Bounded_Stack<T>::size (void) const
60   return this->size_;
63 //----------------------------------------
65 template <class T, size_t ACE_SIZE> ACE_INLINE int
66 ACE_Fixed_Stack<T, ACE_SIZE>::is_empty (void) const
68   ACE_TRACE ("ACE_Fixed_Stack<T, ACE_SIZE>::is_empty");
69   return this->top_ == 0;
72 template <class T, size_t ACE_SIZE> ACE_INLINE int
73 ACE_Fixed_Stack<T, ACE_SIZE>::is_full (void) const
75   ACE_TRACE ("ACE_Fixed_Stack<T, ACE_SIZE>::is_full");
76   return this->top_ >= this->size_;
79 template <class T, size_t ACE_SIZE> ACE_INLINE int
80 ACE_Fixed_Stack<T, ACE_SIZE>::push (const T &new_item)
82   ACE_TRACE ("ACE_Fixed_Stack<T, ACE_SIZE>::push");
83   if (this->is_full () == 0)
84     {
85       this->stack_[this->top_++] = new_item;
86       return 0;
87     }
88   else
89     return -1;
92 template <class T, size_t ACE_SIZE> ACE_INLINE int
93 ACE_Fixed_Stack<T, ACE_SIZE>::pop (T &item)
95   ACE_TRACE ("ACE_Fixed_Stack<T, ACE_SIZE>::pop");
96   if (this->is_empty () == 0)
97     {
98       item = this->stack_[--this->top_];
99       return 0;
100     }
101   else
102     return -1;
105 template <class T, size_t ACE_SIZE> ACE_INLINE int
106 ACE_Fixed_Stack<T, ACE_SIZE>::top (T &item) const
108   ACE_TRACE ("ACE_Fixed_Stack<T, ACE_SIZE>::top");
109   if (this->is_empty () == 0)
110     {
111       item = this->stack_[this->top_ - 1];
112       return 0;
113     }
114   else
115     return -1;
118 template <class T, size_t ACE_SIZE> ACE_INLINE size_t
119 ACE_Fixed_Stack<T, ACE_SIZE>::size (void) const
121   return this->size_;
124 template <class T> ACE_INLINE int
125 ACE_Unbounded_Stack<T>::is_empty (void) const
127   //  ACE_TRACE ("ACE_Unbounded_Stack<T>::is_empty");
128   return this->head_ == this->head_->next_;
131 template <class T> ACE_INLINE int
132 ACE_Unbounded_Stack<T>::top (T &item) const
134   ACE_TRACE ("ACE_Unbounded_Stack<T>::top");
135   if (this->is_empty () == 0)
136     {
137       item = this->head_->next_->item_;
138       return 0;
139     }
140   else
141     return -1;
144 template <class T> ACE_INLINE int
145 ACE_Unbounded_Stack<T>::is_full (void) const
147   ACE_TRACE ("ACE_Unbounded_Stack<T>::is_full");
148   return 0; // ???
151 template <class T> ACE_INLINE size_t
152 ACE_Unbounded_Stack<T>::size (void) const
154   return this->cur_size_;
157 // ---
160 // ---
162 template <class T, size_t ACE_SIZE> ACE_INLINE int
163 ACE_Fixed_Set<T, ACE_SIZE>::is_empty (void) const
165   ACE_TRACE ("ACE_Fixed_Set<T>::is_empty");
166   return this->cur_size_ == 0;
169 template <class T, size_t ACE_SIZE> ACE_INLINE int
170 ACE_Fixed_Set<T, ACE_SIZE>::is_full (void) const
172   ACE_TRACE ("ACE_Fixed_Set<T, ACE_SIZE>::is_full");
173   return this->cur_size_ == this->max_size_;
176 // ---
178 template <class T> ACE_INLINE int
179 ACE_Bounded_Set<T>::is_empty (void) const
181   ACE_TRACE ("ACE_Bounded_Set<T>::is_empty");
182   return this->cur_size_ == 0;
185 template <class T> ACE_INLINE int
186 ACE_Bounded_Set<T>::is_full (void) const
188   ACE_TRACE ("ACE_Bounded_Set<T>::is_full");
189   return this->cur_size_ == this->max_size_;
192 // --
194 template <class T> ACE_INLINE int
195 ACE_Ordered_MultiSet_Iterator<T>::first (void)
197   ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::first");
198   current_ = set_.head_;
200   return (current_ ? 1 : 0);
203 template <class T> ACE_INLINE int
204 ACE_Ordered_MultiSet_Iterator<T>::last (void)
206   ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::last");
207   current_ = set_.tail_;
209   return (current_ ? 1 : 0);
212 template <class T> ACE_INLINE int
213 ACE_Ordered_MultiSet_Iterator<T>::advance (void)
215   ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::advance");
217   current_ = current_ ? current_->next_ : 0;
219   return (current_ ? 1 : 0);
222 template <class T> ACE_INLINE int
223 ACE_Ordered_MultiSet_Iterator<T>::retreat (void)
225   ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::retreat");
227   current_ = current_ ? current_->prev_ : 0;
229   return (current_ ? 1 : 0);
232 template <class T> ACE_INLINE int
233 ACE_Ordered_MultiSet_Iterator<T>::done (void) const
235   ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::done");
237   return (current_ ? 0 : 1);
240 template <class T> ACE_INLINE void
241 ACE_Ordered_MultiSet_Iterator<T>::dump (void) const
243 #if defined (ACE_HAS_DUMP)
244 // ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::dump");
245 #endif /* ACE_HAS_DUMP */
250 // --
252 template <class T> ACE_INLINE int
253 ACE_Ordered_MultiSet<T>::is_empty (void) const
255   ACE_TRACE ("ACE_Ordered_MultiSet<T>::is_empty");
256   return this->cur_size_ > 0 ? 0 : 1;
259 template <class T> ACE_INLINE size_t
260 ACE_Ordered_MultiSet<T>::size (void) const
262 // ACE_TRACE ("ACE_Ordered_MultiSet<T>::size");
263   return this->cur_size_;
266 // ****************************************************************
268 template <class T> ACE_INLINE
269 ACE_Array<T>::ACE_Array (size_t size,
270                          ACE_Allocator *alloc)
271   : ACE_Array_Base<T> (size, alloc)
275 template <class T> ACE_INLINE
276 ACE_Array<T>::ACE_Array (size_t size,
277                          const T &default_value,
278                          ACE_Allocator *alloc)
279   : ACE_Array_Base<T> (size, default_value, alloc)
283 // The copy constructor (performs initialization).
285 template <class T> ACE_INLINE
286 ACE_Array<T>::ACE_Array (const ACE_Array<T> &s)
287    : ACE_Array_Base<T> (s)
291 // Assignment operator (performs assignment).
293 template <class T> ACE_INLINE void
294 ACE_Array<T>::operator= (const ACE_Array<T> &s)
296   // Check for "self-assignment".
298   if (this != &s)
299     this->ACE_Array_Base<T>::operator= (s);
302 // Compare this array with <s> for inequality.
304 template <class T> ACE_INLINE bool
305 ACE_Array<T>::operator!= (const ACE_Array<T> &s) const
307   return !(*this == s);
310 // ****************************************************************
313 // ****************************************************************
315 template <class T> ACE_INLINE void
316 ACE_DLList<T>::operator= (const ACE_DLList<T> &l)
318   *(ACE_DLList_Base *) this = l;
321 template <class T> ACE_INLINE int
322 ACE_DLList<T>::get (T *&item, size_t index)
324   ACE_DLList_Node *node;
325   int result = ACE_DLList_Base::get (node, index);
326   if (result != -1)
327     item = (T *) node->item_;
328   return result;
331 template <class T> ACE_INLINE void
332 ACE_DLList<T>::dump (void) const
334 #if defined (ACE_HAS_DUMP)
335   ACE_DLList_Base::dump ();
336 #endif /* ACE_HAS_DUMP */
339 template <class T> ACE_INLINE int
340 ACE_DLList<T>::remove (ACE_DLList_Node *n)
342   int result = ACE_DLList_Base::remove (n);
343   ACE_DES_FREE (n,
344                 this->allocator_->free,
345                 ACE_DLList_Node);
346   return result;
349 template <class T> ACE_INLINE
350 ACE_DLList<T>::ACE_DLList (ACE_Allocator *alloc)
351   : ACE_DLList_Base (alloc)
355 template <class T> ACE_INLINE
356 ACE_DLList<T>::ACE_DLList (const ACE_DLList<T> &l)
357   : ACE_DLList_Base ((ACE_DLList<T> &) l)
361 template <class T> ACE_INLINE
362 ACE_DLList<T>::~ACE_DLList (void)
364   while (this->delete_head ()) ;
367 template <class T> ACE_INLINE int
368 ACE_DLList_Iterator<T>::remove (void)
370   ACE_DLList_Node *temp = this->ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::next ();
371   this->ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::advance ();
372   return list_->remove (temp);
375 template <class T> ACE_INLINE
376 ACE_DLList_Iterator<T>::ACE_DLList_Iterator (ACE_DLList<T> &l)
377   : ACE_Double_Linked_List_Iterator <ACE_DLList_Node> ((ACE_DLList_Base &)l),
378     list_ (&l)
382 template <class T> ACE_INLINE void
383 ACE_DLList_Iterator<T>::reset (ACE_DLList<T> &l)
385   list_ = &l;
386   this->ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::reset ((ACE_DLList_Base &)l);
389 template <class T> ACE_INLINE int
390 ACE_DLList_Iterator<T>::next (T *&ptr)
392   ACE_DLList_Node *temp =
393     ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::next ();
394   if (temp)
395     ptr = (T *) temp->item_;
396   return temp ? 1 : 0;
399 template <class T> ACE_INLINE T *
400 ACE_DLList_Iterator<T>::next (void) const
402   ACE_DLList_Node *temp = ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::next ();
403   return (T *) (temp ? temp->item_ : 0);
406 template <class T> ACE_INLINE int
407 ACE_DLList_Iterator<T>::advance (void)
409   return this->ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::advance ();
412 template <class T> ACE_INLINE void
413 ACE_DLList_Iterator<T>::dump (void) const
415 #if defined (ACE_HAS_DUMP)
416   ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::dump ();
417 #endif /* ACE_HAS_DUMP */
421 template <class T> ACE_INLINE int
422 ACE_DLList_Reverse_Iterator<T>::remove (void)
424   ACE_DLList_Node *temp = ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::next ();
425   this->ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::advance ();
426   return list_->remove (temp);
429 template <class T> ACE_INLINE
430 ACE_DLList_Reverse_Iterator<T>::ACE_DLList_Reverse_Iterator (ACE_DLList<T> &l)
431   : ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node> ((ACE_DLList_Base &)l),
432     list_ (&l)
436 template <class T> ACE_INLINE void
437 ACE_DLList_Reverse_Iterator<T>::reset (ACE_DLList<T> &l)
439   list_ = &l;
440   this->ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::reset ((ACE_DLList_Base &)l);
443 template <class T> ACE_INLINE int
444 ACE_DLList_Reverse_Iterator<T>::advance (void)
446   return ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::advance ();
449 template <class T> ACE_INLINE int
450 ACE_DLList_Reverse_Iterator<T>::next (T *&ptr)
452   ACE_DLList_Node *temp =
453     ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::next ();
454   if (temp == 0)
455     return 0;
456   ptr = (T *) temp->item_;
457   return 1;
460 template <class T> ACE_INLINE T *
461 ACE_DLList_Reverse_Iterator<T>::next (void) const
463   ACE_DLList_Node *temp = ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::next ();
464   return (T *) (temp ? temp->item_ : 0);
468 template <class T> ACE_INLINE void
469 ACE_DLList_Reverse_Iterator<T>::dump (void) const
471 #if defined (ACE_HAS_DUMP)
472   ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::dump ();
473 #endif /* ACE_HAS_DUMP */
476 ACE_END_VERSIONED_NAMESPACE_DECL