• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef I18N_PHONENUMBERS_UPDATE_GEOCODING_H_
17 #define I18N_PHONENUMBERS_UPDATE_GEOCODING_H_
18 
19 #include <map>
20 #include <string>
21 #include "geocoding_data.pb.h"
22 #include "phonenumbers/geocoding/geocoding_data.h"
23 
24 namespace i18n {
25 namespace phonenumbers {
26 class UpdateGeocoding {
27 public:
28     static void LoadGeocodingData(int fd);
29     static const PrefixDescriptions* UpdatePrefixDescriptions(const PrefixDescriptions** prePrefixDescriptionsArray,
30         int index);
31     static const char** UpdateLanguageCodes(const char** languageCodes, int languageCodesSize);
32     static int UpdateLanguageCodesSize();
33     static const CountryLanguages* UpdateCountryLanguages(const CountryLanguages** preCountryLanguagesArray,
34         int index);
35     static const int* UpdateCountryCodes(const int* countryCodes, int countryCodesSize);
36     static int UpdateCountryCodesSize();
37 
38 private:
39     static void AddPrefixDescriptions(const std::string& languageCode, int index);
40     static void ModifyPrefixDescriptions(int32_t* prefixes, const char** descriptions,
41         PrefixesInfo& prefixesInfo, int index);
42     static void ModifyPossibleLengths(int32_t* possibleLengths, PrefixesInfo& prefixesInfo, int index);
43     static void AddCountryLanguages(int countryCode);
44 
45     static int FindLanguageCode(const std::string& languageCode);
46     static int FindCountryCode(int countryCode);
47     static bool IsLowerThan(const char* s1, const char* s2);
48     static char* WriteStr(const std::string& str);
49     static std::map<std::string, PrefixDescriptions>* prefixDescriptionsMap;
50     static std::map<std::string, PrefixesInfo>* prefixesInfoMap;
51     static const PrefixDescriptions** prefixDescriptionsArray;
52     static LanguageCodeInfo* languageCodeInfo;
53     static bool isupdatedLanguageCodes;
54     static const char** preLanguageCodes;
55     static const char** curLanguageCodes;
56     static int curLanguageCodesSize;
57     static int preLanguageCodesSize;
58 
59     static std::map<int, CountryLanguages>* countryLanguagesMap;
60     static std::map<int, CountriesInfo>* countriesInfoMap;
61     static const CountryLanguages** countryLanguagesArray;
62     static CountryCodeInfo* countryCodeInfo;
63 
64     static bool isupdatedCountryCodes;
65     static const int* preCountryCodes;
66     static int* curCountryCodes;
67     static int curCountryCodesSize;
68     static int preCountryCodesSize;
69 
70     static GeocodingInfo* geocodingInfo;
71 };
72 }  // namespace phonenumbers
73 }  // namespace i18n
74 #endif  // I18N_PHONENUMBERS_UPDATE_GEOCODING_H_