11767c5feSopenharmony_ci// Copyright (C) 2011 The Libphonenumber Authors
21767c5feSopenharmony_ci//
31767c5feSopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License");
41767c5feSopenharmony_ci// you may not use this file except in compliance with the License.
51767c5feSopenharmony_ci// You may obtain a copy of the License at
61767c5feSopenharmony_ci//
71767c5feSopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0
81767c5feSopenharmony_ci//
91767c5feSopenharmony_ci// Unless required by applicable law or agreed to in writing, software
101767c5feSopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS,
111767c5feSopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121767c5feSopenharmony_ci// See the License for the specific language governing permissions and
131767c5feSopenharmony_ci// limitations under the License.
141767c5feSopenharmony_ci
151767c5feSopenharmony_ci// Author: Philippe Liard
161767c5feSopenharmony_ci
171767c5feSopenharmony_ci#include <string>
181767c5feSopenharmony_ci#include <ostream>
191767c5feSopenharmony_ci#include <vector>
201767c5feSopenharmony_ci
211767c5feSopenharmony_ci#include "phonenumbers/phonenumber.h"
221767c5feSopenharmony_ci
231767c5feSopenharmony_cinamespace i18n {
241767c5feSopenharmony_cinamespace phonenumbers {
251767c5feSopenharmony_ci
261767c5feSopenharmony_ciusing std::string;
271767c5feSopenharmony_ciusing std::ostream;
281767c5feSopenharmony_ciusing std::vector;
291767c5feSopenharmony_ci
301767c5feSopenharmony_ciclass PhoneNumber;
311767c5feSopenharmony_ci
321767c5feSopenharmony_ci// Provides PhoneNumber comparison operators to support the use of EXPECT_EQ and
331767c5feSopenharmony_ci// EXPECT_NE in the unittests.
341767c5feSopenharmony_ciinline bool operator==(const PhoneNumber& number1, const PhoneNumber& number2) {
351767c5feSopenharmony_ci  return ExactlySameAs(number1, number2);
361767c5feSopenharmony_ci}
371767c5feSopenharmony_ci
381767c5feSopenharmony_ciinline bool operator!=(const PhoneNumber& number1, const PhoneNumber& number2) {
391767c5feSopenharmony_ci  return !(number1 == number2);
401767c5feSopenharmony_ci}
411767c5feSopenharmony_ci
421767c5feSopenharmony_ci// Needed by Google Test to display errors.
431767c5feSopenharmony_ciostream& operator<<(ostream& os, const PhoneNumber& number);
441767c5feSopenharmony_ci
451767c5feSopenharmony_ciostream& operator<<(ostream& os, const vector<PhoneNumber>& numbers);
461767c5feSopenharmony_ci
471767c5feSopenharmony_ci// Class containing string constants of region codes for easier testing. Note
481767c5feSopenharmony_ci// that another private RegionCode class is defined in
491767c5feSopenharmony_ci// cpp/src/phonenumbers/region_code.h. This one contains more constants.
501767c5feSopenharmony_ciclass RegionCode {
511767c5feSopenharmony_ci public:
521767c5feSopenharmony_ci  static const char* AD() {
531767c5feSopenharmony_ci    return "AD";
541767c5feSopenharmony_ci  }
551767c5feSopenharmony_ci
561767c5feSopenharmony_ci  static const char* AE() {
571767c5feSopenharmony_ci    return "AE";
581767c5feSopenharmony_ci  }
591767c5feSopenharmony_ci
601767c5feSopenharmony_ci  static const char* AM() {
611767c5feSopenharmony_ci    return "AM";
621767c5feSopenharmony_ci  }
631767c5feSopenharmony_ci
641767c5feSopenharmony_ci  static const char* AO() {
651767c5feSopenharmony_ci    return "AO";
661767c5feSopenharmony_ci  }
671767c5feSopenharmony_ci
681767c5feSopenharmony_ci  static const char* AQ() {
691767c5feSopenharmony_ci    return "AQ";
701767c5feSopenharmony_ci  }
711767c5feSopenharmony_ci
721767c5feSopenharmony_ci  static const char* AR() {
731767c5feSopenharmony_ci    return "AR";
741767c5feSopenharmony_ci  }
751767c5feSopenharmony_ci
761767c5feSopenharmony_ci  static const char* AU() {
771767c5feSopenharmony_ci    return "AU";
781767c5feSopenharmony_ci  }
791767c5feSopenharmony_ci
801767c5feSopenharmony_ci  static const char* BB() {
811767c5feSopenharmony_ci    return "BB";
821767c5feSopenharmony_ci  }
831767c5feSopenharmony_ci
841767c5feSopenharmony_ci  static const char* BR() {
851767c5feSopenharmony_ci    return "BR";
861767c5feSopenharmony_ci  }
871767c5feSopenharmony_ci
881767c5feSopenharmony_ci  static const char* BS() {
891767c5feSopenharmony_ci    return "BS";
901767c5feSopenharmony_ci  }
911767c5feSopenharmony_ci
921767c5feSopenharmony_ci  static const char* BY() {
931767c5feSopenharmony_ci    return "BY";
941767c5feSopenharmony_ci  }
951767c5feSopenharmony_ci
961767c5feSopenharmony_ci  static const char* CA() {
971767c5feSopenharmony_ci    return "CA";
981767c5feSopenharmony_ci  }
991767c5feSopenharmony_ci
1001767c5feSopenharmony_ci  static const char* CH() {
1011767c5feSopenharmony_ci    return "CH";
1021767c5feSopenharmony_ci  }
1031767c5feSopenharmony_ci
1041767c5feSopenharmony_ci  static const char* CL() {
1051767c5feSopenharmony_ci    return "CL";
1061767c5feSopenharmony_ci  }
1071767c5feSopenharmony_ci
1081767c5feSopenharmony_ci  static const char* CN() {
1091767c5feSopenharmony_ci    return "CN";
1101767c5feSopenharmony_ci  }
1111767c5feSopenharmony_ci
1121767c5feSopenharmony_ci  static const char* CO() {
1131767c5feSopenharmony_ci    return "CO";
1141767c5feSopenharmony_ci  }
1151767c5feSopenharmony_ci
1161767c5feSopenharmony_ci  static const char* CS() {
1171767c5feSopenharmony_ci    return "CS";
1181767c5feSopenharmony_ci  }
1191767c5feSopenharmony_ci
1201767c5feSopenharmony_ci  static const char* CX() {
1211767c5feSopenharmony_ci    return "CX";
1221767c5feSopenharmony_ci  }
1231767c5feSopenharmony_ci
1241767c5feSopenharmony_ci  static const char* DE() {
1251767c5feSopenharmony_ci    return "DE";
1261767c5feSopenharmony_ci  }
1271767c5feSopenharmony_ci
1281767c5feSopenharmony_ci  static const char* FR() {
1291767c5feSopenharmony_ci    return "FR";
1301767c5feSopenharmony_ci  }
1311767c5feSopenharmony_ci
1321767c5feSopenharmony_ci  static const char* GB() {
1331767c5feSopenharmony_ci    return "GB";
1341767c5feSopenharmony_ci  }
1351767c5feSopenharmony_ci
1361767c5feSopenharmony_ci  static const char* HU() {
1371767c5feSopenharmony_ci    return "HU";
1381767c5feSopenharmony_ci  }
1391767c5feSopenharmony_ci
1401767c5feSopenharmony_ci  static const char* IT() {
1411767c5feSopenharmony_ci    return "IT";
1421767c5feSopenharmony_ci  }
1431767c5feSopenharmony_ci
1441767c5feSopenharmony_ci  static const char* JP() {
1451767c5feSopenharmony_ci    return "JP";
1461767c5feSopenharmony_ci  }
1471767c5feSopenharmony_ci
1481767c5feSopenharmony_ci  static const char* KR() {
1491767c5feSopenharmony_ci    return "KR";
1501767c5feSopenharmony_ci  }
1511767c5feSopenharmony_ci
1521767c5feSopenharmony_ci  static const char* MX() {
1531767c5feSopenharmony_ci    return "MX";
1541767c5feSopenharmony_ci  }
1551767c5feSopenharmony_ci
1561767c5feSopenharmony_ci  static const char* NZ() {
1571767c5feSopenharmony_ci    return "NZ";
1581767c5feSopenharmony_ci  }
1591767c5feSopenharmony_ci
1601767c5feSopenharmony_ci  static const char* PL() {
1611767c5feSopenharmony_ci    return "PL";
1621767c5feSopenharmony_ci  }
1631767c5feSopenharmony_ci
1641767c5feSopenharmony_ci  static const char* RE() {
1651767c5feSopenharmony_ci    return "RE";
1661767c5feSopenharmony_ci  }
1671767c5feSopenharmony_ci
1681767c5feSopenharmony_ci  static const char* RU() {
1691767c5feSopenharmony_ci    return "RU";
1701767c5feSopenharmony_ci  }
1711767c5feSopenharmony_ci
1721767c5feSopenharmony_ci  static const char* SE() {
1731767c5feSopenharmony_ci    return "SE";
1741767c5feSopenharmony_ci  }
1751767c5feSopenharmony_ci
1761767c5feSopenharmony_ci  static const char* SG() {
1771767c5feSopenharmony_ci    return "SG";
1781767c5feSopenharmony_ci  }
1791767c5feSopenharmony_ci
1801767c5feSopenharmony_ci  static const char* UN001() {
1811767c5feSopenharmony_ci    return "001";
1821767c5feSopenharmony_ci  }
1831767c5feSopenharmony_ci
1841767c5feSopenharmony_ci  static const char* US() {
1851767c5feSopenharmony_ci    return "US";
1861767c5feSopenharmony_ci  }
1871767c5feSopenharmony_ci
1881767c5feSopenharmony_ci  static const char* UZ() {
1891767c5feSopenharmony_ci    return "UZ";
1901767c5feSopenharmony_ci  }
1911767c5feSopenharmony_ci
1921767c5feSopenharmony_ci  static const char* YT() {
1931767c5feSopenharmony_ci    return "YT";
1941767c5feSopenharmony_ci  }
1951767c5feSopenharmony_ci
1961767c5feSopenharmony_ci  static const char* ZW() {
1971767c5feSopenharmony_ci    return "ZW";
1981767c5feSopenharmony_ci  }
1991767c5feSopenharmony_ci
2001767c5feSopenharmony_ci  // Returns a region code string representing the "unknown" region.
2011767c5feSopenharmony_ci  static const char* GetUnknown() {
2021767c5feSopenharmony_ci    return "ZZ";
2031767c5feSopenharmony_ci  }
2041767c5feSopenharmony_ci
2051767c5feSopenharmony_ci  static const char* ZZ() {
2061767c5feSopenharmony_ci    return GetUnknown();
2071767c5feSopenharmony_ci  }
2081767c5feSopenharmony_ci};
2091767c5feSopenharmony_ci
2101767c5feSopenharmony_ci}  // namespace phonenumbers
2111767c5feSopenharmony_ci}  // namespace i18n
212