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