Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Unified Diff: content/common/android/address_parser_internal.h

Issue 10456007: [Android] Split the address parser from AddressDetector for WebView use. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: transforming AddressParser into a namespace. Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/common/android/address_parser.cc ('k') | content/common/android/address_parser_internal.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/android/address_parser_internal.h
diff --git a/content/common/android/address_parser_internal.h b/content/common/android/address_parser_internal.h
new file mode 100644
index 0000000000000000000000000000000000000000..75ebb7b0e523db335482519d4ef5ee8af27a2567
--- /dev/null
+++ b/content/common/android/address_parser_internal.h
@@ -0,0 +1,83 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_COMMON_ADDRESS_PARSER_INTERNAL_H_
+#define CONTENT_COMMON_ADDRESS_PARSER_INTERNAL_H_
+#pragma once
+
+#include <vector>
+
+#include "base/string_tokenizer.h"
+
+namespace content {
+
+namespace address_parser {
+
+// Internal classes and functions for address parsing.
+namespace internal {
+
+struct Word {
+ string16::const_iterator begin;
+ string16::const_iterator end;
+
+ Word() {}
+ Word(const string16::const_iterator& begin,
+ const string16::const_iterator& end);
+};
+
+class HouseNumberParser {
+ public:
+ HouseNumberParser() {}
+
+ bool Parse(const string16::const_iterator& begin,
+ const string16::const_iterator& end,
+ Word* word);
+
+ private:
+ static inline bool IsPreDelimiter(char16 character);
+ static inline bool IsPostDelimiter(char16 character);
+ inline void RestartOnNextDelimiter();
+
+ inline bool CheckFinished(Word* word) const;
+ inline void AcceptChars(size_t num_chars);
+ inline void SkipChars(size_t num_chars);
+ inline void ResetState();
+
+ // Iterators to the beginning, current position and ending of the string
+ // being currently parsed.
+ string16::const_iterator begin_;
+ string16::const_iterator it_;
+ string16::const_iterator end_;
+
+ // Number of digits found in the current result candidate.
+ size_t num_digits_;
+
+ // Number of characters previous to the current iterator that belong
+ // to the current result candidate.
+ size_t result_chars_;
+
+ DISALLOW_COPY_AND_ASSIGN(HouseNumberParser);
+};
+
+typedef std::vector<Word> WordList;
+typedef StringTokenizerT<string16, string16::const_iterator>
+ String16Tokenizer;
+
+bool FindStateStartingInWord(WordList* words,
+ size_t state_first_word,
+ size_t* state_last_word,
+ String16Tokenizer* tokenizer,
+ size_t* state_index);
+
+bool IsValidLocationName(const Word& word);
+bool IsZipValid(const Word& word, size_t state_index);
+bool IsZipValidForState(const Word& word, size_t state_index);
+
+} // namespace internal
+
+} // namespace address_parser
+
+} // namespace content
+
+#endif // CONTENT_COMMON_ADDRESS_PARSER_INTERNAL_H_
« no previous file with comments | « content/common/android/address_parser.cc ('k') | content/common/android/address_parser_internal.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698