Added more documentation.
[OpenFOAM-1.5.x.git] / applications / test / DynamicList / DynamicListTest.C
blob5cb217e545c3dcb46af6bfc52db6153ebdbfe32a
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 Description
27 \*---------------------------------------------------------------------------*/
29 #include "DynamicList.H"
30 #include "IOstreams.H"
32 using namespace Foam;
34 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
35 // Main program:
37 int main(int argc, char *argv[])
39     List<DynamicList<label, 1, 0> > ldl(2);
41     ldl[0](0) = 0;
42     ldl[0](2) = 2;
43     ldl[0](3) = 3;
44     ldl[0](1) = 1;
46     ldl[0].setSize(5);     // increase allocated size
47     ldl[1].setSize(10);    // increase allocated size
48     ldl[1](2) = 2;
50     ldl[1] = 3;
52     Info<< "<ldl>" << ldl << "</ldl>" << nl << "sizes: ";
53     forAll(ldl, i)
54     {
55         Info<< " " << ldl[i].size() << "/" << ldl[i].allocSize();
56     }
57     Info<< endl;
59     List<List<label> > ll(2);
60     ll[0].transfer(ldl[0]);
61     ll[1].transfer(ldl[1].shrink());
63     Info<< "<ldl>" << ldl << "</ldl>" << nl << "sizes: ";
64     forAll(ldl, i)
65     {
66         Info<< " " << ldl[i].size() << "/" << ldl[i].allocSize();
67     }
68     Info<< endl;
70     Info<< "<ll>" << ll << "</ll>" << nl << endl;
73     // test the transfer between DynamicLists
74     DynamicList<label, 1, 0> dlA;
75     DynamicList<label, 1, 0> dlB;
77     for (label i = 0; i < 5; i++)
78     {
79         dlA.append(i);
80     }
81     dlA.setSize(10);
83     Info<< "<dlA>" << dlA << "</dlA>" << nl << "sizes: "
84         << " " << dlA.size() << "/" << dlA.allocSize() << endl;
86     dlB.transfer(dlA);
88     // provokes memory error if previous transfer did not maintain
89     // the correct allocated space
91     // currently fails in OpenFOAM-1.5.x
92     /*
93      * dlB[6] = 6;
94      */
96     Info<< "Transferred to dlB" << endl;
97     Info<< "<dlA>" << dlA << "</dlA>" << nl << "sizes: "
98         << " " << dlA.size() << "/" << dlA.allocSize() << endl;
99     Info<< "<dlB>" << dlB << "</dlB>" << nl << "sizes: "
100         << " " << dlB.size() << "/" << dlB.allocSize() << endl;
103     return 0;
107 // ************************************************************************* //