1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | foam-extend: Open Source CFD
4 \\ / O peration | Version: 3.2
5 \\ / A nd | Web: http://www.foam-extend.org
6 \\/ M anipulation | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
9 This file is part of foam-extend.
11 foam-extend is free software: you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by the
13 Free Software Foundation, either version 3 of the License, or (at your
14 option) any later version.
16 foam-extend is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
28 An auto-pointer similar to the STL auto_ptr but with automatic casting
29 to a reference to the type and with pointer allocation checking on access.
34 \*---------------------------------------------------------------------------*/
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 /*---------------------------------------------------------------------------*\
47 Class autoPtr Declaration
48 \*---------------------------------------------------------------------------*/
63 //- Store object pointer
64 inline explicit autoPtr(T* = 0);
66 //- Construct as copy by transfering pointer to this autoPtr and
67 // setting the arguments pointer to NULL
68 inline autoPtr(const autoPtr<T>&);
73 //- Delete object if pointer is not NULL
81 //- Return true if the autoPtr is empty (ie, no pointer set).
82 inline bool empty() const;
84 //- Return true if the autoPtr valid (ie, the pointer is set).
85 inline bool valid() const;
90 //- Return object pointer for reuse
93 //- Set pointer to that given.
94 // If object pointer already set issue a FatalError.
97 //- If object pointer already set, delete object and set to
99 inline void reset(T* = 0);
101 //- If object pointer points to valid object:
102 // delete object and set pointer to NULL
108 //- Return reference to the object data
109 inline T& operator()();
111 //- Return const reference to the object data
112 inline const T& operator()() const;
114 // inline T& operator*();
115 // inline const T& operator*() const;
117 inline operator const T&() const;
119 //- Return object pointer
120 inline T* operator->();
122 //- Return const object pointer
123 inline const T* operator->() const;
125 //- Take over object pointer from parameter
126 inline void operator=(const autoPtr<T>&);
130 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
132 } // End namespace Foam
134 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
136 #include "autoPtrI.H"
138 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
142 // ************************************************************************* //