00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <cctype>
00028
00029
00030
00031 namespace Foam
00032 {
00033
00034
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
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
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
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
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 }
00156
00157