1fc223305Sopenharmony_ci/*
2fc223305Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3fc223305Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fc223305Sopenharmony_ci * you may not use this file except in compliance with the License.
5fc223305Sopenharmony_ci * You may obtain a copy of the License at
6fc223305Sopenharmony_ci *
7fc223305Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8fc223305Sopenharmony_ci *
9fc223305Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fc223305Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fc223305Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fc223305Sopenharmony_ci * See the License for the specific language governing permissions and
13fc223305Sopenharmony_ci * limitations under the License.
14fc223305Sopenharmony_ci */
15fc223305Sopenharmony_ci
16fc223305Sopenharmony_ci#include "preferences_value.h"
17fc223305Sopenharmony_ci
18fc223305Sopenharmony_cinamespace OHOS {
19fc223305Sopenharmony_cinamespace NativePreferences {
20fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(const PreferencesValue &preferencesValue)
21fc223305Sopenharmony_ci{
22fc223305Sopenharmony_ci    if (this == &preferencesValue) {
23fc223305Sopenharmony_ci        return;
24fc223305Sopenharmony_ci    }
25fc223305Sopenharmony_ci    value_ = preferencesValue.value_;
26fc223305Sopenharmony_ci}
27fc223305Sopenharmony_ci
28fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(PreferencesValue &&preferencesValue) noexcept
29fc223305Sopenharmony_ci{
30fc223305Sopenharmony_ci    if (this == &preferencesValue) {
31fc223305Sopenharmony_ci        return;
32fc223305Sopenharmony_ci    }
33fc223305Sopenharmony_ci    value_ = std::move(preferencesValue.value_);
34fc223305Sopenharmony_ci}
35fc223305Sopenharmony_ci
36fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(int value)
37fc223305Sopenharmony_ci{
38fc223305Sopenharmony_ci    value_ = value;
39fc223305Sopenharmony_ci}
40fc223305Sopenharmony_ci
41fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(int64_t value)
42fc223305Sopenharmony_ci{
43fc223305Sopenharmony_ci    value_ = value;
44fc223305Sopenharmony_ci}
45fc223305Sopenharmony_ci
46fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(float value)
47fc223305Sopenharmony_ci{
48fc223305Sopenharmony_ci    value_ = value;
49fc223305Sopenharmony_ci}
50fc223305Sopenharmony_ci
51fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(double value)
52fc223305Sopenharmony_ci{
53fc223305Sopenharmony_ci    value_ = value;
54fc223305Sopenharmony_ci}
55fc223305Sopenharmony_ci
56fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(bool value)
57fc223305Sopenharmony_ci{
58fc223305Sopenharmony_ci    value_ = value;
59fc223305Sopenharmony_ci}
60fc223305Sopenharmony_ci
61fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(const char *value)
62fc223305Sopenharmony_ci{
63fc223305Sopenharmony_ci    value_ = std::string(value);
64fc223305Sopenharmony_ci}
65fc223305Sopenharmony_ci
66fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(std::string value)
67fc223305Sopenharmony_ci{
68fc223305Sopenharmony_ci    value_ = value;
69fc223305Sopenharmony_ci}
70fc223305Sopenharmony_ci
71fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(std::vector<double> value)
72fc223305Sopenharmony_ci{
73fc223305Sopenharmony_ci    value_ = value;
74fc223305Sopenharmony_ci}
75fc223305Sopenharmony_ci
76fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(std::vector<std::string> value)
77fc223305Sopenharmony_ci{
78fc223305Sopenharmony_ci    value_ = value;
79fc223305Sopenharmony_ci}
80fc223305Sopenharmony_ci
81fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(std::vector<bool> value)
82fc223305Sopenharmony_ci{
83fc223305Sopenharmony_ci    value_ = value;
84fc223305Sopenharmony_ci}
85fc223305Sopenharmony_ci
86fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(std::vector<uint8_t> value)
87fc223305Sopenharmony_ci{
88fc223305Sopenharmony_ci    value_ = value;
89fc223305Sopenharmony_ci}
90fc223305Sopenharmony_ci
91fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(Object value)
92fc223305Sopenharmony_ci{
93fc223305Sopenharmony_ci    value_ = value;
94fc223305Sopenharmony_ci}
95fc223305Sopenharmony_ci
96fc223305Sopenharmony_ciPreferencesValue::PreferencesValue(BigInt value)
97fc223305Sopenharmony_ci{
98fc223305Sopenharmony_ci    value_ = value;
99fc223305Sopenharmony_ci}
100fc223305Sopenharmony_ci
101fc223305Sopenharmony_ciPreferencesValue &PreferencesValue::operator=(PreferencesValue &&preferencesValue) noexcept
102fc223305Sopenharmony_ci{
103fc223305Sopenharmony_ci    if (this == &preferencesValue) {
104fc223305Sopenharmony_ci        return *this;
105fc223305Sopenharmony_ci    }
106fc223305Sopenharmony_ci    value_ = std::move(preferencesValue.value_);
107fc223305Sopenharmony_ci    return *this;
108fc223305Sopenharmony_ci}
109fc223305Sopenharmony_ci
110fc223305Sopenharmony_ciPreferencesValue &PreferencesValue::operator=(const PreferencesValue &preferencesValue)
111fc223305Sopenharmony_ci{
112fc223305Sopenharmony_ci    if (this == &preferencesValue) {
113fc223305Sopenharmony_ci        return *this;
114fc223305Sopenharmony_ci    }
115fc223305Sopenharmony_ci    value_ = preferencesValue.value_;
116fc223305Sopenharmony_ci    return *this;
117fc223305Sopenharmony_ci}
118fc223305Sopenharmony_ci
119fc223305Sopenharmony_cibool PreferencesValue::IsInt() const
120fc223305Sopenharmony_ci{
121fc223305Sopenharmony_ci    return std::holds_alternative<int>(value_);
122fc223305Sopenharmony_ci}
123fc223305Sopenharmony_ci
124fc223305Sopenharmony_cibool PreferencesValue::IsLong() const
125fc223305Sopenharmony_ci{
126fc223305Sopenharmony_ci    return std::holds_alternative<int64_t>(value_);
127fc223305Sopenharmony_ci}
128fc223305Sopenharmony_ci
129fc223305Sopenharmony_cibool PreferencesValue::IsFloat() const
130fc223305Sopenharmony_ci{
131fc223305Sopenharmony_ci    return std::holds_alternative<float>(value_);
132fc223305Sopenharmony_ci}
133fc223305Sopenharmony_ci
134fc223305Sopenharmony_cibool PreferencesValue::IsDouble() const
135fc223305Sopenharmony_ci{
136fc223305Sopenharmony_ci    return std::holds_alternative<double>(value_);
137fc223305Sopenharmony_ci}
138fc223305Sopenharmony_ci
139fc223305Sopenharmony_cibool PreferencesValue::IsBool() const
140fc223305Sopenharmony_ci{
141fc223305Sopenharmony_ci    return std::holds_alternative<bool>(value_);
142fc223305Sopenharmony_ci}
143fc223305Sopenharmony_ci
144fc223305Sopenharmony_cibool PreferencesValue::IsString() const
145fc223305Sopenharmony_ci{
146fc223305Sopenharmony_ci    return std::holds_alternative<std::string>(value_);
147fc223305Sopenharmony_ci}
148fc223305Sopenharmony_ci
149fc223305Sopenharmony_cibool PreferencesValue::IsDoubleArray() const
150fc223305Sopenharmony_ci{
151fc223305Sopenharmony_ci    return std::holds_alternative<std::vector<double>>(value_);
152fc223305Sopenharmony_ci}
153fc223305Sopenharmony_ci
154fc223305Sopenharmony_cibool PreferencesValue::IsUint8Array() const
155fc223305Sopenharmony_ci{
156fc223305Sopenharmony_ci    return std::holds_alternative<std::vector<uint8_t>>(value_);
157fc223305Sopenharmony_ci}
158fc223305Sopenharmony_ci
159fc223305Sopenharmony_cibool PreferencesValue::IsObject() const
160fc223305Sopenharmony_ci{
161fc223305Sopenharmony_ci    return std::holds_alternative<Object>(value_);
162fc223305Sopenharmony_ci}
163fc223305Sopenharmony_ci
164fc223305Sopenharmony_cibool PreferencesValue::IsStringArray() const
165fc223305Sopenharmony_ci{
166fc223305Sopenharmony_ci    return std::holds_alternative<std::vector<std::string>>(value_);
167fc223305Sopenharmony_ci}
168fc223305Sopenharmony_ci
169fc223305Sopenharmony_cibool PreferencesValue::IsBoolArray() const
170fc223305Sopenharmony_ci{
171fc223305Sopenharmony_ci    return std::holds_alternative<std::vector<bool>>(value_);
172fc223305Sopenharmony_ci}
173fc223305Sopenharmony_ci
174fc223305Sopenharmony_cibool PreferencesValue::IsBigInt() const
175fc223305Sopenharmony_ci{
176fc223305Sopenharmony_ci    return std::holds_alternative<BigInt>(value_);
177fc223305Sopenharmony_ci}
178fc223305Sopenharmony_ci
179fc223305Sopenharmony_ciPreferencesValue::operator int() const
180fc223305Sopenharmony_ci{
181fc223305Sopenharmony_ci    return std::get<int>(value_);
182fc223305Sopenharmony_ci}
183fc223305Sopenharmony_ci
184fc223305Sopenharmony_ciPreferencesValue::operator int64_t() const
185fc223305Sopenharmony_ci{
186fc223305Sopenharmony_ci    return std::get<int64_t>(value_);
187fc223305Sopenharmony_ci}
188fc223305Sopenharmony_ci
189fc223305Sopenharmony_ciPreferencesValue::operator float() const
190fc223305Sopenharmony_ci{
191fc223305Sopenharmony_ci    return std::get<float>(value_);
192fc223305Sopenharmony_ci}
193fc223305Sopenharmony_ci
194fc223305Sopenharmony_ciPreferencesValue::operator double() const
195fc223305Sopenharmony_ci{
196fc223305Sopenharmony_ci    return std::get<double>(value_);
197fc223305Sopenharmony_ci}
198fc223305Sopenharmony_ci
199fc223305Sopenharmony_ciPreferencesValue::operator bool() const
200fc223305Sopenharmony_ci{
201fc223305Sopenharmony_ci    return std::get<bool>(value_);
202fc223305Sopenharmony_ci}
203fc223305Sopenharmony_ci
204fc223305Sopenharmony_ciPreferencesValue::operator std::string() const
205fc223305Sopenharmony_ci{
206fc223305Sopenharmony_ci    return std::get<std::string>(value_);
207fc223305Sopenharmony_ci}
208fc223305Sopenharmony_ci
209fc223305Sopenharmony_ciPreferencesValue::operator std::vector<double>() const
210fc223305Sopenharmony_ci{
211fc223305Sopenharmony_ci    return std::get<std::vector<double>>(value_);
212fc223305Sopenharmony_ci}
213fc223305Sopenharmony_ci
214fc223305Sopenharmony_ciPreferencesValue::operator std::vector<bool>() const
215fc223305Sopenharmony_ci{
216fc223305Sopenharmony_ci    return std::get<std::vector<bool>>(value_);
217fc223305Sopenharmony_ci}
218fc223305Sopenharmony_ci
219fc223305Sopenharmony_ciPreferencesValue::operator std::vector<std::string>() const
220fc223305Sopenharmony_ci{
221fc223305Sopenharmony_ci    return std::get<std::vector<std::string>>(value_);
222fc223305Sopenharmony_ci}
223fc223305Sopenharmony_ci
224fc223305Sopenharmony_ciPreferencesValue::operator std::vector<uint8_t>() const
225fc223305Sopenharmony_ci{
226fc223305Sopenharmony_ci    return std::get<std::vector<uint8_t>>(value_);
227fc223305Sopenharmony_ci}
228fc223305Sopenharmony_ci
229fc223305Sopenharmony_ciPreferencesValue::operator Object() const
230fc223305Sopenharmony_ci{
231fc223305Sopenharmony_ci    return std::get<Object>(value_);
232fc223305Sopenharmony_ci}
233fc223305Sopenharmony_ci
234fc223305Sopenharmony_ciPreferencesValue::operator BigInt() const
235fc223305Sopenharmony_ci{
236fc223305Sopenharmony_ci    return std::get<BigInt>(value_);
237fc223305Sopenharmony_ci}
238fc223305Sopenharmony_ci
239fc223305Sopenharmony_cibool PreferencesValue::operator==(const PreferencesValue &value)
240fc223305Sopenharmony_ci{
241fc223305Sopenharmony_ci    return (this->value_ == value.value_);
242fc223305Sopenharmony_ci}
243fc223305Sopenharmony_ci} // End of namespace NativePreferences
244fc223305Sopenharmony_ci} // End of namespace OHOS
245