15c735df2Sopenharmony_ci/*
25c735df2Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd.
35c735df2Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
45c735df2Sopenharmony_ci * you may not use this file except in compliance with the License.
55c735df2Sopenharmony_ci * You may obtain a copy of the License at
65c735df2Sopenharmony_ci *
75c735df2Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
85c735df2Sopenharmony_ci *
95c735df2Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
105c735df2Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
115c735df2Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
125c735df2Sopenharmony_ci * See the License for the specific language governing permissions and
135c735df2Sopenharmony_ci * limitations under the License.
145c735df2Sopenharmony_ci */
155c735df2Sopenharmony_ci
165c735df2Sopenharmony_ci#ifndef GEO_ADDRESS_H
175c735df2Sopenharmony_ci#define GEO_ADDRESS_H
185c735df2Sopenharmony_ci
195c735df2Sopenharmony_ci#include <map>
205c735df2Sopenharmony_ci#include <mutex>
215c735df2Sopenharmony_ci#include <parcel.h>
225c735df2Sopenharmony_ci#include <string>
235c735df2Sopenharmony_ci
245c735df2Sopenharmony_cinamespace OHOS {
255c735df2Sopenharmony_cinamespace Location {
265c735df2Sopenharmony_ciclass GeoAddress : public Parcelable {
275c735df2Sopenharmony_cipublic:
285c735df2Sopenharmony_ci    GeoAddress();
295c735df2Sopenharmony_ci    ~GeoAddress() override = default;
305c735df2Sopenharmony_ci    bool Marshalling(Parcel& parcel) const override;
315c735df2Sopenharmony_ci    static std::unique_ptr<GeoAddress> Unmarshalling(Parcel& parcel);
325c735df2Sopenharmony_ci    std::string GetDescriptions(int index);
335c735df2Sopenharmony_ci    double GetLatitude();
345c735df2Sopenharmony_ci    double GetLongitude();
355c735df2Sopenharmony_ci    void ReadFromParcel(Parcel& in);
365c735df2Sopenharmony_ci    bool GetIsSystemApp();
375c735df2Sopenharmony_ci    void SetIsSystemApp(bool isSystemApp);
385c735df2Sopenharmony_ci
395c735df2Sopenharmony_ci    double latitude_;
405c735df2Sopenharmony_ci    double longitude_;
415c735df2Sopenharmony_ci    std::string locale_;
425c735df2Sopenharmony_ci    std::string placeName_;
435c735df2Sopenharmony_ci    std::string countryCode_;
445c735df2Sopenharmony_ci    std::string countryName_;
455c735df2Sopenharmony_ci    std::string administrativeArea_;
465c735df2Sopenharmony_ci    std::string subAdministrativeArea_;
475c735df2Sopenharmony_ci    std::string locality_;
485c735df2Sopenharmony_ci    std::string subLocality_;
495c735df2Sopenharmony_ci    std::string roadName_;
505c735df2Sopenharmony_ci    std::string subRoadName_;
515c735df2Sopenharmony_ci    std::string premises_;
525c735df2Sopenharmony_ci    std::string postalCode_;
535c735df2Sopenharmony_ci    std::string phoneNumber_;
545c735df2Sopenharmony_ci    std::string addressUrl_;
555c735df2Sopenharmony_ci    std::mutex mutex_;
565c735df2Sopenharmony_ci    std::map<int, std::string> descriptions_;
575c735df2Sopenharmony_ci    int descriptionsSize_ = 0;
585c735df2Sopenharmony_ci    bool isFromMock_ = false;
595c735df2Sopenharmony_ci    bool isSystemApp_ = false;
605c735df2Sopenharmony_ci    static constexpr double PARCEL_INT_SIZE = 64.0;
615c735df2Sopenharmony_ci    static constexpr int MAX_RESULT = 10;
625c735df2Sopenharmony_ci};
635c735df2Sopenharmony_ci} // namespace Location
645c735df2Sopenharmony_ci} // namespace OHOS
655c735df2Sopenharmony_ci#endif // GEO_ADDRESS_H
66