ENH: patchCloud: return pTraits<Type>::max for unfound points
[OpenFOAM-1.7.x.git] / applications / test / UDictionary / UDictionaryTest.C
blob12ccfb33fc50c833a02947ba58cc26c2d6b90c43
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2010 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
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 Application
26 Description
28 \*---------------------------------------------------------------------------*/
30 #include "OSspecific.H"
32 #include "IOstreams.H"
33 #include "UDictionary.H"
35 using namespace Foam;
37 class ent
39     public UDictionary<ent>::link
41     word keyword_;
42     int i_;
44 public:
46     ent(const word& keyword, int i)
47     :
48         keyword_(keyword),
49         i_(i)
50     {}
52     const word& keyword() const
53     {
54         return keyword_;
55     }
57     friend Ostream& operator<<(Ostream& os, const ent& e)
58     {
59         os << e.keyword_ << ' ' << e.i_ << endl;
60         return os;
61     }
65 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
66 //  Main program:
68 int main(int argc, char *argv[])
70     UDictionary<ent>* dictPtr = new UDictionary<ent>;
71     UDictionary<ent>& dict = *dictPtr;
73     for (int i = 0; i<10; i++)
74     {
75         ent* ePtr = new ent(word("ent") + name(i), i);
76         dict.append(ePtr->keyword(), ePtr);
77         dict.swapUp(ePtr);
78     }
80     Info<< dict << endl;
82     dict.swapDown(dict.first());
84     for
85     (
86         UDictionary<ent>::const_iterator iter = dict.begin();
87         iter != dict.end();
88         ++iter
89     )
90     {
91         Info<< "element : " << *iter;
92     }
94     Info<< dict.toc() << endl;
96     delete dictPtr;
98     dictPtr = new UDictionary<ent>;
99     UDictionary<ent>& dict2 = *dictPtr;
101     for (int i = 0; i<10; i++)
102     {
103         ent* ePtr = new ent(word("ent") + name(i), i);
104         dict2.append(ePtr->keyword(), ePtr);
105         dict2.swapUp(ePtr);
106     }
108     Info<< dict2 << endl;
110     dict2.remove("ent9");
111     dict2.UILList<DLListBase, ent>::remove(dict2.first());
113     Info<< dict2 << endl;
116     Info<< nl << "Testing transfer: " << nl << endl;
117     Info<< "original: " << dict2 << endl;
119     UDictionary<ent> newDict;
120     newDict.transfer(dict2);
122     Info<< nl << "source: " << dict2 << nl
123         << "keys: " << dict2.toc() << nl
124         << "target: " << newDict << nl
125         << "keys: " << newDict.toc() << endl;
127     Info<< nl << "Done." << endl;
129     return 0;
133 // ************************************************************************* //