blob: e8f937b512ca498731bbbca5374d741c4091d29a [file] [log] [blame]
// 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.
#ifndef I18N_ADDRESSINPUT_ADDRESS_PROBLEM_H_
#define I18N_ADDRESSINPUT_ADDRESS_PROBLEM_H_
#include <iosfwd>
namespace i18n {
namespace addressinput {
// Address problem types, in no particular order.
enum AddressProblem {
// The field is not null and not whitespace, and the field should not be used
// by addresses in this country. For example, in the U.S. the SORTING_CODE
// field is unused, so its presence is an error.
UNEXPECTED_FIELD,
// The field is null or whitespace, and the field is required. For example,
// in the U.S. ADMIN_AREA is a required field.
MISSING_REQUIRED_FIELD,
// A list of values for the field is defined and the value does not occur in
// the list. Applies to hierarchical elements like REGION, ADMIN_AREA,
// LOCALITY, and DEPENDENT_LOCALITY. For example, in the US, the values for
// ADMIN_AREA include "CA" but not "XX".
UNKNOWN_VALUE,
// A format for the field is defined and the value does not match. This is
// used to match POSTAL_CODE against the format pattern generally. Formats
// indicate how many digits/letters should be present, and what punctuation is
// allowed. For example, in the U.S. postal codes are five digits with an
// optional hyphen followed by four digits.
INVALID_FORMAT,
// A specific pattern for the field is defined based on a specific sub-region
// (an ADMIN_AREA for example) and the value does not match. This is used to
// match POSTAL_CODE against a regular expression. For example, in the U.S.
// postal codes in the state of California start with '9'.
MISMATCHING_VALUE,
// The value contains a P.O. box and the widget options have acceptPostal set
// to false. For example, a street address line that contained "P.O. Box 3456"
// would fire this error.
USES_P_O_BOX
};
} // namespace addressinput
} // namespace i18n
// Produces human-readable output in logging, for example in unit tests. Prints
// what you would expect for valid values, e.g. "UNEXPECTED_FIELD" for
// UNEXPECTED_FIELD. For invalid values, prints "[INVALID ENUM VALUE x]".
std::ostream& operator<<(std::ostream& o,
i18n::addressinput::AddressProblem problem);
#endif // I18N_ADDRESSINPUT_ADDRESS_PROBLEM_H_