ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / applications / test / PackedList4 / Test-PackedList4.C
blob071d5b812e4c7ab707bd203b6363c26b9f6c4502
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 Application
26 Description
28 \*---------------------------------------------------------------------------*/
30 #include "uLabel.H"
31 #include "IOstreams.H"
32 #include "PackedBoolList.H"
33 #include "IStringStream.H"
35 using namespace Foam;
37 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
38 //  Main program:
40 int main(int argc, char *argv[])
42     PackedBoolList list1(20);
43     // set every third one on
44     forAll(list1, i)
45     {
46         list1[i] = !(i % 3);
47     }
49     Info<< "\nalternating bit pattern\n";
50     list1.printInfo(Info, true);
52     PackedBoolList list2 = ~list1;
54     Info<< "\ncomplementary bit pattern\n";
55     list2.printBits(Info);
57     // set every other on
58     forAll(list2, i)
59     {
60         list2[i] = !(i % 2);
61     }
63     Info<< "\nalternating bit pattern\n";
64     list2.printBits(Info);
66     list2.resize(28, false);
67     list2.resize(34, true);
68     list2.resize(40, false);
69     for (label i=0; i < 4; ++i)
70     {
71         list2[i] = true;
72     }
74     Info<< "\nresized with false, 6 true + 6 false, bottom 4 bits true\n";
75     list2.printInfo(Info, true);
77     labelList list2Labels = list2.used();
79     Info<< "\noperator|\n";
81     list1.printBits(Info);
82     list2.printBits(Info);
83     Info<< "==\n";
84     (list1 | list2).printBits(Info);
86     Info<< "\noperator& : does trim\n";
87     (list1 & list2).printBits(Info);
89     Info<< "\noperator^\n";
90     (list1 ^ list2).printBits(Info);
93     Info<< "\noperator|=\n";
94     {
95         PackedBoolList list3 = list1;
96         (list3 |= list2).printBits(Info);
97     }
99     Info<< "\noperator|= with labelUList\n";
100     {
101         PackedBoolList list3 = list1;
102         (list3 |= list2Labels).printBits(Info);
103     }
105     Info<< "\noperator&=\n";
106     {
107         PackedBoolList list3 = list1;
108         (list3 &= list2).printBits(Info);
109     }
111     Info<< "\noperator+=\n";
112     {
113         PackedBoolList list3 = list1;
114         (list3 += list2).printBits(Info);
115     }
117     Info<< "\noperator+= with labelUList\n";
118     {
119         PackedBoolList list3 = list1;
120         (list3 += list2Labels).printBits(Info);
121     }
123     Info<< "\noperator-=\n";
124     {
125         PackedBoolList list3 = list1;
126         (list3 -= list2).printBits(Info);
127     }
129     Info<< "\noperator-= with labelUList\n";
130     {
131         PackedBoolList list3 = list1;
132         (list3 -= list2Labels).printBits(Info);
133     }
135     PackedBoolList list4
136     (
137         IStringStream
138         (
139             "(1 n 1 n 1 n 1 1 off 0 0 f f 0 y yes y true y false on t)"
140         )()
141     );
143     Info<< "\ntest Istream constructor\n";
145     list4.printInfo(Info, true);
146     Info<< list4 << " indices: " << list4.used()() <<endl;
148     Info<< "\nassign from labelList\n";
149     list4 = labelList
150     (
151         IStringStream
152         (
153             "(0 1 2 3 12 13 14 19 20 21)"
154         )()
155     );
157     list4.printInfo(Info, true);
158     Info<< list4 << " indices: " << list4.used()() <<endl;
160     Info<< "\nassign from indices\n";
161     list4.read
162     (
163         IStringStream
164         (
165             "{0 1 2 3 12 13 14 19 20 21}"
166         )()
167     );
170     list4.printInfo(Info, true);
171     Info<< list4 << " indices: " << list4.used()() <<endl;
173     List<bool> boolLst(list4.size());
174     forAll(list4, i)
175     {
176         boolLst[i] = list4[i];
177     }
179     Info<< "List<bool>: " << boolLst <<endl;
182     // check roundabout assignments
183     PackedList<2> pl2
184     (
185         IStringStream
186         (
187             "{(0 3)(1 3)(2 3)(3 3)(12 3)(13 3)(14 3)(19 3)(20 3)(21 3)}"
188         )()
189     );
191     Info<< "roundabout assignment: " << pl2 << endl;
193     list4.clear();
194     forAll(pl2, i)
195     {
196         list4[i] = pl2[i];
197     }
199     list4.write(Info, true) << endl;
201     list4.writeEntry("PackedBoolList", Info);
203     return 0;
207 // ************************************************************************* //