summaryrefslogtreecommitdiff
path: root/ace/Free_List.i
diff options
context:
space:
mode:
authornw1 <nw1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-07-12 09:12:05 +0000
committernw1 <nw1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-07-12 09:12:05 +0000
commitc2e7a5e285ae77ef3a470f6e86a25bf7bc7104a9 (patch)
tree178fd2a620cb623e7bc54f5bf8cff1e4de442945 /ace/Free_List.i
parentf7a34252f0d89e795c60644afdfeebf7cc16f764 (diff)
downloadATCD-c2e7a5e285ae77ef3a470f6e86a25bf7bc7104a9.tar.gz
Added a new class "ACE_Locked_Simple_Free_List".
Diffstat (limited to 'ace/Free_List.i')
-rw-r--r--ace/Free_List.i28
1 files changed, 28 insertions, 0 deletions
diff --git a/ace/Free_List.i b/ace/Free_List.i
index e9447fe4ba5..76905b4635c 100644
--- a/ace/Free_List.i
+++ b/ace/Free_List.i
@@ -2,6 +2,34 @@
// Inserts an element onto the free list (if it isn't past the high water mark)
+template <class T, class LOCK> ACE_INLINE T *
+ACE_Locked_Simple_Free_List<T, LOCK>::remove ()
+{
+ ACE_MT (ACE_GUARD_RETURN (LOCK, ace_mon, this->lock_, NULL));
+ T *retv = this->head_;
+ if (retv != 0)
+ {
+ this->head_ = retv->get_next ();
+ this->size_ --;
+ }
+ return retv;
+}
+
+template <class T, class LOCK> ACE_INLINE void
+ACE_Locked_Simple_Free_List<T, LOCK>::add (T *mem)
+{
+ ACE_MT (ACE_GUARD (LOCK, ace_mon, this->lock_));
+ mem->set_next (this->head_);
+ this->head_ = mem;
+ this->size_ ++;
+}
+
+template <class T, class LOCK> ACE_INLINE size_t
+ACE_Locked_Simple_Free_List<T, LOCK>::size ()
+{
+ return this->size_;
+}
+
template <class T, class LOCK> ACE_INLINE void
ACE_Locked_Free_List<T, LOCK>::add (T *element)
{