| 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
|
|
|