Report patch name instead of index in debug
[foam-extend-3.2.git] / src / foam / containers / Identifiers / Keyed / KeyedI.H
blobab137d3ebd0751b743dfbc115175ef19c92e1106
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 "IOstreams.H"
28 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
30 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
32 template<class T>
33 inline Foam::Keyed<T>::Keyed()
35     key_(-1)
39 template<class T>
40 inline Foam::Keyed<T>::Keyed(const T& item, const label key)
42     T(item),
43     key_(key)
47 template<class T>
48 inline Foam::Keyed<T>::Keyed(const Xfer<T>& item, const label key)
50     T(item),
51     key_(key)
55 template<class T>
56 inline Foam::Keyed<T>::Keyed(Istream& is)
58     is >> *this;
62 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
64 template<class T>
65 inline Foam::label Foam::Keyed<T>::key() const
67     return key_;
70 template<class T>
71 inline Foam::label& Foam::Keyed<T>::key()
73     return key_;
77 template<class T>
78 inline Foam::List<Foam::Keyed<T> >
79 Foam::Keyed<T>::createList(const List<T>& lst, const label key)
81     List<Keyed<T> > newList(lst.size());
83     forAll (lst, elemI)
84     {
85         newList[elemI] = Keyed(lst[elemI], key);
86     }
87     return newList;
91 template<class T>
92 inline Foam::List<Foam::Keyed<T> >
93 Foam::Keyed<T>::createList(const List<T>& lst, const List<label>& keys)
95     if (lst.size() != keys.size())
96     {
97         FatalErrorIn
98         (
99             "Foam::Keyed<T>::createList(const List<T>&, const List<label>&)"
100         )
101             << "size mismatch adding keys to a list:" << nl
102             << "List has size " << lst.size()
103             << " and keys has size " << keys.size() << nl
104             << abort(FatalError);
105     }
107     List<Keyed<T> > newList(lst.size());
109     forAll (lst, elemI)
110     {
111         newList[elemI] = Keyed(lst[elemI], keys[elemI]);
112     }
113     return newList;
117 // * * * * * * * * * * * * * * * Ostream Operator  * * * * * * * * * * * * * //
119 template<class T>
120 inline Foam::Istream& Foam::operator>>(Istream& is, Keyed<T>& item)
122     // Read beginning of Keyed item/key pair
123     is.readBegin("Keyed<T>");
125     is >> static_cast<T&>(item);
126     is >> item.key_;
128     // Read end of Keyed item/key pair
129     is.readEnd("Keyed<T>");
131     // Check state of Ostream
132     is.check("Istream& operator>>(Istream&, Keyed&)");
134     return is;
138 template<class T>
139 inline Foam::Ostream& Foam::operator<<(Ostream& os, const Keyed<T>& item)
141     os  << token::BEGIN_LIST
142         << static_cast<const T&>(item)
143         << token::SPACE << item.key_
144         << token::END_LIST;
146     return os;
149 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
151 // ************************************************************************* //