Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / primitives / strings / word / wordI.H
blobe7d38f62e36784d975b7a082cce43e3b2be87b06
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2010 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 \*---------------------------------------------------------------------------*/
26 #include <cctype>
28 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
30 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
32 inline void Foam::word::stripInvalid()
34     // skip stripping unless debug is active to avoid
35     // costly operations
36     if (debug && string::stripInvalid<word>(*this))
37     {
38         std::cerr
39             << "word::stripInvalid() called for word "
40             << this->c_str() << std::endl;
42         if (debug > 1)
43         {
44             std::cerr
45                 << "    For debug level (= " << debug
46                 << ") > 1 this is considered fatal" << std::endl;
47             std::abort();
48         }
49     }
53 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
55 inline Foam::word::word(const word& w)
57     string(w)
61 inline Foam::word::word()
63     string()
67 inline Foam::word::word(const string& s, const bool doStripInvalid)
69     string(s)
71     if (doStripInvalid)
72     {
73         stripInvalid();
74     }
78 inline Foam::word::word(const std::string& s, const bool doStripInvalid)
80     string(s)
82     if (doStripInvalid)
83     {
84         stripInvalid();
85     }
89 inline Foam::word::word(const char* s, const bool doStripInvalid)
91     string(s)
93     if (doStripInvalid)
94     {
95         stripInvalid();
96     }
99 inline Foam::word::word
101     const char* s,
102     const size_type n,
103     const bool doStripInvalid
106     string(s, n)
108     if (doStripInvalid)
109     {
110         stripInvalid();
111     }
115 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
117 inline bool Foam::word::valid(char c)
119     return
120     (
121         !isspace(c)
122      && c != '"'   // string quote
123      && c != '\''  // string quote
124      && c != '/'   // path separator
125      && c != ';'   // end statement
126      && c != '{'   // beg subdict
127      && c != '}'   // end subdict
128     );
132 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
134 inline const Foam::word& Foam::word::operator=(const word& q)
136     string::operator=(q);
137     return *this;
141 inline const Foam::word& Foam::word::operator=(const string& q)
143     string::operator=(q);
144     stripInvalid();
145     return *this;
149 inline const Foam::word& Foam::word::operator=(const std::string& q)
151     string::operator=(q);
152     stripInvalid();
153     return *this;
157 inline const Foam::word& Foam::word::operator=(const char* q)
159     string::operator=(q);
160     stripInvalid();
161     return *this;
165 // * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
167 inline Foam::word Foam::operator&(const word& a, const word& b)
169     if (b.size())
170     {
171         string ub = b;
172         ub.string::operator[](0) = char(toupper(ub.string::operator[](0)));
174         return a + ub;
175     }
176     else
177     {
178         return a;
179     }
182 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
184 // ************************************************************************* //