150395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// Copyright (C) 2014 Google Inc. 250395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// 350395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// Licensed under the Apache License, Version 2.0 (the "License"); 450395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// you may not use this file except in compliance with the License. 550395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// You may obtain a copy of the License at 650395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// 750395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// http://www.apache.org/licenses/LICENSE-2.0 850395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// 950395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// Unless required by applicable law or agreed to in writing, software 1050395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// distributed under the License is distributed on an "AS IS" BASIS, 1150395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1250395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// See the License for the specific language governing permissions and 1350395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com// limitations under the License. 1450395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com 1550395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com#include <libaddressinput/address_problem.h> 1650395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com 179f47fe3ed525accac995b095d408a825673a2ee1roubert@google.com#include <libaddressinput/util/basictypes.h> 189f47fe3ed525accac995b095d408a825673a2ee1roubert@google.com 1950395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com#include <cstddef> 2050395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com#include <ostream> 2150395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com 2250395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.comusing i18n::addressinput::AddressProblem; 2350395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.comusing i18n::addressinput::UNEXPECTED_FIELD; 2450395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.comusing i18n::addressinput::USES_P_O_BOX; 2550395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com 2650395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.comstd::ostream& operator<<(std::ostream& o, AddressProblem problem) { 2750395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com static const char* const kProblemNames[] = { 2850395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com "UNEXPECTED_FIELD", 2950395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com "MISSING_REQUIRED_FIELD", 3050395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com "UNKNOWN_VALUE", 3150395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com "INVALID_FORMAT", 3250395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com "MISMATCHING_VALUE", 3350395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com "USES_P_O_BOX" 3450395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com }; 3550395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com COMPILE_ASSERT(UNEXPECTED_FIELD == 0, bad_base); 3650395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com COMPILE_ASSERT(USES_P_O_BOX == arraysize(kProblemNames) - 1, bad_length); 3750395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com 3850395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com if (problem < 0 || static_cast<size_t>(problem) >= arraysize(kProblemNames)) { 3950395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com o << "[INVALID ENUM VALUE " << static_cast<int>(problem) << "]"; 4050395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com } else { 4150395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com o << kProblemNames[problem]; 4250395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com } 4350395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com return o; 4450395a72e769f6f5a24a4cf510afa4f62c29f59froubert@google.com} 45