ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / applications / test / labelRanges / Test-labelRanges.C
blob9f2be334d1a53a67a6227861395ad627571573e2
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
27     Test label ranges
28 \*---------------------------------------------------------------------------*/
30 #include "argList.H"
31 #include "IOobject.H"
32 #include "IOstreams.H"
33 #include "IFstream.H"
34 #include "IStringStream.H"
35 #include "labelRanges.H"
37 using namespace Foam;
39 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
40 //  Main program:
42 int main(int argc, char *argv[])
44     argList::noParallel();
45     argList::validArgs.insert("start size .. startN sizeN");
46     argList::addOption("verbose");
47     argList::addNote
48     (
49         "The default is to add ranges, use 'add' and 'del' to toggle\n\n"
50         "Eg, 0 10 30 10 del 20 15"
51     );
53     argList args(argc, argv, false, true);
55     if (args.optionFound("verbose"))
56     {
57         labelRange::debug = 1;
58     }
61     labelRanges ranges;
63     bool removeMode = false;
64     for (label argI=1; argI < args.size()-1; ++argI)
65     {
66         if (args[argI] == "add")
67         {
68             removeMode = false;
69             continue;
70         }
71         else if (args[argI] == "del")
72         {
73             removeMode = true;
74             continue;
75         }
77         label start = 0;
78         label size  = 0;
80         IStringStream(args[argI])() >> start;
81         ++argI;
82         IStringStream(args[argI])() >> size;
84         labelRange range(start, size);
86         Info<< "---------------" << nl;
87         if (removeMode)
88         {
89             Info<< "del " << range << " :";
90             forAllConstIter(labelRange, range, iter)
91             {
92                 Info<< " " << iter();
93             }
94             Info<< nl;
96             ranges.remove(range);
97         }
98         else
99         {
100             Info<< "add " << range  << " :";
101             forAllConstIter(labelRange, range, iter)
102             {
103                 Info<< " " << iter();
104             }
105             Info<< nl;
107             ranges.add(range);
108         }
110         Info<< "<list>" << ranges << "</list>" << nl;
111         forAllConstIter(labelRanges, ranges, iter)
112         {
113             Info<< " " << iter();
114         }
115         Info<< nl;
116     }
118     return 0;
121 // ************************************************************************* //