Report patch name instead of index in debug
[foam-extend-3.2.git] / src / foam / db / IOobjects / IOPtrList / IOPtrList.C
blobddcfbf013688f482643500028164401d2399ef40
1 /*---------------------------------------------------------------------------* \
2   =========                 |
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 -------------------------------------------------------------------------------
8 License
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/>.
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         io.readOpt() == IOobject::MUST_READ
39      || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
40     )
41     {
42         PtrList<T>::read(readStream(typeName), inewt);
43         close();
44     }
48 template<class T>
49 Foam::IOPtrList<T>::IOPtrList(const IOobject& io)
51     regIOobject(io)
53     if
54     (
55         io.readOpt() == IOobject::MUST_READ
56      || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
57     )
58     {
59         PtrList<T>::read(readStream(typeName), INew<T>());
60         close();
61     }
65 template<class T>
66 Foam::IOPtrList<T>::IOPtrList(const IOobject& io, const label s)
68     regIOobject(io),
69     PtrList<T>(s)
71     if (io.readOpt() != IOobject::NO_READ)
72     {
73         FatalErrorIn("IOPtrList<T>::IOPtrList(const IOobject&, const label)")
74             << "NO_READ must be set if specifying size" << nl
75             << exit(FatalError);
76     }
80 template<class T>
81 Foam::IOPtrList<T>::IOPtrList(const IOobject& io, const PtrList<T>& list)
83     regIOobject(io)
85     if
86     (
87         io.readOpt() == IOobject::MUST_READ
88      || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
89     )
90     {
91         PtrList<T>::read(readStream(typeName), INew<T>());
92         close();
93     }
94     else
95     {
96         PtrList<T>::operator=(list);
97     }
101 template<class T>
102 Foam::IOPtrList<T>::IOPtrList(const IOobject& io, const Xfer<PtrList<T> >& list)
104     regIOobject(io)
106     PtrList<T>::transfer(list());
108     if
109     (
110         io.readOpt() == IOobject::MUST_READ
111      || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk())
112     )
113     {
114         PtrList<T>::read(readStream(typeName), INew<T>());
115         close();
116     }
120 // * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * * //
122 template<class T>
123 Foam::IOPtrList<T>::~IOPtrList()
127 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
129 template<class T>
130 bool Foam::IOPtrList<T>::writeData(Ostream& os) const
132     return (os << *this).good();
136 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
138 template<class T>
139 void Foam::IOPtrList<T>::operator=(const IOPtrList<T>& rhs)
141     PtrList<T>::operator=(rhs);
144 // ************************************************************************* //