| 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 | 
  | 
 |