| 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
|
| index 3201750c391c32b57e6f4b52a9d94ec4232271c5..a3eca9628473835be0256a192c1930ec2786a6e9 100644
|
| --- a/third_party/libaddressinput/chromium/cpp/src/ruleset.cc
|
| +++ b/third_party/libaddressinput/chromium/cpp/src/ruleset.cc
|
| @@ -14,13 +14,13 @@
|
|
|
| #include "ruleset.h"
|
|
|
| +#include <libaddressinput/address_field.h>
|
| #include <libaddressinput/util/scoped_ptr.h>
|
|
|
| #include <cassert>
|
| #include <cstddef>
|
| #include <map>
|
| #include <string>
|
| -#include <utility>
|
|
|
| #include "rule.h"
|
| #include "util/stl_util.h"
|
| @@ -28,10 +28,13 @@
|
| namespace i18n {
|
| namespace addressinput {
|
|
|
| -Ruleset::Ruleset(scoped_ptr<Rule> rule)
|
| - : rule_(rule.Pass()),
|
| +Ruleset::Ruleset(AddressField field, scoped_ptr<Rule> rule)
|
| + : field_(field),
|
| + rule_(rule.Pass()),
|
| sub_regions_(),
|
| language_codes_() {
|
| + assert(field_ >= COUNTRY);
|
| + assert(field_ <= DEPENDENT_LOCALITY);
|
| assert(rule_ != NULL);
|
| }
|
|
|
| @@ -43,14 +46,30 @@ Ruleset::~Ruleset() {
|
| 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));
|
| 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_;
|
| +}
|
| +
|
| } // namespace addressinput
|
| } // namespace i18n
|
|
|