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_(""), optionIndex_(0),
21 optionTitle_(""), optionDesc_(""),
22 optionType_(0), optionUnit_(0), optionConstraintType_(0) {
23 optionConstraintString_.clear();
24 optionConstraintNumber_.clear();
25 }
26
ScanOptionDescriptor(const ScanOptionDescriptor & right)27 ScanOptionDescriptor::ScanOptionDescriptor(const ScanOptionDescriptor &right)
28 {
29 optionName_ = right.optionName_;
30 optionIndex_ = right.optionIndex_;
31 optionTitle_ = right.optionTitle_;
32 optionDesc_ = right.optionDesc_;
33 optionType_ = right.optionType_;
34 optionUnit_ = right.optionUnit_;
35 optionConstraintType_ = right.optionConstraintType_;
36 optionConstraintString_.assign(right.optionConstraintString_.begin(), right.optionConstraintString_.end());
37 optionConstraintNumber_.assign(right.optionConstraintNumber_.begin(), right.optionConstraintNumber_.end());
38 optionConstraintRange_ = right.optionConstraintRange_;
39 }
40
operator =(const ScanOptionDescriptor & right)41 ScanOptionDescriptor &ScanOptionDescriptor::operator=(const ScanOptionDescriptor &right)
42 {
43 if (this != &right) {
44 optionName_ = right.optionName_;
45 optionIndex_ = right.optionIndex_;
46 optionTitle_ = right.optionTitle_;
47 optionDesc_ = right.optionDesc_;
48 optionType_ = right.optionType_;
49 optionUnit_ = right.optionUnit_;
50 optionConstraintType_ = right.optionConstraintType_;
51 optionConstraintString_.assign(right.optionConstraintString_.begin(), right.optionConstraintString_.end());
52 optionConstraintNumber_.assign(right.optionConstraintNumber_.begin(), right.optionConstraintNumber_.end());
53 optionConstraintRange_ = right.optionConstraintRange_;
54 }
55 return *this;
56 }
57
SetOptionName(const std::string & optionName)58 void ScanOptionDescriptor::SetOptionName(const std::string &optionName)
59 {
60 optionName_ = optionName;
61 }
62
SetOptionIndex(const uint32_t & optionIndex)63 void ScanOptionDescriptor::SetOptionIndex(const uint32_t& optionIndex)
64 {
65 optionIndex_ = optionIndex;
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
SetOptionConstraintType(const uint32_t & optionConstraintType)88 void ScanOptionDescriptor::SetOptionConstraintType(const uint32_t &optionConstraintType)
89 {
90 optionConstraintType_ = optionConstraintType;
91 }
92
SetOptionConstraintString(const std::vector<std::string> & optionConstraintString)93 void ScanOptionDescriptor::SetOptionConstraintString(const std::vector<std::string> &optionConstraintString)
94 {
95 optionConstraintString_.assign(optionConstraintString.begin(), optionConstraintString.end());
96 }
97
SetOptionConstraintNumber(const std::vector<int32_t> & optionConstraintNumber)98 void ScanOptionDescriptor::SetOptionConstraintNumber(const std::vector<int32_t> &optionConstraintNumber)
99 {
100 optionConstraintNumber_.assign(optionConstraintNumber.begin(), optionConstraintNumber.end());
101 }
102
SetOptionConstraintRange(const ScanRange & optionConstraintRange)103 void ScanOptionDescriptor::SetOptionConstraintRange(const ScanRange &optionConstraintRange)
104 {
105 optionConstraintRange_ = optionConstraintRange;
106 }
107
GetOptionName() const108 std::string ScanOptionDescriptor::GetOptionName() const
109 {
110 return optionName_;
111 }
112
GetOptionIndex() const113 uint32_t ScanOptionDescriptor::GetOptionIndex() const
114 {
115 return optionIndex_;
116 }
117
GetOptionTitle() const118 std::string ScanOptionDescriptor::GetOptionTitle() const
119 {
120 return optionTitle_;
121 }
122
GetOptionDesc() const123 std::string ScanOptionDescriptor::GetOptionDesc() const
124 {
125 return optionDesc_;
126 }
127
GetOptionType() const128 uint32_t ScanOptionDescriptor::GetOptionType() const
129 {
130 return optionType_;
131 }
132
GetOptionUnit() const133 uint32_t ScanOptionDescriptor::GetOptionUnit() const
134 {
135 return optionUnit_;
136 }
137
GetOptionConstraintType() const138 uint32_t ScanOptionDescriptor::GetOptionConstraintType() const
139 {
140 return optionConstraintType_;
141 }
142
GetOptionConstraintString(std::vector<std::string> & optionConstraintString) const143 void ScanOptionDescriptor::GetOptionConstraintString(std::vector<std::string> &optionConstraintString) const
144 {
145 optionConstraintString.assign(optionConstraintString_.begin(), optionConstraintString_.end());
146 }
147
GetOptionConstraintNumber(std::vector<int32_t> & optionConstraintNumber) const148 void ScanOptionDescriptor::GetOptionConstraintNumber(std::vector<int32_t> &optionConstraintNumber) const
149 {
150 optionConstraintNumber.assign(optionConstraintNumber_.begin(), optionConstraintNumber_.end());
151 }
152
GetOptionConstraintRange(ScanRange & optionConstraintRange) const153 void ScanOptionDescriptor::GetOptionConstraintRange(ScanRange &optionConstraintRange) const
154 {
155 optionConstraintRange = optionConstraintRange_;
156 }
157
ReadFromParcel(Parcel & parcel)158 void ScanOptionDescriptor::ReadFromParcel(Parcel &parcel)
159 {
160 SetOptionName(parcel.ReadString());
161 SetOptionTitle(parcel.ReadString());
162 SetOptionDesc(parcel.ReadString());
163 SetOptionType(parcel.ReadUint32());
164 SetOptionUnit(parcel.ReadUint32());
165
166 SetOptionConstraintType(parcel.ReadUint32());
167
168 std::vector<std::string> optionConstraintString;
169 parcel.ReadStringVector(&optionConstraintString);
170 if (optionConstraintString.size() > 0) {
171 SetOptionConstraintString(optionConstraintString);
172 }
173
174 std::vector<std::int32_t> optionConstraintNumber;
175 parcel.ReadInt32Vector(&optionConstraintNumber);
176 if (optionConstraintNumber.size() > 0) {
177 SetOptionConstraintNumber(optionConstraintNumber);
178 }
179
180 auto scanRange = ScanRange::Unmarshalling(parcel);
181 if (scanRange != nullptr) {
182 ScanRange optionConstraintRange = *scanRange;
183 SetOptionConstraintRange(optionConstraintRange);
184 }
185 }
186
Marshalling(Parcel & parcel) const187 bool ScanOptionDescriptor::Marshalling(Parcel &parcel) const
188 {
189 parcel.WriteString(optionName_);
190 parcel.WriteString(optionTitle_);
191 parcel.WriteString(optionDesc_);
192 parcel.WriteUint32(optionType_);
193 parcel.WriteUint32(optionUnit_);
194
195 parcel.WriteUint32(optionConstraintType_);
196
197 parcel.WriteStringVector(optionConstraintString_);
198
199 parcel.WriteInt32Vector(optionConstraintNumber_);
200
201 optionConstraintRange_.Marshalling(parcel);
202 return true;
203 }
204
Unmarshalling(Parcel & parcel)205 std::shared_ptr<ScanOptionDescriptor> ScanOptionDescriptor::Unmarshalling(Parcel &parcel)
206 {
207 auto nativeObj = std::make_shared<ScanOptionDescriptor>();
208 nativeObj->ReadFromParcel(parcel);
209 return nativeObj;
210 }
211
Dump()212 void ScanOptionDescriptor::Dump()
213 {
214 SCAN_HILOGD("optionName = %{public}s", optionName_.c_str());
215 SCAN_HILOGD("optionTitle = %{public}s", optionTitle_.c_str());
216 SCAN_HILOGD("optionDesc = %{public}s", optionDesc_.c_str());
217 SCAN_HILOGD("optionType = %{public}d", optionType_);
218 SCAN_HILOGD("optionUnit = %{public}d", optionUnit_);
219
220 SCAN_HILOGD("optionConstraintType = %{public}d", optionConstraintType_);
221 for (const auto& str : optionConstraintString_) {
222 SCAN_HILOGD("str = %{public}s", str.c_str());
223 }
224 for (const auto& number : optionConstraintNumber_) {
225 SCAN_HILOGD("number = %{public}d", number);
226 }
227 optionConstraintRange_.Dump();
228 }
229 } // namespace OHOS::Scan
230