3 // $Id: Containers_T.inl 80826 2008-03-04 14:51:23Z wotte $
5 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
7 template <class T> ACE_INLINE int
8 ACE_Bounded_Stack<T>::is_empty (void) const
10 ACE_TRACE ("ACE_Bounded_Stack<T>::is_empty");
11 return this->top_ == 0;
14 template <class T> ACE_INLINE int
15 ACE_Bounded_Stack<T>::is_full (void) const
17 ACE_TRACE ("ACE_Bounded_Stack<T>::is_full");
18 return this->top_ >= this->size_;
21 template <class T> ACE_INLINE int
22 ACE_Bounded_Stack<T>::push (const T &new_item)
24 ACE_TRACE ("ACE_Bounded_Stack<T>::push");
25 if (this->is_full () == 0)
27 this->stack_[this->top_++] = new_item;
34 template <class T> ACE_INLINE int
35 ACE_Bounded_Stack<T>::pop (T &item)
37 ACE_TRACE ("ACE_Bounded_Stack<T>::pop");
38 if (this->is_empty () == 0)
40 item = this->stack_[--this->top_];
47 template <class T> ACE_INLINE int
48 ACE_Bounded_Stack<T>::top (T &item) const
50 ACE_TRACE ("ACE_Bounded_Stack<T>::top");
51 if (this->is_empty () == 0)
53 item = this->stack_[this->top_ - 1];
60 template <class T> ACE_INLINE size_t
61 ACE_Bounded_Stack<T>::size (void) const
66 //----------------------------------------
68 template <class T, size_t ACE_SIZE> ACE_INLINE int
69 ACE_Fixed_Stack<T, ACE_SIZE>::is_empty (void) const
71 ACE_TRACE ("ACE_Fixed_Stack<T, ACE_SIZE>::is_empty");
72 return this->top_ == 0;
75 template <class T, size_t ACE_SIZE> ACE_INLINE int
76 ACE_Fixed_Stack<T, ACE_SIZE>::is_full (void) const
78 ACE_TRACE ("ACE_Fixed_Stack<T, ACE_SIZE>::is_full");
79 return this->top_ >= this->size_;
82 template <class T, size_t ACE_SIZE> ACE_INLINE int
83 ACE_Fixed_Stack<T, ACE_SIZE>::push (const T &new_item)
85 ACE_TRACE ("ACE_Fixed_Stack<T, ACE_SIZE>::push");
86 if (this->is_full () == 0)
88 this->stack_[this->top_++] = new_item;
95 template <class T, size_t ACE_SIZE> ACE_INLINE int
96 ACE_Fixed_Stack<T, ACE_SIZE>::pop (T &item)
98 ACE_TRACE ("ACE_Fixed_Stack<T, ACE_SIZE>::pop");
99 if (this->is_empty () == 0)
101 item = this->stack_[--this->top_];
108 template <class T, size_t ACE_SIZE> ACE_INLINE int
109 ACE_Fixed_Stack<T, ACE_SIZE>::top (T &item) const
111 ACE_TRACE ("ACE_Fixed_Stack<T, ACE_SIZE>::top");
112 if (this->is_empty () == 0)
114 item = this->stack_[this->top_ - 1];
121 template <class T, size_t ACE_SIZE> ACE_INLINE size_t
122 ACE_Fixed_Stack<T, ACE_SIZE>::size (void) const
127 template <class T> ACE_INLINE int
128 ACE_Unbounded_Stack<T>::is_empty (void) const
130 // ACE_TRACE ("ACE_Unbounded_Stack<T>::is_empty");
131 return this->head_ == this->head_->next_;
134 template <class T> ACE_INLINE int
135 ACE_Unbounded_Stack<T>::top (T &item) const
137 ACE_TRACE ("ACE_Unbounded_Stack<T>::top");
138 if (this->is_empty () == 0)
140 item = this->head_->next_->item_;
147 template <class T> ACE_INLINE int
148 ACE_Unbounded_Stack<T>::is_full (void) const
150 ACE_TRACE ("ACE_Unbounded_Stack<T>::is_full");
154 template <class T> ACE_INLINE size_t
155 ACE_Unbounded_Stack<T>::size (void) const
157 return this->cur_size_;
165 template <class T, size_t ACE_SIZE> ACE_INLINE int
166 ACE_Fixed_Set<T, ACE_SIZE>::is_empty (void) const
168 ACE_TRACE ("ACE_Fixed_Set<T>::is_empty");
169 return this->cur_size_ == 0;
172 template <class T, size_t ACE_SIZE> ACE_INLINE int
173 ACE_Fixed_Set<T, ACE_SIZE>::is_full (void) const
175 ACE_TRACE ("ACE_Fixed_Set<T, ACE_SIZE>::is_full");
176 return this->cur_size_ == this->max_size_;
181 template <class T> ACE_INLINE int
182 ACE_Bounded_Set<T>::is_empty (void) const
184 ACE_TRACE ("ACE_Bounded_Set<T>::is_empty");
185 return this->cur_size_ == 0;
188 template <class T> ACE_INLINE int
189 ACE_Bounded_Set<T>::is_full (void) const
191 ACE_TRACE ("ACE_Bounded_Set<T>::is_full");
192 return this->cur_size_ == this->max_size_;
197 template <class T> ACE_INLINE int
198 ACE_Ordered_MultiSet_Iterator<T>::first (void)
200 ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::first");
201 current_ = set_.head_;
203 return (current_ ? 1 : 0);
206 template <class T> ACE_INLINE int
207 ACE_Ordered_MultiSet_Iterator<T>::last (void)
209 ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::last");
210 current_ = set_.tail_;
212 return (current_ ? 1 : 0);
215 template <class T> ACE_INLINE int
216 ACE_Ordered_MultiSet_Iterator<T>::advance (void)
218 ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::advance");
220 current_ = current_ ? current_->next_ : 0;
222 return (current_ ? 1 : 0);
225 template <class T> ACE_INLINE int
226 ACE_Ordered_MultiSet_Iterator<T>::retreat (void)
228 ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::retreat");
230 current_ = current_ ? current_->prev_ : 0;
232 return (current_ ? 1 : 0);
235 template <class T> ACE_INLINE int
236 ACE_Ordered_MultiSet_Iterator<T>::done (void) const
238 ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::done");
240 return (current_ ? 0 : 1);
243 template <class T> ACE_INLINE void
244 ACE_Ordered_MultiSet_Iterator<T>::dump (void) const
246 #if defined (ACE_HAS_DUMP)
247 // ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::dump");
248 #endif /* ACE_HAS_DUMP */
255 template <class T> ACE_INLINE int
256 ACE_Ordered_MultiSet<T>::is_empty (void) const
258 ACE_TRACE ("ACE_Ordered_MultiSet<T>::is_empty");
259 return this->cur_size_ > 0 ? 0 : 1;
262 template <class T> ACE_INLINE size_t
263 ACE_Ordered_MultiSet<T>::size (void) const
265 // ACE_TRACE ("ACE_Ordered_MultiSet<T>::size");
266 return this->cur_size_;
269 // ****************************************************************
271 template <class T> ACE_INLINE
272 ACE_Array<T>::ACE_Array (size_t size,
273 ACE_Allocator *alloc)
274 : ACE_Array_Base<T> (size, alloc)
278 template <class T> ACE_INLINE
279 ACE_Array<T>::ACE_Array (size_t size,
280 const T &default_value,
281 ACE_Allocator *alloc)
282 : ACE_Array_Base<T> (size, default_value, alloc)
286 // The copy constructor (performs initialization).
288 template <class T> ACE_INLINE
289 ACE_Array<T>::ACE_Array (const ACE_Array<T> &s)
290 : ACE_Array_Base<T> (s)
294 // Assignment operator (performs assignment).
296 template <class T> ACE_INLINE void
297 ACE_Array<T>::operator= (const ACE_Array<T> &s)
299 // Check for "self-assignment".
302 this->ACE_Array_Base<T>::operator= (s);
305 // Compare this array with <s> for inequality.
307 template <class T> ACE_INLINE bool
308 ACE_Array<T>::operator!= (const ACE_Array<T> &s) const
310 return !(*this == s);
313 // ****************************************************************
316 // ****************************************************************
318 template <class T> ACE_INLINE void
319 ACE_DLList<T>::operator= (const ACE_DLList<T> &l)
321 *(ACE_DLList_Base *) this = l;
324 template <class T> ACE_INLINE int
325 ACE_DLList<T>::get (T *&item, size_t index)
327 ACE_DLList_Node *node;
328 int result = ACE_DLList_Base::get (node, index);
330 item = (T *) node->item_;
334 template <class T> ACE_INLINE void
335 ACE_DLList<T>::dump (void) const
337 #if defined (ACE_HAS_DUMP)
338 ACE_DLList_Base::dump ();
339 #endif /* ACE_HAS_DUMP */
342 template <class T> ACE_INLINE int
343 ACE_DLList<T>::remove (ACE_DLList_Node *n)
345 int result = ACE_DLList_Base::remove (n);
347 this->allocator_->free,
352 template <class T> ACE_INLINE
353 ACE_DLList<T>::ACE_DLList (ACE_Allocator *alloc)
354 : ACE_DLList_Base (alloc)
358 template <class T> ACE_INLINE
359 ACE_DLList<T>::ACE_DLList (const ACE_DLList<T> &l)
360 : ACE_DLList_Base ((ACE_DLList<T> &) l)
364 template <class T> ACE_INLINE
365 ACE_DLList<T>::~ACE_DLList (void)
367 while (this->delete_head ()) ;
370 template <class T> ACE_INLINE int
371 ACE_DLList_Iterator<T>::remove (void)
373 ACE_DLList_Node *temp = this->ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::next ();
374 this->ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::advance ();
375 return list_->remove (temp);
378 template <class T> ACE_INLINE
379 ACE_DLList_Iterator<T>::ACE_DLList_Iterator (ACE_DLList<T> &l)
380 : ACE_Double_Linked_List_Iterator <ACE_DLList_Node> ((ACE_DLList_Base &)l),
385 template <class T> ACE_INLINE void
386 ACE_DLList_Iterator<T>::reset (ACE_DLList<T> &l)
389 this->ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::reset ((ACE_DLList_Base &)l);
392 template <class T> ACE_INLINE int
393 ACE_DLList_Iterator<T>::next (T *&ptr)
395 ACE_DLList_Node *temp =
396 ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::next ();
398 ptr = (T *) temp->item_;
402 template <class T> ACE_INLINE T *
403 ACE_DLList_Iterator<T>::next (void) const
405 ACE_DLList_Node *temp = ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::next ();
406 return (T *) (temp ? temp->item_ : 0);
409 template <class T> ACE_INLINE int
410 ACE_DLList_Iterator<T>::advance (void)
412 return this->ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::advance ();
415 template <class T> ACE_INLINE void
416 ACE_DLList_Iterator<T>::dump (void) const
418 #if defined (ACE_HAS_DUMP)
419 ACE_Double_Linked_List_Iterator <ACE_DLList_Node>::dump ();
420 #endif /* ACE_HAS_DUMP */
424 template <class T> ACE_INLINE int
425 ACE_DLList_Reverse_Iterator<T>::remove (void)
427 ACE_DLList_Node *temp = ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::next ();
428 this->ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::advance ();
429 return list_->remove (temp);
432 template <class T> ACE_INLINE
433 ACE_DLList_Reverse_Iterator<T>::ACE_DLList_Reverse_Iterator (ACE_DLList<T> &l)
434 : ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node> ((ACE_DLList_Base &)l),
439 template <class T> ACE_INLINE void
440 ACE_DLList_Reverse_Iterator<T>::reset (ACE_DLList<T> &l)
443 this->ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::reset ((ACE_DLList_Base &)l);
446 template <class T> ACE_INLINE int
447 ACE_DLList_Reverse_Iterator<T>::advance (void)
449 return ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::advance ();
452 template <class T> ACE_INLINE int
453 ACE_DLList_Reverse_Iterator<T>::next (T *&ptr)
455 ACE_DLList_Node *temp =
456 ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::next ();
459 ptr = (T *) temp->item_;
463 template <class T> ACE_INLINE T *
464 ACE_DLList_Reverse_Iterator<T>::next (void) const
466 ACE_DLList_Node *temp = ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::next ();
467 return (T *) (temp ? temp->item_ : 0);
471 template <class T> ACE_INLINE void
472 ACE_DLList_Reverse_Iterator<T>::dump (void) const
474 #if defined (ACE_HAS_DUMP)
475 ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::dump ();
476 #endif /* ACE_HAS_DUMP */
479 ACE_END_VERSIONED_NAMESPACE_DECL