00001 //******************************************************************** 00002 //*** mm/RefWrap.hh 00003 //*** Copyright (c) 2003-2005 by Markus Winand <mws@fatalmind.com> 00004 //*** $Id: RefWrap.hh,v 1.4 2005-01-06 16:28:09 mws Exp $ 00005 //******************************************************************** 00006 /* 00007 This file is part of ResourcePool. 00008 00009 ResourcePool is free software; you can redistribute it 00010 and/or modify it under the terms of the GNU General Public License 00011 as published by the Free Software Foundation; either version 2 of 00012 the License, or (at your option) any later version. 00013 00014 ResourcePool is distributed in the hope that it will be 00015 useful, but WITHOUT ANY WARRANTY; without even the implied warranty 00016 of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 00019 You should have received a copy of the GNU General Public License 00020 along with ResourcePool; if not, write to the Free Software 00021 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 00022 02111-1307 USA */ 00023 00024 #ifndef MM_REFWRAP_HH 00025 #define MM_REFWRAP_HH 00026 00027 namespace fatalmind { 00028 00029 template<class PR> 00030 class RefWrap { 00031 public: 00032 RefWrap() 00033 : _pr() 00034 { 00035 } 00036 00037 RefWrap(const PR& pr) 00038 : _pr(const_cast<PR*>(&pr)) 00039 { 00040 } 00041 00042 RefWrap(const RefWrap<PR>& rho) 00043 : _pr(rho._pr) 00044 { 00045 } 00046 00047 RefWrap<PR>& operator=(const RefWrap<PR>& rho) { 00048 _pr = rho._pr; 00049 return *this; 00050 } 00051 00052 bool operator<(const RefWrap<PR>& rho) const 00053 { 00054 return _pr < rho._pr; 00055 } 00056 00057 PR& getRef() const { 00058 return *_pr; 00059 } 00060 private: 00061 PR* _pr; 00062 }; 00063 00064 } // namespace fatalmind 00065 #endif