| Index: third_party/libaddressinput/chromium/cpp/src/ruleset.cc
 | 
| diff --git a/third_party/libaddressinput/chromium/cpp/src/ruleset.cc b/third_party/libaddressinput/chromium/cpp/src/ruleset.cc
 | 
| deleted file mode 100644
 | 
| index 201e407cd9ab0fb3faf66c93ac3304821eb735ee..0000000000000000000000000000000000000000
 | 
| --- a/third_party/libaddressinput/chromium/cpp/src/ruleset.cc
 | 
| +++ /dev/null
 | 
| @@ -1,259 +0,0 @@
 | 
| -// Copyright (C) 2014 Google Inc.
 | 
| -//
 | 
| -// Licensed under the Apache License, Version 2.0 (the "License");
 | 
| -// you may not use this file except in compliance with the License.
 | 
| -// You may obtain a copy of the License at
 | 
| -//
 | 
| -// http://www.apache.org/licenses/LICENSE-2.0
 | 
| -//
 | 
| -// Unless required by applicable law or agreed to in writing, software
 | 
| -// distributed under the License is distributed on an "AS IS" BASIS,
 | 
| -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
| -// See the License for the specific language governing permissions and
 | 
| -// limitations under the License.
 | 
| -
 | 
| -#include "ruleset.h"
 | 
| -
 | 
| -#include <libaddressinput/address_field.h>
 | 
| -#include <libaddressinput/util/scoped_ptr.h>
 | 
| -
 | 
| -#include <cassert>
 | 
| -#include <cstddef>
 | 
| -#include <map>
 | 
| -#include <set>
 | 
| -#include <string>
 | 
| -#include <utility>
 | 
| -
 | 
| -#include "rule.h"
 | 
| -#include "util/canonicalize_string.h"
 | 
| -#include "util/stl_util.h"
 | 
| -
 | 
