1b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// Copyright (C) 2012 The Libphonenumber Authors 2b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// 3b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// Licensed under the Apache License, Version 2.0 (the "License"); 4b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// you may not use this file except in compliance with the License. 5b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// You may obtain a copy of the License at 6b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// 7b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// http://www.apache.org/licenses/LICENSE-2.0 8b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// 9b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// Unless required by applicable law or agreed to in writing, software 10b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// distributed under the License is distributed on an "AS IS" BASIS, 11b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// See the License for the specific language governing permissions and 13b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// limitations under the License. 14b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 15b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// Utility for international short phone numbers, such as short codes and 16b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// emergency numbers. Note most commercial short numbers are not handled here, 17b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com// but by the phonenumberutil. 18b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 19b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com#ifndef I18N_PHONENUMBERS_SHORTNUMBERINFO_H_ 20b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com#define I18N_PHONENUMBERS_SHORTNUMBERINFO_H_ 21b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 22b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com#include <map> 23b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com#include <string> 24b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 25b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com#include "phonenumbers/base/basictypes.h" 26b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com#include "phonenumbers/base/memory/scoped_ptr.h" 27b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com#include "phonenumbers/phonemetadata.pb.h" 28b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 29b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.comnamespace i18n { 30b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.comnamespace phonenumbers { 31b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 32b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.comusing std::map; 33b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.comusing std::string; 34b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 35b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.comclass PhoneNumberUtil; 36b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 37b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.comclass ShortNumberInfo { 38b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com public: 39b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com ShortNumberInfo(); 40b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 41b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // Returns true if the number might be used to connect to an emergency service 42b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // in the given region. 43b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // 44b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // This method takes into account cases where the number might contain 45b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // formatting, or might have additional digits appended (when it is okay to do 46b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // that in the region specified). 47b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com bool ConnectsToEmergencyNumber(const string& number, 48b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com const string& region_code) const; 49b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 50b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // Returns true if the number exactly matches an emergency service number in 51b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // the given region. 52b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // 53b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // This method takes into account cases where the number might contain 54b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // formatting, but doesn't allow additional digits to be appended. 55b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com bool IsEmergencyNumber(const string& number, 56b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com const string& region_code) const; 57b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 58b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com private: 59b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com const PhoneNumberUtil& phone_util_; 60b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 61b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com // A mapping from a RegionCode to the PhoneMetadata for that region. 62b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com scoped_ptr<map<string, PhoneMetadata> > 63b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com region_to_short_metadata_map_; 64b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 65b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com const i18n::phonenumbers::PhoneMetadata* GetMetadataForRegion( 66b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com const string& region_code) const; 67b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 68b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com bool MatchesEmergencyNumberHelper(const string& number, 69b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com const string& region_code, 70b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com bool allow_prefix_match) const; 71b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 72b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com DISALLOW_COPY_AND_ASSIGN(ShortNumberInfo); 73b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com}; 74b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 75b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com} // namespace phonenumbers 76b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com} // namespace i18n 77b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com 78b3bfbbcb458043ddaaa1099b776014ba0968704dlararennie@google.com#endif // I18N_PHONENUMBERS_SHORTNUMBERINFO_H_ 79