Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(323)

Unified Diff: third_party/libaddressinput/chromium/cpp/src/ruleset.cc

Issue 116363003: [rac] Validate an address. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Constify and remove .get() Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « third_party/libaddressinput/chromium/cpp/src/ruleset.h ('k') | third_party/libaddressinput/chromium/cpp/test/rule_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698