ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / OpenFOAM / global / argList / argListI.H
blobe35663540be56c5bbddf4ae97cafe5c116a302cd
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 \*---------------------------------------------------------------------------*/
26 #include "argList.H"
28 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
30 inline const Foam::word& Foam::argList::executable() const
32     return executable_;
36 inline const Foam::fileName& Foam::argList::rootPath() const
38     return rootPath_;
42 inline const Foam::fileName& Foam::argList::caseName() const
44     return case_;
48 inline const Foam::fileName& Foam::argList::globalCaseName() const
50     return globalCase_;
54 inline Foam::fileName Foam::argList::path() const
56     return rootPath()/caseName();
60 inline const Foam::stringList& Foam::argList::args() const
62     return args_;
66 inline const Foam::string& Foam::argList::arg(const label index) const
68     return args_[index];
72 inline Foam::label Foam::argList::size() const
74     return args_.size();
78 inline const Foam::HashTable<Foam::string>& Foam::argList::options() const
80     return options_;
84 inline const Foam::string& Foam::argList::option(const word& opt) const
86     return options_[opt];
90 inline bool Foam::argList::optionFound(const word& opt) const
92     return options_.found(opt);
96 inline Foam::IStringStream Foam::argList::optionLookup(const word& opt) const
98     return IStringStream(options_[opt]);
102 // * * * * * * * * * * * * Template Specializations  * * * * * * * * * * * * //
104 namespace Foam
106     // Template specialization for string
107     template<>
108     inline Foam::string
109     Foam::argList::argRead<Foam::string>(const label index) const
110     {
111         return args_[index];
112     }
114     // Template specialization for word
115     template<>
116     inline Foam::word
117     Foam::argList::argRead<Foam::word>(const label index) const
118     {
119         return args_[index];
120     }
122     // Template specialization for fileName
123     template<>
124     inline Foam::fileName
125     Foam::argList::argRead<Foam::fileName>(const label index) const
126     {
127         return args_[index];
128     }
130     // Template specialization for string
131     template<>
132     inline Foam::string
133     Foam::argList::optionRead<Foam::string>(const word& opt) const
134     {
135         return options_[opt];
136     }
138     // Template specialization for word
139     template<>
140     inline Foam::word
141     Foam::argList::optionRead<Foam::word>(const word& opt) const
142     {
143         return options_[opt];
144     }
146     // Template specialization for fileName
147     template<>
148     inline Foam::fileName
149     Foam::argList::optionRead<Foam::fileName>(const word& opt) const
150     {
151         return options_[opt];
152     }
156 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
158 template<class T>
159 inline T Foam::argList::argRead(const label index) const
161     T val;
163     IStringStream(args_[index])() >> val;
164     return val;
168 template<class T>
169 inline T Foam::argList::optionRead(const word& opt) const
171     T val;
173     optionLookup(opt)() >> val;
174     return val;
178 template<class T>
179 inline bool Foam::argList::optionReadIfPresent
181     const word& opt,
182     T& val
183 ) const
185     if (optionFound(opt))
186     {
187         val = optionRead<T>(opt);
188         return true;
189     }
190     else
191     {
192         return false;
193     }
197 template<class T>
198 inline bool Foam::argList::optionReadIfPresent
200     const word& opt,
201     T& val,
202     const T& deflt
203 ) const
205     if (optionReadIfPresent<T>(opt, val))
206     {
207         return true;
208     }
209     else
210     {
211         val = deflt;
212         return false;
213     }
217 template<class T>
218 inline T Foam::argList::optionLookupOrDefault
220     const word& opt,
221     const T& deflt
222 ) const
224     if (optionFound(opt))
225     {
226         return optionRead<T>(opt);
227     }
228     else
229     {
230         return deflt;
231     }
235 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
237 inline const Foam::string& Foam::argList::operator[](const label index) const
239     return args_[index];
243 inline const Foam::string& Foam::argList::operator[](const word& opt) const
245     return options_[opt];
249 // ************************************************************************* //