1/*
2================================================================================
3    PROJECT:
4
5        Eddy C++ Thread Safety Project
6
7    CONTENTS:
8
9        Inline methods of class mutex_lock.
10
11    NOTES:
12
13        See notes of mutex_lock.hpp.
14
15    PROGRAMMERS:
16
17        John Eddy (jpeddy@sandia.gov) (JE)
18
19    ORGANIZATION:
20
21        Sandia National Laboratories
22
23    COPYRIGHT:
24
25        See the LICENSE file in the top level JEGA directory.
26
27    VERSION:
28
29        1.0.0
30
31    CHANGES:
32
33        Sat Sep 13 14:02:10 2003 - Original Version (JE)
34
35================================================================================
36*/
37
38
39
40
41/*
42================================================================================
43Document This File
44================================================================================
45*/
46/** \file
47 * \brief Contains the inline methods of the mutex_lock class.
48 */
49
50
51
52
53/*
54================================================================================
55Includes
56================================================================================
57*/
58
59
60
61
62
63
64
65
66/*
67================================================================================
68Begin Namespace
69================================================================================
70*/
71namespace eddy {
72    namespace threads {
73
74
75
76
77
78/*
79================================================================================
80Inline Mutators
81================================================================================
82*/
83
84
85
86
87
88
89
90
91/*
92================================================================================
93Inline Accessors
94================================================================================
95*/
96
97
98
99
100
101
102
103
104/*
105================================================================================
106Inline Public Methods
107================================================================================
108*/
109
110
111
112
113
114
115/*
116================================================================================
117Inline Subclass Visible Methods
118================================================================================
119*/
120
121
122
123
124
125
126
127
128/*
129================================================================================
130Inline Private Methods
131================================================================================
132*/
133
134inline
135void
136mutex_lock::lock(
137    )
138{
139    this->_mutex->lock();
140
141} // mutex_lock::lock
142
143inline
144void
145mutex_lock::unlock(
146    )
147{
148    this->_mutex->unlock();
149
150} // mutex_lock::unlock
151
152inline
153mutex&
154mutex_lock::get_mutex(
155    )
156{
157    return *(this->_mutex);
158
159} // mutex_lock::get_mutex
160
161
162
163
164
165/*
166================================================================================
167Inline Structors
168================================================================================
169*/
170
171
172
173inline
174mutex_lock::mutex_lock(
175    mutex& mutex
176    ) :
177        _mutex(&mutex)
178{
179    // lock the mutex and allow any errors to pass through.
180    this->lock();
181
182} // mutex_lock::mutex_lock
183
184
185inline
186mutex_lock::~mutex_lock(
187    ) throw()
188{
189    // try to unlock and don't allow any errors through.
190    try
191    {
192        this->unlock();
193    }
194    catch(...){}
195
196} // mutex_lock::~mutex_lock
197
198
199
200
201
202/*
203================================================================================
204End Namespace
205================================================================================
206*/
207    } //  namespace threads
208} // namespace eddy
209
210