OpenFOAM logo
Open Source CFD Toolkit

wordI.H

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2005 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software; you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by the
00013     Free Software Foundation; either version 2 of the License, or (at your
00014     option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM; if not, write to the Free Software Foundation,
00023     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00024 
00025 \*---------------------------------------------------------------------------*/
00026 
00027 #include <cctype>
00028 
00029 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00030 
00031 namespace Foam
00032 {
00033 
00034 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
00035 
00036 inline void word::stripInvalid()
00037 {
00038     if (debug && string::stripInvalid<word>(*this))
00039     {
00040         std::cerr
00041             << "word::stripInvalid() called for string "
00042             << this->c_str() << std::endl;
00043 
00044         if (debug > 1)
00045         {
00046             std::abort();
00047         }
00048     }
00049 }
00050 
00051 
00052 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
00053 
00054 inline word::word(const word& w)
00055 :
00056     string(w)
00057 {}
00058 
00059 
00060 inline word::word()
00061 :
00062     string()
00063 {}
00064 
00065 
00066 inline word::word(const string& str)
00067 :
00068     string(str)
00069 {
00070     stripInvalid();
00071 }
00072 
00073 
00074 inline word::word(const std::string& stdStr)
00075 :
00076     string(stdStr)
00077 {
00078     stripInvalid();
00079 }
00080 
00081 
00082 inline word::word(const char* chars)
00083 :
00084     string(chars)
00085 {
00086     stripInvalid();
00087 }
00088 
00089 
00090 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
00091 
00092 inline bool word::valid(char c)
00093 {
00094     return
00095     (
00096           !isspace(c)
00097      && c != '"'
00098      && c != '/'
00099      && c != ';'
00100      && c != '{'
00101      && c != '}'
00102     );
00103 }
00104 
00105 
00106 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
00107 
00108 inline void word::operator=(const word& q)
00109 {
00110     string::operator=(q);
00111 }
00112 
00113 
00114 inline void word::operator=(const string& q)
00115 {
00116     string::operator=(q);
00117     stripInvalid();
00118 }
00119 
00120 
00121 inline void word::operator=(const std::string& q)
00122 {
00123     string::operator=(q);
00124     stripInvalid();
00125 }
00126 
00127 
00128 inline void word::operator=(const char* q)
00129 {
00130     string::operator=(q);
00131     stripInvalid();
00132 }
00133 
00134 
00135 // * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
00136 
00137 inline word operator&(const word& a, const word& b)
00138 {
00139     if (!b.size())
00140     {
00141         return a;
00142     }
00143     else
00144     {
00145         string ub = b;
00146         ub.string::operator[](0) = char(toupper(ub.string::operator[](0)));
00147 
00148         return a + ub;
00149     }
00150 }
00151 
00152 
00153 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00154 
00155 } // End namespace Foam
00156 
00157 // ************************************************************************* //
For further information go to www.openfoam.org