1 /* 2 * Copyright (C) 2022 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 COUNTRY_CODE_H 17 #define COUNTRY_CODE_H 18 19 #include <parcel.h> 20 #include <string> 21 22 #include "constant_definition.h" 23 #include "country_code.h" 24 #include "string_ex.h" 25 26 namespace OHOS { 27 namespace Location { 28 class CountryCode : public Parcelable { 29 public: CountryCode()30 CountryCode() 31 { 32 countryCodeStr_ = ""; 33 countryCodeType_ = COUNTRY_CODE_FROM_LOCALE; 34 } 35 CountryCode(CountryCode & country)36 explicit CountryCode(CountryCode& country) 37 { 38 SetCountryCodeStr(country.GetCountryCodeStr()); 39 SetCountryCodeType(country.GetCountryCodeType()); 40 } 41 42 ~CountryCode() override = default; 43 IsSame(CountryCode & country)44 inline bool IsSame(CountryCode& country) const 45 { 46 return (countryCodeStr_ == country.GetCountryCodeStr()) && 47 (countryCodeType_ == country.GetCountryCodeType()); 48 } 49 IsMoreReliable(int type)50 inline bool IsMoreReliable(int type) const 51 { 52 return (countryCodeType_ > type); 53 } 54 GetCountryCodeStr()55 inline std::string GetCountryCodeStr() const 56 { 57 return countryCodeStr_; 58 } 59 SetCountryCodeStr(std::string country)60 inline void SetCountryCodeStr(std::string country) 61 { 62 countryCodeStr_ = country; 63 } 64 GetCountryCodeType()65 inline int GetCountryCodeType() const 66 { 67 return countryCodeType_; 68 } 69 SetCountryCodeType(int type)70 inline void SetCountryCodeType(int type) 71 { 72 countryCodeType_ = type; 73 } 74 ReadFromParcel(Parcel & parcel)75 void ReadFromParcel(Parcel& parcel) 76 { 77 countryCodeStr_ = Str16ToStr8(parcel.ReadString16()); 78 countryCodeType_ = parcel.ReadInt64(); 79 } 80 Marshalling(Parcel & parcel)81 bool Marshalling(Parcel& parcel) const override 82 { 83 return parcel.WriteString16(Str8ToStr16(countryCodeStr_)) && 84 parcel.WriteInt64(countryCodeType_); 85 } 86 Unmarshalling(Parcel & parcel)87 static std::shared_ptr<CountryCode> Unmarshalling(Parcel& parcel) 88 { 89 auto country = std::make_shared<CountryCode>(); 90 country->ReadFromParcel(parcel); 91 return country; 92 } 93 ToString()94 std::string ToString() 95 { 96 std::string str = "countryCodeStr_ : " + countryCodeStr_ + 97 ", countryCodeType_ : " + std::to_string(countryCodeType_); 98 return str; 99 } 100 101 private: 102 std::string countryCodeStr_; 103 int countryCodeType_; 104 }; 105 } // namespace Location 106 } // namespace OHOS 107 #endif // COUNTRY_CODE_H