| 159 |  | return false; | 
| 160 |  | } | 
| 161 |  | } | 
| 162 | < |  | 
| 162 | > |  | 
| 163 | > | //Since libstdc++(GCC 3.2) has an i/ostream::operator>>/<<(streambuf*) bug (Bug 9318) | 
| 164 | > | //Instead of using iostream facility, we use C library | 
| 165 |  | int StringTokenizer::nextTokenAsInt() { | 
| 166 |  | std::string token = nextToken(); | 
| 167 | < | std::istringstream iss(token); | 
| 168 | < | int result; | 
| 167 | < |  | 
| 168 | < | if (iss >> result) { | 
| 169 | < | return result; | 
| 170 | < | } else { | 
| 171 | < | std::cerr << "unable to convert " << token << " to an integer" << std::endl; | 
| 172 | < | return 0; | 
| 173 | < | } | 
| 167 | > |  | 
| 168 | > | return atoi(token.c_str()); | 
| 169 |  | } | 
| 170 |  |  | 
| 171 |  | float StringTokenizer::nextTokenAsFloat() { | 
| 172 |  | std::string token = nextToken(); | 
| 173 | < | std::istringstream iss(token); | 
| 174 | < | float result; | 
| 180 | < |  | 
| 181 | < | if (iss >> result) { | 
| 182 | < | return result; | 
| 183 | < | } else { | 
| 184 | < | std::cerr << "unable to convert " << token << " to a float" << std::endl; | 
| 185 | < | return 0.0; | 
| 186 | < | } | 
| 173 | > | convertFortranNumber(token); | 
| 174 | > | return (float) (atof(token.c_str())); | 
| 175 |  | } | 
| 176 |  |  | 
| 177 |  | double StringTokenizer::nextTokenAsDouble() { | 
| 178 |  | std::string token = nextToken(); | 
| 179 | < | std::istringstream iss(token); | 
| 180 | < | double result; | 
| 193 | < |  | 
| 194 | < | if (iss >> result) { | 
| 195 | < | return result; | 
| 196 | < | } else { | 
| 197 | < | std::cerr << "unable to convert " << token << " to a double" << std::endl; | 
| 198 | < | return 0.0; | 
| 199 | < | } | 
| 179 | > | convertFortranNumber(token); | 
| 180 | > | return atof(token.c_str()); | 
| 181 |  | } | 
| 182 |  |  | 
| 183 |  | std::string  StringTokenizer::peekNextToken() { | 
| 205 |  | return result; | 
| 206 |  | } | 
| 207 |  |  | 
| 208 | + | void StringTokenizer::convertFortranNumber(std::string& fortranNumber) { | 
| 209 | + | std::string::iterator i; | 
| 210 | + | for(i = fortranNumber.begin(); i != fortranNumber.end(); ++i) { | 
| 211 | + | if (*i == 'd' || *i == 'D') { | 
| 212 | + | *i = 'E'; | 
| 213 | + | } | 
| 214 | + | } | 
| 215 | + | } | 
| 216 | + |  | 
| 217 |  | }//end namespace oopse | 
| 218 |  |  |