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 |