#ifndef ACE_INTRUSIVE_LIST_CPP #define ACE_INTRUSIVE_LIST_CPP #include "ace/Intrusive_List.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ #if !defined (__ACE_INLINE__) #include "ace/Intrusive_List.inl" #endif /* __ACE_INLINE__ */ ACE_BEGIN_VERSIONED_NAMESPACE_DECL template void ACE_Intrusive_List::push_back (T *node) { if (this->tail_ == 0) { this->tail_ = node; this->head_ = node; node->next (0); node->prev (0); } else { this->tail_->next (node); node->prev (this->tail_); node->next (0); this->tail_ = node; } } template void ACE_Intrusive_List::push_front (T *node) { if (this->head_ == 0) { this->tail_ = node; this->head_ = node; node->next (0); node->prev (0); } else { this->head_->prev (node); node->next (this->head_); node->prev (0); this->head_ = node; } } template T * ACE_Intrusive_List::pop_front () { T *node = this->head_; if (node != 0) { this->unsafe_remove (node); } return node; } template T * ACE_Intrusive_List::pop_back () { T *node = this->tail_; if (node != 0) { this->unsafe_remove (node); } return node; } template void ACE_Intrusive_List::remove (T *node) { for (T *i = this->head_; i != 0; i = i->next ()) { if (node == i) { this->unsafe_remove (node); return; } } } template void ACE_Intrusive_List::unsafe_remove (T *node) { if (node->prev () != 0) node->prev ()->next (node->next ()); else this->head_ = node->next (); if (node->next () != 0) node->next ()->prev (node->prev ()); else this->tail_ = node->prev (); node->next (0); node->prev (0); } ACE_END_VERSIONED_NAMESPACE_DECL #endif /* ACE_INTRUSIVE_LIST_CPP */