12fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// Copyright (C) 2014 Google Inc. 22fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// 32fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// Licensed under the Apache License, Version 2.0 (the "License"); 42fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// you may not use this file except in compliance with the License. 52fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// You may obtain a copy of the License at 62fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// 72fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// http://www.apache.org/licenses/LICENSE-2.0 82fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// 92fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// Unless required by applicable law or agreed to in writing, software 102fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// distributed under the License is distributed on an "AS IS" BASIS, 112fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 122fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// See the License for the specific language governing permissions and 132fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org// limitations under the License. 142fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org 1526e0a878fc7765d1fa2fbd279f2168b27933f63flararennie@google.com#ifndef I18N_ADDRESSINPUT_ADDRESS_NORMALIZER_H_ 1626e0a878fc7765d1fa2fbd279f2168b27933f63flararennie@google.com#define I18N_ADDRESSINPUT_ADDRESS_NORMALIZER_H_ 172fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org 182fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org#include <libaddressinput/util/basictypes.h> 192fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org#include <libaddressinput/util/scoped_ptr.h> 202fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org 212fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.orgnamespace i18n { 222fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.orgnamespace addressinput { 232fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org 242fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.orgclass PreloadSupplier; 252fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.orgclass StringCompare; 268a5ea9e2e8b5642281fa679b70266b80a4bf039drouslan@chromium.orgstruct AddressData; 272fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org 2826e0a878fc7765d1fa2fbd279f2168b27933f63flararennie@google.comclass AddressNormalizer { 292fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org public: 302fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org // Does not take ownership of |supplier|. 3126e0a878fc7765d1fa2fbd279f2168b27933f63flararennie@google.com explicit AddressNormalizer(const PreloadSupplier* supplier); 3226e0a878fc7765d1fa2fbd279f2168b27933f63flararennie@google.com ~AddressNormalizer(); 332fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org 3426e0a878fc7765d1fa2fbd279f2168b27933f63flararennie@google.com // Converts the names of different fields in the address into their canonical 3526e0a878fc7765d1fa2fbd279f2168b27933f63flararennie@google.com // form. Should be called only when supplier->IsLoaded() returns true for 3626e0a878fc7765d1fa2fbd279f2168b27933f63flararennie@google.com // the region code of the |address|. 3726e0a878fc7765d1fa2fbd279f2168b27933f63flararennie@google.com void Normalize(AddressData* address) const; 382fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org 392fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org private: 402fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org const PreloadSupplier* const supplier_; // Not owned. 412fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org const scoped_ptr<const StringCompare> compare_; 422fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org 4326e0a878fc7765d1fa2fbd279f2168b27933f63flararennie@google.com DISALLOW_COPY_AND_ASSIGN(AddressNormalizer); 442fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org}; 452fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org 462fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org} // namespace addressinput 472fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org} // namespace i18n 482fbc3617221414ff659533aaf8033526443b3773rouslan@chromium.org 4926e0a878fc7765d1fa2fbd279f2168b27933f63flararennie@google.com#endif // I18N_ADDRESSINPUT_ADDRESS_NORMALIZER_H_ 50