ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / OpenFOAM / db / IOobjects / IOPtrList / IOPtrList.C
blob651684f4370f99696011b25ebcf65e208c271adf
1 /*---------------------------------------------------------------------------* \
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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
13     the Free Software Foundation, either version 3 of the License, or
14     (at your 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, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "IOPtrList.H"
28 // * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * * //
30 template<class T>
31 template<class INew>
32 Foam::IOPtrList<T>::IOPtrList(const IOobject& io, const INew& inewt)
34     regIOobject(io)
36     if
37     (
38         (
39             io.readOpt() == IOobject::MUST_READ
40          || io.readOpt() == IOobject::MUST_READ_IF_MODIFIED
41         )
42      || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
43     )
44     {
45         PtrList<T>::read(readStream(typeName), inewt);
46         close();
47     }
51 template<class T>
52 Foam::IOPtrList<T>::IOPtrList(const IOobject& io)
54     regIOobject(io)
56     if
57     (
58         (
59             io.readOpt() == IOobject::MUST_READ
60          || io.readOpt() == IOobject::MUST_READ_IF_MODIFIED
61         )
62      || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
63     )
64     {
65         PtrList<T>::read(readStream(typeName), INew<T>());
66         close();
67     }
71 template<class T>
72 Foam::IOPtrList<T>::IOPtrList(const IOobject& io, const label s)
74     regIOobject(io),
75     PtrList<T>(s)
77     if (io.readOpt() != IOobject::NO_READ)
78     {
79         FatalErrorIn("IOPtrList<T>::IOPtrList(const IOobject&, const label)")
80             << "NO_READ must be set if specifying size" << nl
81             << exit(FatalError);
82     }
86 template<class T>
87 Foam::IOPtrList<T>::IOPtrList(const IOobject& io, const PtrList<T>& list)
89     regIOobject(io)
91     if
92     (
93         (
94             io.readOpt() == IOobject::MUST_READ
95          || io.readOpt() == IOobject::MUST_READ_IF_MODIFIED
96         )
97      || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
98     )
99     {
100         PtrList<T>::read(readStream(typeName), INew<T>());
101         close();
102     }
103     else
104     {
105         PtrList<T>::operator=(list);
106     }
110 template<class T>
111 Foam::IOPtrList<T>::IOPtrList(const IOobject& io, const Xfer<PtrList<T> >& list)
113     regIOobject(io)
115     PtrList<T>::transfer(list());
117     if
118     (
119         (
120             io.readOpt() == IOobject::MUST_READ
121          || io.readOpt() == IOobject::MUST_READ_IF_MODIFIED
122         )
123      || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
124     )
125     {
126         PtrList<T>::read(readStream(typeName), INew<T>());
127         close();
128     }
132 // * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * * //
134 template<class T>
135 Foam::IOPtrList<T>::~IOPtrList()
139 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
141 template<class T>
142 bool Foam::IOPtrList<T>::writeData(Ostream& os) const
144     return (os << *this).good();
148 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
150 template<class T>
151 void Foam::IOPtrList<T>::operator=(const IOPtrList<T>& rhs)
153     PtrList<T>::operator=(rhs);
156 // ************************************************************************* //