| 35 |  | * | 
| 36 |  | * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). | 
| 37 |  | * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). | 
| 38 | < | * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). | 
| 38 | > | * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008). | 
| 39 |  | * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010). | 
| 40 |  | * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). | 
| 41 |  | */ | 
| 52 |  | : tokenString_(str), delim_(delim), returnTokens_(false), | 
| 53 |  | currentPos_(tokenString_.begin()), end_(tokenString_.end()){ | 
| 54 |  |  | 
| 55 | < | } | 
| 55 | > | } | 
| 56 |  |  | 
| 57 |  | StringTokenizer::StringTokenizer(std::string::const_iterator& first, std::string::const_iterator& last, | 
| 58 |  | const std::string & delim) | 
| 59 |  | : tokenString_(first, last) , delim_(delim), returnTokens_(false), | 
| 60 |  | currentPos_(tokenString_.begin()), end_(tokenString_.end()) { | 
| 61 |  |  | 
| 62 | < | } | 
| 62 | > | } | 
| 63 |  |  | 
| 64 |  | StringTokenizer::StringTokenizer(const std::string&str, const std::string&delim, | 
| 65 |  | bool returnTokens) | 
| 66 |  | : tokenString_(str), delim_(delim), returnTokens_(returnTokens), | 
| 67 |  | currentPos_(tokenString_.begin()), end_(tokenString_.end()) { | 
| 68 |  |  | 
| 69 | < | } | 
| 69 | > | } | 
| 70 |  |  | 
| 71 |  | bool StringTokenizer::isDelimiter(const char c) { | 
| 72 |  | return delim_.find(c) == std::string::npos ? false : true; | 
| 114 |  | } else { | 
| 115 |  | std::string::const_iterator i = currentPos_; | 
| 116 |  |  | 
| 117 | < | //walk through the remaining string to check whether it contains non-delimeter or not | 
| 117 | > | //walk through the remaining string to check whether it contains | 
| 118 | > | //non-delimeter or not | 
| 119 |  | while(i != end_ && isDelimiter(*i)) { | 
| 120 |  | ++i; | 
| 121 |  | } | 
| 149 |  | return result; | 
| 150 |  | } | 
| 151 |  |  | 
| 152 | + | void StringTokenizer::skipToken() { | 
| 153 | + |  | 
| 154 | + | if(currentPos_ != end_) { | 
| 155 | + | while( currentPos_ != end_ && isDelimiter(*currentPos_)) { | 
| 156 | + |  | 
| 157 | + | if (returnTokens_) { | 
| 158 | + | *currentPos_++; | 
| 159 | + | return; | 
| 160 | + | } | 
| 161 | + |  | 
| 162 | + | ++currentPos_; | 
| 163 | + | } | 
| 164 | + |  | 
| 165 | + | while (currentPos_ != end_ && !isDelimiter(*currentPos_)) { | 
| 166 | + | *currentPos_++; | 
| 167 | + | } | 
| 168 | + | } | 
| 169 | + | } | 
| 170 | + |  | 
| 171 |  | bool StringTokenizer::nextTokenAsBool() { | 
| 172 |  | std::string token = nextToken(); | 
| 173 |  | std::istringstream iss(token); | 
| 226 |  | return result; | 
| 227 |  | } | 
| 228 |  |  | 
| 229 | < | std::vector<std::string>  StringTokenizer::getAllTokens() { | 
| 229 | > | std::vector<std::string>  StringTokenizer::getAllTokens() { | 
| 230 |  | std::vector<std::string> tokens; | 
| 231 |  | while (hasMoreTokens()) { | 
| 232 | < | tokens.push_back(nextToken()); | 
| 232 | > | tokens.push_back(nextToken()); | 
| 233 |  | } | 
| 234 |  | return tokens; | 
| 235 | < | } | 
| 235 | > | } | 
| 236 |  | void StringTokenizer::convertFortranNumber(std::string& fortranNumber) { | 
| 237 |  | std::string::iterator i; | 
| 238 |  | for(i = fortranNumber.begin(); i != fortranNumber.end(); ++i) { | 
| 242 |  | } | 
| 243 |  | } | 
| 244 |  |  | 
| 245 | + | std::string  StringTokenizer::getRemainingString() { | 
| 246 | + | std::string result; | 
| 247 | + | std::string::const_iterator tmpIter = currentPos_; | 
| 248 | + | if(tmpIter != end_) { | 
| 249 | + | std::insert_iterator<std::string> insertIter(result, result.begin()); | 
| 250 | + |  | 
| 251 | + | while (tmpIter != end_) { | 
| 252 | + | *insertIter++ = *tmpIter++; | 
| 253 | + | } | 
| 254 | + | } | 
| 255 | + |  | 
| 256 | + | return result; | 
| 257 | + | } | 
| 258 | + |  | 
| 259 | + |  | 
| 260 |  | }//end namespace OpenMD | 
| 261 |  |  |