Restore build on FreeBSD.
[getmangos.git] / dep / ACE_wrappers / ace / Guard_T.inl
blob5fb22b3bac778936a83b2d6be13238ac467f8a3d
1 // -*- C++ -*-
2 //
3 // $Id: Guard_T.inl 82508 2008-08-05 13:52:48Z johnnyw $
5 #include "ace/RW_Thread_Mutex.h"
7 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
9 template <class ACE_LOCK> ACE_INLINE int
10 ACE_Guard<ACE_LOCK>::acquire (void)
12   return this->owner_ = this->lock_->acquire ();
15 template <class ACE_LOCK> ACE_INLINE int
16 ACE_Guard<ACE_LOCK>::tryacquire (void)
18   return this->owner_ = this->lock_->tryacquire ();
21 template <class ACE_LOCK> ACE_INLINE int
22 ACE_Guard<ACE_LOCK>::release (void)
24   if (this->owner_ == -1)
25     return -1;
26   else
27     {
28       this->owner_ = -1;
29       return this->lock_->release ();
30     }
33 template <class ACE_LOCK> ACE_INLINE
34 ACE_Guard<ACE_LOCK>::ACE_Guard (ACE_LOCK &l)
35   : lock_ (&l),
36     owner_ (0)
38   this->acquire ();
41 template <class ACE_LOCK> ACE_INLINE
42 ACE_Guard<ACE_LOCK>::ACE_Guard (ACE_LOCK &l, bool block)
43   : lock_ (&l),
44     owner_ (0)
46   if (block)
47     this->acquire ();
48   else
49     this->tryacquire ();
52 template <class ACE_LOCK> ACE_INLINE
53 ACE_Guard<ACE_LOCK>::ACE_Guard (ACE_LOCK &l, bool /* block */, int become_owner)
54   : lock_ (&l),
55     owner_ (become_owner == 0 ? -1 : 0)
59 // Implicitly and automatically acquire (or try to acquire) the
60 // lock.
62 template <class ACE_LOCK> ACE_INLINE
63 ACE_Guard<ACE_LOCK>::~ACE_Guard (void)
65   this->release ();
68 template <class ACE_LOCK> ACE_INLINE int
69 ACE_Guard<ACE_LOCK>::locked (void) const
71   return this->owner_ != -1;
74 template <class ACE_LOCK> ACE_INLINE int
75 ACE_Guard<ACE_LOCK>::remove (void)
77   return this->lock_->remove ();
80 template <class ACE_LOCK> ACE_INLINE void
81 ACE_Guard<ACE_LOCK>::disown (void)
83   this->owner_ = -1;
86 template <class ACE_LOCK> ACE_INLINE
87 ACE_Write_Guard<ACE_LOCK>::ACE_Write_Guard (ACE_LOCK &m)
88   : ACE_Guard<ACE_LOCK> (&m)
90   this->acquire_write ();
93 template <class ACE_LOCK> ACE_INLINE int
94 ACE_Write_Guard<ACE_LOCK>::acquire_write (void)
96   return this->owner_ = this->lock_->acquire_write ();
99 template <class ACE_LOCK> ACE_INLINE int
100 ACE_Write_Guard<ACE_LOCK>::acquire (void)
102   return this->owner_ = this->lock_->acquire_write ();
105 template <class ACE_LOCK> ACE_INLINE int
106 ACE_Write_Guard<ACE_LOCK>::tryacquire_write (void)
108   return this->owner_ = this->lock_->tryacquire_write ();
111 template <class ACE_LOCK> ACE_INLINE int
112 ACE_Write_Guard<ACE_LOCK>::tryacquire (void)
114   return this->owner_ = this->lock_->tryacquire_write ();
117 template <class ACE_LOCK> ACE_INLINE
118 ACE_Write_Guard<ACE_LOCK>::ACE_Write_Guard (ACE_LOCK &m,
119                                             bool block)
120   : ACE_Guard<ACE_LOCK> (&m)
122   if (block)
123     this->acquire_write ();
124   else
125     this->tryacquire_write ();
128 template <class ACE_LOCK> ACE_INLINE int
129 ACE_Read_Guard<ACE_LOCK>::acquire_read (void)
131   return this->owner_ = this->lock_->acquire_read ();
134 template <class ACE_LOCK> ACE_INLINE int
135 ACE_Read_Guard<ACE_LOCK>::acquire (void)
137   return this->owner_ = this->lock_->acquire_read ();
140 template <class ACE_LOCK> ACE_INLINE int
141 ACE_Read_Guard<ACE_LOCK>::tryacquire_read (void)
143   return this->owner_ = this->lock_->tryacquire_read ();
146 template <class ACE_LOCK> ACE_INLINE int
147 ACE_Read_Guard<ACE_LOCK>::tryacquire (void)
149   return this->owner_ = this->lock_->tryacquire_read ();
152 template <class ACE_LOCK> ACE_INLINE
153 ACE_Read_Guard<ACE_LOCK>::ACE_Read_Guard (ACE_LOCK &m)
154   : ACE_Guard<ACE_LOCK> (&m)
156   this->acquire_read ();
159 template <class ACE_LOCK> ACE_INLINE
160 ACE_Read_Guard<ACE_LOCK>::ACE_Read_Guard (ACE_LOCK &m,
161                                           bool block)
162   : ACE_Guard<ACE_LOCK> (&m)
164   if (block)
165     this->acquire_read ();
166   else
167     this->tryacquire_read ();
170 ACE_END_VERSIONED_NAMESPACE_DECL