|
|
|
refCount.HGo to the documentation of this file.00001 /*---------------------------------------------------------------------------*\ 00002 ========= | 00003 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox 00004 \\ / O peration | 00005 \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. 00006 \\/ M anipulation | 00007 ------------------------------------------------------------------------------- 00008 License 00009 This file is part of OpenFOAM. 00010 00011 OpenFOAM is free software; you can redistribute it and/or modify it 00012 under the terms of the GNU General Public License as published by the 00013 Free Software Foundation; either version 2 of the License, or (at your 00014 option) any later version. 00015 00016 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT 00017 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00018 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00019 for more details. 00020 00021 You should have received a copy of the GNU General Public License 00022 along with OpenFOAM; if not, write to the Free Software Foundation, 00023 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00024 00025 Class 00026 Foam::refCount 00027 00028 Description 00029 Reference counter for tmp<field>. 00030 00031 \*---------------------------------------------------------------------------*/ 00032 00033 #ifndef refCount_H 00034 #define refCount_H 00035 00036 #include "bool.H" 00037 00038 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00039 00040 namespace Foam 00041 { 00042 00043 /*---------------------------------------------------------------------------*\ 00044 Class refCount Declaration 00045 \*---------------------------------------------------------------------------*/ 00046 00047 class refCount 00048 { 00049 // Private data 00050 00051 int count_; 00052 00053 // Private member functions 00054 00055 //- Dissallow copy 00056 refCount(const refCount&); 00057 00058 //- Dissallow bitwise assignment 00059 void operator=(const refCount&); 00060 00061 00062 public: 00063 00064 // Constructors 00065 00066 //- Construct null with zero count 00067 refCount() 00068 : 00069 count_(0) 00070 {} 00071 00072 00073 // Member Functions 00074 00075 //- Return the reference count 00076 int count() const 00077 { 00078 return count_; 00079 } 00080 00081 00082 //- Return true if the reference count is zero 00083 bool okToDelete() const 00084 { 00085 return !count_; 00086 } 00087 00088 00089 //- Reset the reference count to zero 00090 void resetRefCount() 00091 { 00092 count_ = 0; 00093 } 00094 00095 00096 // Member Operators 00097 00098 //- Increment the reference count 00099 void operator++() 00100 { 00101 count_++; 00102 } 00103 00104 //- Increment the reference count 00105 void operator++(int) 00106 { 00107 count_++; 00108 } 00109 00110 //- Decrement the reference count 00111 void operator--() 00112 { 00113 count_--; 00114 } 00115 00116 //- Decrement the reference count 00117 void operator--(int) 00118 { 00119 count_--; 00120 } 00121 }; 00122 00123 00124 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00125 00126 } // End namespace Foam 00127 00128 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00129 00130 #endif 00131 00132 // ************************************************************************* // |