| -namespace i18n {
 | 
| -namespace addressinput {
 | 
| -
 | 
| -Ruleset::Ruleset(AddressField field, scoped_ptr<Rule> rule)
 | 
| -    : tries_(),
 | 
| -      canonicalizer_(),
 | 
| -      parent_(NULL),
 | 
| -      field_(field),
 | 
| -      deepest_ruleset_level_(field),
 | 
| -      rule_(rule.Pass()),
 | 
| -      sub_regions_(),
 | 
| -      language_codes_() {
 | 
| -  assert(field_ >= COUNTRY);
 | 
| -  assert(field_ <= DEPENDENT_LOCALITY);
 | 
| -  assert(rule_ != NULL);
 | 
| -}
 | 
| -
 | 
| -Ruleset::~Ruleset() {
 | 
| -  STLDeleteValues(&sub_regions_);
 | 
| -  STLDeleteValues(&language_codes_);
 | 
| -
 | 
| -  // Delete the maps and trie objects owned by |tries_| field.
 | 
| -  for (LanguageCodeTries::const_iterator lang_it = tries_.begin();
 | 
| -       lang_it != tries_.end(); ++lang_it) {
 | 
| -    AddressFieldTries* address_field_tries = lang_it->second;
 | 
| -    assert(address_field_tries != NULL);
 | 
| -
 | 
| -    for (AddressFieldTries::const_iterator address_field_it =
 | 
| -             address_field_tries->begin();
 | 
| -         address_field_it != address_field_tries->end();
 | 
| -         ++address_field_it) {
 | 
| -      IdentityFieldTries* identity_field_tries = address_field_it->second;
 | 
| -      assert(identity_field_tries != NULL);
 | 
| -
 | 
| -      for (IdentityFieldTries::const_iterator identity_field_it =
 | 
| -               identity_field_tries->begin();
 | 
| -           identity_field_it != identity_field_tries->end();
 | 
| -           ++identity_field_it) {
 | 
| -        // The tries do not own the ruleset objects.
 | 
| -        Trie<const Ruleset*>* trie = identity_field_it->second;
 | 
| -        assert(trie != NULL);
 | 
| -        delete trie;
 | 
| -      }
 | 
| -      delete identity_field_tries;
 | 
| -    }
 | 
| -    delete address_field_tries;
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void Ruleset::AddSubRegionRuleset(const std::string& sub_region,
 | 
| -                                  scoped_ptr<Ruleset> ruleset) {
 | 
| -  assert(sub_regions_.find(sub_region) == sub_regions_.end());
 | 
| -  assert(ruleset != NULL);
 | 
| -  assert(ruleset->field() == static_cast<AddressField>(field() + 1));
 | 
| -
 | 
| -  ruleset->parent_ = this;
 | 
| -  sub_regions_[sub_region] = ruleset.release();
 | 
| -}
 | 
| -
 | 
| -void Ruleset::AddLanguageCodeRule(const std::string& language_code,
 | 
| -                                  scoped_ptr<Rule> rule) {
 | 
| -  assert(language_codes_.find(language_code) == language_codes_.end());
 | 
| -  assert(rule != NULL);
 | 
| -  language_codes_[language_code] = rule.release();
 | 
| -}
 | 
| -
 | 
| -Ruleset* Ruleset::GetSubRegionRuleset(const std::string& sub_region) const {
 | 
| -  std::map<std::string, Ruleset*>::const_iterator it =
 | 
| -      sub_regions_.find(sub_region);
 | 
| -  return it != sub_regions_.end() ? it->second : NULL;
 | 
| -}
 | 
| -
 | 
| -const Rule& Ruleset::GetLanguageCodeRule(
 | 
| -    const std::string& language_code) const {
 | 
| -  std::map<std::string, const Rule*>::const_iterator it =
 | 
| -      language_codes_.find(language_code);
 | 
| -  return it != language_codes_.end() ? *it->second : *rule_;
 | 
| -}
 | 
| -
 | 
| -void Ruleset::BuildPrefixSearchIndex() {
 | 
| -  assert(field_ == COUNTRY);
 | 
| -  assert(tries_.empty());
 | 
| -
 | 
| -  // Default language tries.
 | 
| -  tries_[""] = new AddressFieldTries;
 | 
| -
 | 
| -  // Non-default language tries.
 | 
| -  for (std::vector<std::string>::const_iterator lang_it =
 | 
| -           rule_->GetLanguages().begin();
 | 
| -       lang_it != rule_->GetLanguages().end();
 | 
| -       ++lang_it) {
 | 
| -    if (*lang_it != rule_->GetLanguage() && !lang_it->empty()) {
 | 
| -      tries_[*lang_it] = new AddressFieldTries;
 | 
| -    }
 | 
| -  }
 | 
| -
 | 
| -  for (LanguageCodeTries::const_iterator lang_it = tries_.begin();
 | 
| -       lang_it != tries_.end(); ++lang_it) {
 | 
| -    AddressFieldTries* address_field_tries = lang_it->second;
 | 
| -    address_field_tries->insert(
 | 
| -        std::make_pair(ADMIN_AREA, new IdentityFieldTries));
 | 
| -    address_field_tries->insert(
 | 
| -        std::make_pair(LOCALITY, new IdentityFieldTries));
 | 
| -    address_field_tries->insert(
 | 
| -        std::make_pair(DEPENDENT_LOCALITY, new IdentityFieldTries));
 | 
| -
 | 
| -    for (AddressFieldTries::const_iterator address_field_it =
 | 
| -             address_field_tries->begin();
 | 
| -         address_field_it != address_field_tries->end();
 | 
| -         ++address_field_it) {
 | 
| -      IdentityFieldTries* identity_field_tries = address_field_it->second;
 | 
| -      identity_field_tries->insert(
 | 
| -          std::make_pair(Rule::KEY, new Trie<const Ruleset*>));
 | 
| -      identity_field_tries->insert(
 | 
| -          std::make_pair(Rule::NAME, new Trie<const Ruleset*>));
 | 
| -      identity_field_tries->insert(
 | 
| -          std::make_pair(Rule::LATIN_NAME, new Trie<const Ruleset*>));
 | 
| -    }
 | 
| -  }
 | 
| -
 | 
| -  canonicalizer_ = StringCanonicalizer::Build();
 | 
| -  AddSubRegionRulesetsToTrie(*this);
 | 
| -}
 | 
| -
 | 
| -void Ruleset::FindRulesetsByPrefix(const std::string& language_code,
 | 
| -                                   AddressField ruleset_level,
 | 
| -                                   Rule::IdentityField identity_field,
 | 
| -                                   const std::string& prefix,
 | 
| -                                   std::set<const Ruleset*>* result) const {
 | 
| -  assert(field_ == COUNTRY);
 | 
| -  assert(ruleset_level >= ADMIN_AREA);
 | 
| -  assert(ruleset_level <= DEPENDENT_LOCALITY);
 | 
| -  assert(result != NULL);
 | 
| -  assert(canonicalizer_ != NULL);
 | 
| -
 | 
| -  LanguageCodeTries::const_iterator lang_it = tries_.find(language_code);
 | 
| -  AddressFieldTries* address_field_tries = lang_it != tries_.end()
 | 
| -      ? lang_it->second : tries_.find("")->second;
 | 
| -  assert(address_field_tries != NULL);
 | 
| -
 | 
| -  AddressFieldTries::const_iterator address_field_it =
 | 
| -      address_field_tries->find(ruleset_level);
 | 
| -  assert(address_field_it != address_field_tries->end());
 | 
| -
 | 
| -  IdentityFieldTries* identity_field_tries = address_field_it->second;
 | 
| -  assert(identity_field_tries != NULL);
 | 
| -
 | 
| -  IdentityFieldTries::const_iterator identity_field_it =
 | 
| -      identity_field_tries->find(identity_field);
 | 
| -  assert(identity_field_it != identity_field_tries->end());
 | 
| -
 | 
| -  Trie<const Ruleset*>* trie = identity_field_it->second;
 | 
| -  assert(trie != NULL);
 | 
| -
 | 
| -  trie->FindDataForKeyPrefix(
 | 
| -      canonicalizer_->CanonicalizeString(prefix), result);
 | 
| -}
 | 
| -
 | 
| -void Ruleset::AddSubRegionRulesetsToTrie(const Ruleset& parent_ruleset) {
 | 
| -  assert(field_ == COUNTRY);
 | 
| -  assert(canonicalizer_ != NULL);
 | 
| -
 | 
| -  for (std::map<std::string, Ruleset*>::const_iterator sub_region_it =
 | 
| -           parent_ruleset.sub_regions_.begin();
 | 
| -       sub_region_it != parent_ruleset.sub_regions_.end();
 | 
| -       ++sub_region_it) {
 | 
| -    const Ruleset* ruleset = sub_region_it->second;
 | 
| -    assert(ruleset != NULL);
 | 
| -
 | 
| -    if (deepest_ruleset_level_ < ruleset->field()) {
 | 
| -      deepest_ruleset_level_ = ruleset->field();
 | 
| -    }
 | 
| -
 | 
| -    for (LanguageCodeTries::const_iterator lang_it = tries_.begin();
 | 
| -         lang_it != tries_.end(); ++lang_it) {
 | 
| -      const std::string& language_code = lang_it->first;
 | 
| -      const Rule& rule = ruleset->GetLanguageCodeRule(language_code);
 | 
| -
 | 
| -      AddressFieldTries* address_field_tries = lang_it->second;
 | 
| -      assert(address_field_tries != NULL);
 | 
| -
 | 
| -      AddressFieldTries::const_iterator address_field_it =
 | 
| -          address_field_tries->find(ruleset->field());
 | 
| -      assert(address_field_it != address_field_tries->end());
 | 
| -
 | 
| -      IdentityFieldTries* identity_field_tries = address_field_it->second;
 | 
| -      assert(identity_field_tries != NULL);
 | 
| -
 | 
| -      IdentityFieldTries::const_iterator identity_field_it =
 | 
| -          identity_field_tries->find(Rule::KEY);
 | 
| -      assert(identity_field_it != identity_field_tries->end());
 | 
| -
 | 
| -      Trie<const Ruleset*>* key_trie = identity_field_it->second;
 | 
| -      assert(key_trie != NULL);
 | 
| -
 | 
| -      identity_field_it = identity_field_tries->find(Rule::NAME);
 | 
| -      assert(identity_field_it != identity_field_tries->end());
 | 
| -
 | 
| -      Trie<const Ruleset*>* name_trie = identity_field_it->second;
 | 
| -      assert(name_trie != NULL);
 | 
| -
 | 
| -      identity_field_it = identity_field_tries->find(Rule::LATIN_NAME);
 | 
| -      assert(identity_field_it != identity_field_tries->end());
 | 
| -
 | 
| -      Trie<const Ruleset*>* latin_name_trie = identity_field_it->second;
 | 
| -      assert(latin_name_trie != NULL);
 | 
| -
 | 
| -      if (!rule.GetKey().empty()) {
 | 
| -        key_trie->AddDataForKey(
 | 
| -            canonicalizer_->CanonicalizeString(rule.GetKey()), ruleset);
 | 
| -      }
 | 
| -
 | 
| -      if (!rule.GetName().empty()) {
 | 
| -        name_trie->AddDataForKey(
 | 
| -             canonicalizer_->CanonicalizeString(rule.GetName()), ruleset);
 | 
| -      }
 | 
| -
 | 
| -      if (!rule.GetLatinName().empty()) {
 | 
| -        latin_name_trie->AddDataForKey(
 | 
| -            canonicalizer_->CanonicalizeString(rule.GetLatinName()), ruleset);
 | 
| -      }
 | 
| -    }
 | 
| -
 | 
| -    AddSubRegionRulesetsToTrie(*ruleset);
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -}  // namespace addressinput
 | 
| -}  // namespace i18n
 | 
| 
 |