| Home | C-Bits Package Documentation | Project Page |
00001 /* ====================================================================
00002 * The CBITS Software License, Version 1.0
00003 *
00004 * Copyright (c) 2002-2003 <contributor>
00005 * All rights reserved
00006 *
00007 * Redistribution and use of this software, in source and binary forms,
00008 * with or without modification, are permitted provided that the above
00009 * copyright notice, this paragraph, and the following paragraph are
00010 * retained in each source code file.
00011 *
00012 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
00013 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00014 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00015 * DISCLAIMED. IN NO EVENT SHALL BRUCE LOWERY OR OTHER CONTRIBUTORS
00016 * TO THE CBITS LIBRARY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00017 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00018 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
00019 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00020 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00021 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
00022 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00023 * SUCH DAMAGE.
00024 * ====================================================================
00025 */
00026 #ifndef __TEMPLOCK_H__
00027 #define __TEMPLOCK_H__
00028
00029
00030 namespace cbits {
00031
00060 template< typename Lockable >
00061 class TempLock
00062 {
00063 public:
00069 TempLock
00070 (
00072 Lockable* l
00073 )
00074 : _lk(l) { _lk->lock(); }
00075
00076
00082 ~TempLock()
00083 {
00084 _lk->unlock();
00085 }
00086
00087
00094 operator Lockable*()
00095 {
00096 return _lk;
00097 }
00098
00099
00106 operator Lockable&()
00107 {
00108 return *_lk;
00109 }
00110
00111
00117 Lockable& get() { return *_lk; }
00118
00119
00120 private:
00122 Lockable* _lk;
00123
00124 };
00125
00126 };
00127
00128 #endif
00129
00130 /*
00131 * $Id: TempLock.h,v 1.2 2002/10/07 21:07:43 brulow Exp $
00132 *
00133 * History: (Add nothing manually below)
00134 * -----------------------------------------------------------------------
00135 *
00136 * $Log: TempLock.h,v $
00137 * Revision 1.2 2002/10/07 21:07:43 brulow
00138 * Add/improve documentation
00139 *
00140 * Revision 1.1 2002/09/28 00:07:19 brulow
00141 * Add to project
00142 *
00143 *
00144 */
|
|