| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef BASE_STRING_TOKENIZER_H_ | 5 #ifndef BASE_STRING_TOKENIZER_H_ |
| 6 #define BASE_STRING_TOKENIZER_H_ | 6 #define BASE_STRING_TOKENIZER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 // StringTokenizerT is a simple string tokenizer class. It works like an | 10 // StringTokenizerT is a simple string tokenizer class. It works like an |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 token_is_delim_ = true; | 134 token_is_delim_ = true; |
| 135 return true; | 135 return true; |
| 136 } | 136 } |
| 137 // else skip over delim | 137 // else skip over delim |
| 138 } | 138 } |
| 139 while (token_end_ != end_ && AdvanceOne(&state, *token_end_)) | 139 while (token_end_ != end_ && AdvanceOne(&state, *token_end_)) |
| 140 ++token_end_; | 140 ++token_end_; |
| 141 return true; | 141 return true; |
| 142 } | 142 } |
| 143 | 143 |
| 144 // Start iterating through tokens from the beginning of the string. |
| 145 void Reset() { |
| 146 token_end_ = start_pos_; |
| 147 } |
| 148 |
| 144 // Returns true if token is a delimiter. When the tokenizer is constructed | 149 // Returns true if token is a delimiter. When the tokenizer is constructed |
| 145 // with the RETURN_DELIMS option, this method can be used to check if the | 150 // with the RETURN_DELIMS option, this method can be used to check if the |
| 146 // returned token is actually a delimiter. | 151 // returned token is actually a delimiter. |
| 147 bool token_is_delim() const { return token_is_delim_; } | 152 bool token_is_delim() const { return token_is_delim_; } |
| 148 | 153 |
| 149 // If GetNext() returned true, then these methods may be used to read the | 154 // If GetNext() returned true, then these methods may be used to read the |
| 150 // value of the token. | 155 // value of the token. |
| 151 const_iterator token_begin() const { return token_begin_; } | 156 const_iterator token_begin() const { return token_begin_; } |
| 152 const_iterator token_end() const { return token_end_; } | 157 const_iterator token_end() const { return token_end_; } |
| 153 str token() const { return str(token_begin_, token_end_); } | 158 str token() const { return str(token_begin_, token_end_); } |
| 154 | 159 |
| 155 private: | 160 private: |
| 156 void Init(const_iterator string_begin, | 161 void Init(const_iterator string_begin, |
| 157 const_iterator string_end, | 162 const_iterator string_end, |
| 158 const str& delims) { | 163 const str& delims) { |
| 164 start_pos_ = string_begin; |
| 159 token_end_ = string_begin; | 165 token_end_ = string_begin; |
| 160 end_ = string_end; | 166 end_ = string_end; |
| 161 delims_ = delims; | 167 delims_ = delims; |
| 162 options_ = 0; | 168 options_ = 0; |
| 163 } | 169 } |
| 164 | 170 |
| 165 bool IsDelim(char_type c) const { | 171 bool IsDelim(char_type c) const { |
| 166 return delims_.find(c) != str::npos; | 172 return delims_.find(c) != str::npos; |
| 167 } | 173 } |
| 168 | 174 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 188 state->in_quote = false; | 194 state->in_quote = false; |
| 189 } | 195 } |
| 190 } else { | 196 } else { |
| 191 if (IsDelim(c)) | 197 if (IsDelim(c)) |
| 192 return false; | 198 return false; |
| 193 state->in_quote = IsQuote(state->quote_char = c); | 199 state->in_quote = IsQuote(state->quote_char = c); |
| 194 } | 200 } |
| 195 return true; | 201 return true; |
| 196 } | 202 } |
| 197 | 203 |
| 204 const_iterator start_pos_; |
| 198 const_iterator token_begin_; | 205 const_iterator token_begin_; |
| 199 const_iterator token_end_; | 206 const_iterator token_end_; |
| 200 const_iterator end_; | 207 const_iterator end_; |
| 201 str delims_; | 208 str delims_; |
| 202 str quotes_; | 209 str quotes_; |
| 203 int options_; | 210 int options_; |
| 204 bool token_is_delim_; | 211 bool token_is_delim_; |
| 205 }; | 212 }; |
| 206 | 213 |
| 207 typedef StringTokenizerT<std::string, std::string::const_iterator> | 214 typedef StringTokenizerT<std::string, std::string::const_iterator> |
| 208 StringTokenizer; | 215 StringTokenizer; |
| 209 typedef StringTokenizerT<std::wstring, std::wstring::const_iterator> | 216 typedef StringTokenizerT<std::wstring, std::wstring::const_iterator> |
| 210 WStringTokenizer; | 217 WStringTokenizer; |
| 211 typedef StringTokenizerT<std::string, const char*> CStringTokenizer; | 218 typedef StringTokenizerT<std::string, const char*> CStringTokenizer; |
| 212 | 219 |
| 213 #endif // BASE_STRING_TOKENIZER_H_ | 220 #endif // BASE_STRING_TOKENIZER_H_ |
| OLD | NEW |