Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / primitives / strings / stringOps / stringOps.H
blob68ce3ac71979642c72c99b2bca034f852ab3a242
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011-2011 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 Namespace
25     Foam::stringOps
27 Description
28     Collection of static functions to do various simple string-related
29     operations
31 SourceFiles
32     stringOps.C
34 \*---------------------------------------------------------------------------*/
35 #ifndef stringOps_H
36 #define stringOps_H
38 #include "string.H"
39 #include "dictionary.H"
40 #include "HashTable.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 /*---------------------------------------------------------------------------*\
48                         Namespace stringOps Declaration
49 \*---------------------------------------------------------------------------*/
51 namespace stringOps
53     //- Expand occurences of variables according to the mapping
54     //  Expansion includes:
55     //  -# variables
56     //    - "$VAR", "${VAR}"
57     //
58     //  Supports default values as per the Bourne/Korn shell.
59     //  \code
60     //      "${parameter:-defValue}"
61     //  \endcode
62     //  If parameter is unset or null, the \c defValue is substituted.
63     //  Otherwise, the value of parameter is substituted.
64     //
65     //  Supports alternative values as per the Bourne/Korn shell.
66     //  \code
67     //      "${parameter:+altValue}"
68     //  \endcode
69     //  If parameter is unset or null, nothing is substituted.
70     //  Otherwise the \c altValue is substituted.
71     //
72     //  Any unknown entries are removed silently.
73     //
74     //  Malformed entries (eg, brace mismatch, sigil followed by bad character)
75     //  are left as is.
76     //
77     //  \note the leading sigil can be changed to avoid conflicts with other
78     //  string expansions
79     string expand
80     (
81         const string&,
82         const HashTable<string, word, string::hash>& mapping,
83         const char sigil = '$'
84     );
87     //- Inplace expand occurences of variables according to the mapping
88     //  Expansion includes:
89     //  -# variables
90     //    - "$VAR", "${VAR}"
91     //
92     //  Supports default values as per the Bourne/Korn shell.
93     //  \code
94     //      "${parameter:-defValue}"
95     //  \endcode
96     //  If parameter is unset or null, the \c defValue is substituted.
97     //  Otherwise, the value of parameter is substituted.
98     //
99     //  Supports alternative values as per the Bourne/Korn shell.
100     //  \code
101     //      "${parameter:+altValue}"
102     //  \endcode
103     //  If parameter is unset or null, nothing is substituted.
104     //  Otherwise the \c altValue is substituted.
105     //
106     //  Any unknown entries are removed silently.
107     //
108     //  Malformed entries (eg, brace mismatch, sigil followed by bad character)
109     //  are left as is.
110     //
111     //  \note the leading sigil can be changed to avoid conflicts with other
112     //  string expansions
113     string& inplaceExpand
114     (
115         string&,
116         const HashTable<string, word, string::hash>& mapping,
117         const char sigil = '$'
118     );
120     //- Expand occurences of variables according to the dictionary
121     //  Expansion includes:
122     //  -# variables
123     //    - "$VAR", "${VAR}"
124     //
125     //  Any unknown entries are left as-is
126     //
127     //  \note the leading sigil can be changed to avoid conflicts with other
128     //  string expansions
129     string expand
130     (
131         const string&,
132         const dictionary& dict,
133         const char sigil = '$'
134     );
137     //- Inplace expand occurences of variables according to the dictionary
138     //  Expansion includes:
139     //  -# variables
140     //    - "$VAR", "${VAR}"
141     //
142     //  Any unknown entries are left as-is
143     //
144     //  \note the leading sigil can be changed to avoid conflicts with other
145     //  string expansions
146     string& inplaceExpand
147     (
148         string&,
149         const dictionary& dict,
150         const char sigil = '$'
151     );
154     //- Expand initial tildes and all occurences of environment variables
155     //  Expansion includes:
156     //  -# environment variables
157     //    - "$VAR", "${VAR}"
158     //  -# current directory
159     //    - leading "./" : the current directory
160     //  -# tilde expansion
161     //    - leading "~/" : home directory
162     //    - leading "~user" : home directory for specified user
163     //    - leading "~OpenFOAM" : site/user OpenFOAM configuration directory
164     //
165     //  Supports default values as per the Bourne/Korn shell.
166     //  \code
167     //      "${parameter:-defValue}"
168     //  \endcode
169     //  If parameter is unset or null, the \c defValue is substituted.
170     //  Otherwise, the value of parameter is substituted.
171     //
172     //  Supports alternative values as per the Bourne/Korn shell.
173     //  \code
174     //      "${parameter:+altValue}"
175     //  \endcode
176     //  If parameter is unset or null, nothing is substituted.
177     //  Otherwise the \c altValue is substituted.
178     //
179     //  Any unknown entries are removed silently, if allowEmpty is true.
180     //
181     //  Malformed entries (eg, brace mismatch, sigil followed by bad character)
182     //  are left as is.
183     //
184     //  \sa
185     //  Foam::findEtcFile
186     string expand
187     (
188         const string&,
189         const bool allowEmpty = false
190     );
193     //- Expand initial tildes and all occurences of environment variables
194     //  Expansion includes:
195     //  -# environment variables
196     //    - "$VAR", "${VAR}"
197     //  -# current directory
198     //    - leading "./" : the current directory
199     //  -# tilde expansion
200     //    - leading "~/" : home directory
201     //    - leading "~user" : home directory for specified user
202     //    - leading "~OpenFOAM" : site/user OpenFOAM configuration directory
203     //
204     //  Supports default values as per the Bourne/Korn shell.
205     //  \code
206     //      "${parameter:-defValue}"
207     //  \endcode
208     //  If parameter is unset or null, the \c defValue is substituted.
209     //  Otherwise, the value of parameter is substituted.
210     //
211     //  Supports alternative values as per the Bourne/Korn shell.
212     //  \code
213     //      "${parameter:+altValue}"
214     //  \endcode
215     //  If parameter is unset or null, nothing is substituted.
216     //  Otherwise the \c altValue is substituted.
217     //
218     //  Any unknown entries are removed silently, if allowEmpty is true.
219     //
220     //  Malformed entries (eg, brace mismatch, sigil followed by bad character)
221     //  are left as is.
222     //
223     //  Any unknown entries are removed silently if allowEmpty is true.
224     //  \sa
225     //  Foam::findEtcFile
226     string& inplaceExpand
227     (
228         string&,
229         const bool allowEmpty = false
230     );
233     //- Return string trimmed of leading whitespace
234     string trimLeft(const string&);
236     //- Trim leading whitespace inplace
237     string& inplaceTrimLeft(string&);
239     //- Return string trimmed of trailing whitespace
240     string trimRight(const string&);
242     //- Trim trailing whitespace inplace
243     string& inplaceTrimRight(string&);
245     //- Return string trimmed of leading and trailing whitespace
246     string trim(const string&);
248     //- Trim leading and trailing whitespace inplace
249     string& inplaceTrim(string&);
252 } // End namespace stringOps
255 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
257 } // End namespace Foam
259 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
261 #endif
263 // ************************************************************************* //