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 #include "scan_option_descriptor.h"
17 #include "scan_log.h"
18
19 namespace OHOS::Scan {
ScanOptionDescriptor()20 ScanOptionDescriptor::ScanOptionDescriptor() : optionName_(""), optionTitle_(""), optionDesc_(""),
21 optionType_(0), optionUnit_(0), optionSize_(0), optionCap_(0), optionConstraintType_(0) {
22 optionConstraintString_.clear();
23 optionConstraintNumber_.clear();
24 }
25
ScanOptionDescriptor(const ScanOptionDescriptor & right)26 ScanOptionDescriptor::ScanOptionDescriptor(const ScanOptionDescriptor &right)
27 {
28 optionName_ = right.optionName_;
29 optionTitle_ = right.optionTitle_;
30 optionDesc_ = right.optionDesc_;
31 optionType_ = right.optionType_;
32 optionUnit_ = right.optionUnit_;
33
34 optionSize_ = right.optionSize_;
35 optionCap_ = right.optionCap_;
36
37 optionConstraintType_ = right.optionConstraintType_;
38 optionConstraintString_.assign(right.optionConstraintString_.begin(), right.optionConstraintString_.end());
39 optionConstraintNumber_.assign(right.optionConstraintNumber_.begin(), right.optionConstraintNumber_.end());
40 optionConstraintRange_ = right.optionConstraintRange_;
41 }
42
operator =(const ScanOptionDescriptor & right)43 ScanOptionDescriptor &ScanOptionDescriptor::operator=(const ScanOptionDescriptor &right)
44 {
45 if (this != &right) {
46 optionName_ = right.optionName_;
47 optionTitle_ = right.optionTitle_;
48 optionDesc_ = right.optionDesc_;
49 optionType_ = right.optionType_;
50 optionUnit_ = right.optionUnit_;
51
52 optionSize_ = right.optionSize_;
53 optionCap_ = right.optionCap_;
54
55 optionConstraintType_ = right.optionConstraintType_;
56 optionConstraintString_.assign(right.optionConstraintString_.begin(), right.optionConstraintString_.end());
57 optionConstraintNumber_.assign(right.optionConstraintNumber_.begin(), right.optionConstraintNumber_.end());
58 optionConstraintRange_ = right.optionConstraintRange_;
59 }
60 return *this;
61 }
62
SetOptionName(const std::string & optionName)63 void ScanOptionDescriptor::SetOptionName(const std::string &optionName)
64 {
65 optionName_ = optionName;
66 }
67
SetOptionTitle(const std::string & optionTitle)68 void ScanOptionDescriptor::SetOptionTitle(const std::string &optionTitle)
69 {
70 optionTitle_ = optionTitle;
71 }
72
SetOptionDesc(const std::string & optionDesc)73 void ScanOptionDescriptor::SetOptionDesc(const std::string &optionDesc)
74 {
75 optionDesc_ = optionDesc;
76 }
77
SetOptionType(const uint32_t & optionType)78 void ScanOptionDescriptor::SetOptionType(const uint32_t &optionType)
79 {
80 optionType_ = optionType;
81 }
82
SetOptionUnit(const uint32_t & optionUnit)83 void ScanOptionDescriptor::SetOptionUnit(const uint32_t &optionUnit)
84 {
85 optionUnit_ = optionUnit;
86 }
87
SetOptionSize(const int32_t & optionSize)88 void ScanOptionDescriptor::SetOptionSize(const int32_t &optionSize)
89 {
90 optionSize_ = optionSize;
91 }
92
SetOptionCap(const int32_t & optionCap)93 void ScanOptionDescriptor::SetOptionCap(const int32_t &optionCap)
94 {
95 optionCap_ = optionCap;
96 }
97
SetOptionConstraintType(const uint32_t & optionConstraintType)98 void ScanOptionDescriptor::SetOptionConstraintType(const uint32_t &optionConstraintType)
99 {
100 optionConstraintType_ = optionConstraintType;
101 }
102
SetOptionConstraintString(const std::vector<std::string> & optionConstraintString)103 void ScanOptionDescriptor::SetOptionConstraintString(const std::vector<std::string> &optionConstraintString)
104 {
105 optionConstraintString_.assign(optionConstraintString.begin(), optionConstraintString.end());
106 }
107
SetOptionConstraintNumber(const std::vector<int32_t> & optionConstraintNumber)108 void ScanOptionDescriptor::SetOptionConstraintNumber(const std::vector<int32_t> &optionConstraintNumber)
109 {
110 optionConstraintNumber_.assign(optionConstraintNumber.begin(), optionConstraintNumber.end());
111 }
112
SetOptionConstraintRange(const ScanRange & optionConstraintRange)113 void ScanOptionDescriptor::SetOptionConstraintRange(const ScanRange &optionConstraintRange)
114 {
115 optionConstraintRange_ = optionConstraintRange;
116 }
117
GetOptionName() const118 std::string ScanOptionDescriptor::GetOptionName() const
119 {
120 return optionName_;
121 }
122
GetOptionTitle() const123 std::string ScanOptionDescriptor::GetOptionTitle() const
124 {
125 return optionTitle_;
126 }
127
GetOptionDesc() const128 std::string ScanOptionDescriptor::GetOptionDesc() const
129 {
130 return optionDesc_;
131 }
132
GetOptionType() const133 uint32_t ScanOptionDescriptor::GetOptionType() const
134 {
135 return optionType_;
136 }
137
GetOptionUnit() const138 uint32_t ScanOptionDescriptor::GetOptionUnit() const
139 {
140 return optionUnit_;
141 }
142
GetOptionSize() const143 int32_t ScanOptionDescriptor::GetOptionSize() const
144 {
145 return optionSize_;
146 }
147
GetOptionCap() const148 int32_t ScanOptionDescriptor::GetOptionCap() const
149 {
150 return optionCap_;
151 }
152
GetOptionConstraintType() const153 uint32_t ScanOptionDescriptor::GetOptionConstraintType() const
154 {
155 return optionConstraintType_;
156 }
157
GetOptionConstraintString(std::vector<std::string> & optionConstraintString) const158 void ScanOptionDescriptor::GetOptionConstraintString(std::vector<std::string> &optionConstraintString) const
159 {
160 optionConstraintString.assign(optionConstraintString_.begin(), optionConstraintString_.end());
161 }
162
GetOptionConstraintNumber(std::vector<int32_t> & optionConstraintNumber) const163 void ScanOptionDescriptor::GetOptionConstraintNumber(std::vector<int32_t> &optionConstraintNumber) const
164 {
165 optionConstraintNumber.assign(optionConstraintNumber_.begin(), optionConstraintNumber_.end());
166 }
167
GetOptionConstraintRange(ScanRange & optionConstraintRange) const168 void ScanOptionDescriptor::GetOptionConstraintRange(ScanRange &optionConstraintRange) const
169 {
170 optionConstraintRange = optionConstraintRange_;
171 }
172
ReadFromParcel(Parcel & parcel)173 void ScanOptionDescriptor::ReadFromParcel(Parcel &parcel)
174 {
175 SetOptionName(parcel.ReadString());
176 SetOptionTitle(parcel.ReadString());
177 SetOptionDesc(parcel.ReadString());
178 SetOptionType(parcel.ReadUint32());
179 SetOptionUnit(parcel.ReadUint32());
180
181 SetOptionSize(parcel.ReadInt32());
182 SetOptionCap(parcel.ReadInt32());
183
184 SetOptionConstraintType(parcel.ReadUint32());
185
186 std::vector<std::string> optionConstraintString;
187 parcel.ReadStringVector(&optionConstraintString);
188 if (optionConstraintString.size() > 0) {
189 SetOptionConstraintString(optionConstraintString);
190 }
191
192 std::vector<std::int32_t> optionConstraintNumber;
193 parcel.ReadInt32Vector(&optionConstraintNumber);
194 if (optionConstraintNumber.size() > 0) {
195 SetOptionConstraintNumber(optionConstraintNumber);
196 }
197
198 auto scanRange = ScanRange::Unmarshalling(parcel);
199 if (scanRange != nullptr) {
200 ScanRange optionConstraintRange = *scanRange;
201 SetOptionConstraintRange(optionConstraintRange);
202 }
203 }
204
Marshalling(Parcel & parcel) const205 bool ScanOptionDescriptor::Marshalling(Parcel &parcel) const
206 {
207 parcel.WriteString(optionName_);
208 parcel.WriteString(optionTitle_);
209 parcel.WriteString(optionDesc_);
210 parcel.WriteUint32(optionType_);
211 parcel.WriteUint32(optionUnit_);
212
213 parcel.WriteInt32(optionSize_);
214 parcel.WriteInt32(optionCap_);
215
216 parcel.WriteUint32(optionConstraintType_);
217
218 parcel.WriteStringVector(optionConstraintString_);
219
220 parcel.WriteInt32Vector(optionConstraintNumber_);
221
222 optionConstraintRange_.Marshalling(parcel);
223 return true;
224 }
225
Unmarshalling(Parcel & parcel)226 std::shared_ptr<ScanOptionDescriptor> ScanOptionDescriptor::Unmarshalling(Parcel &parcel)
227 {
228 auto nativeObj = std::make_shared<ScanOptionDescriptor>();
229 nativeObj->ReadFromParcel(parcel);
230 return nativeObj;
231 }
232
Dump()233 void ScanOptionDescriptor::Dump()
234 {
235 SCAN_HILOGD("optionName = %{public}s", optionName_.c_str());
236 SCAN_HILOGD("optionTitle = %{public}s", optionTitle_.c_str());
237 SCAN_HILOGD("optionDesc = %{public}s", optionDesc_.c_str());
238 SCAN_HILOGD("optionType = %{public}d", optionType_);
239 SCAN_HILOGD("optionUnit = %{public}d", optionUnit_);
240
241 SCAN_HILOGD("optionSize = %{public}d", optionSize_);
242 SCAN_HILOGD("optionCap = %{public}d", optionCap_);
243
244 SCAN_HILOGD("optionConstraintType = %{public}d", optionConstraintType_);
245 }
246 } // namespace OHOS::Scan
247