initial commit for version 1.5.x patch release
[OpenFOAM-1.5.x.git] / src / OpenFOAM / db / Callback / Callback.C
bloba8195f26b837f6db46b7943f1f450e1dfc714035
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM 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 2 of the License, or (at your
14     option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM; if not, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 \*---------------------------------------------------------------------------*/
27 #include "Callback.H"
29 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
31 namespace Foam
34 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
36 template<class CallbackType>
37 Callback<CallbackType>::Callback(CallbackRegistry<CallbackType>& cbr)
39     cbr_(cbr)
41     checkIn();
45 template<class CallbackType>
46 Callback<CallbackType>::Callback(const Callback<CallbackType>& cb)
48     cbr_(cb.cbr_)
50     checkIn();
54 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
56 template<class CallbackType>
57 Callback<CallbackType>::~Callback()
59     checkOut();
63 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
65 template<class CallbackType>
66 bool Callback<CallbackType>::checkIn()
68     if (!Callback<CallbackType>::link::registered())
69     {
70         cbr_.append(static_cast<CallbackType*>(this));
71         return true;
72     }
73     else
74     {
75         return false;
76     }
80 template<class CallbackType>
81 bool Callback<CallbackType>::checkOut()
83     if (Callback<CallbackType>::link::registered())
84     {
85         CallbackType* cbPtr = cbr_.remove(static_cast<CallbackType*>(this));
87         if (cbPtr)
88         {
89             return true;
90         }
91         else
92         {
93             return false;
94         }
95     }
96     else
97     {
98         return false;
99     }
103 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
105 } // End namespace Foam
107 // ************************************************************************* //