Fix cosmetic issues
[platform/core/appfw/pkgmgr-info.git] / src / common / parcel / depinfo_parcelable.cc
1 /*
2  * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #include "depinfo_parcelable.hh"
17
18 #include <vector>
19
20 #include "pkgmgrinfo_private.h"
21
22 namespace pkgmgr_common {
23 namespace parcel {
24
25 DepInfoParcelable::DepInfoParcelable()
26     : AbstractParcelable(0, ParcelableType::DepInfo),
27         pkgid_(""), auto_release_(true) {}
28
29 DepInfoParcelable::DepInfoParcelable(int ret,
30     std::vector<dependency_x*>&& dependency_list, bool auto_release)
31     : AbstractParcelable(0, ParcelableType::DepInfo, ret),
32         pkgid_(""),
33         dependency_list_(std::move(dependency_list)),
34         auto_release_(auto_release) {}
35
36 DepInfoParcelable::DepInfoParcelable(const std::string& pkgid)
37     : AbstractParcelable(0, ParcelableType::DepInfo),
38         pkgid_(pkgid), auto_release_(true) {}
39
40 DepInfoParcelable::~DepInfoParcelable() {
41   if (!auto_release_)
42     return;
43
44   for (auto dep : dependency_list_)
45     pkgmgrinfo_basic_free_dependency(dep);
46 }
47
48
49 const std::vector<dependency_x*>& DepInfoParcelable::GetDependencyInfo() {
50   return dependency_list_;
51 }
52
53 std::vector<dependency_x*> DepInfoParcelable::ExtractDependencyInfo() {
54   return std::move(dependency_list_);
55 }
56
57 const std::string& DepInfoParcelable::GetPkgID() {
58   return pkgid_;
59 }
60
61 void DepInfoParcelable::WriteToParcel(tizen_base::Parcel* parcel) const {
62   AbstractParcelable::WriteToParcel(parcel);
63   parcel->WriteString(pkgid_);
64   WriteInt(parcel, dependency_list_.size());
65
66   for (auto dependency : dependency_list_)
67     WriteDependency(parcel, dependency);
68 }
69
70 void DepInfoParcelable::ReadFromParcel(tizen_base::Parcel* parcel) {
71   int len = 0;
72   AbstractParcelable::ReadFromParcel(parcel);
73   pkgid_ = parcel->ReadString();
74   ReadInt(parcel, &len);
75
76   for (int i = 0; i < len ; ++i)
77     dependency_list_.emplace_back(ReadDependency(parcel));
78 }
79
80 void DepInfoParcelable::WriteDependency(tizen_base::Parcel* parcel,
81     dependency_x *dependency) const {
82   WriteString(parcel, dependency->pkgid);
83   WriteString(parcel, dependency->depends_on);
84   WriteString(parcel, dependency->type);
85   WriteString(parcel, dependency->required_version);
86 }
87
88 dependency_x *DepInfoParcelable::ReadDependency(tizen_base::Parcel* parcel) {
89   dependency_x* dep =
90       reinterpret_cast<dependency_x*>(calloc(1, sizeof(dependency_x)));
91   ReadString(parcel, &dep->pkgid);
92   ReadString(parcel, &dep->depends_on);
93   ReadString(parcel, &dep->type);
94   ReadString(parcel, &dep->required_version);
95
96   return dep;
97 }
98
99 }  // namespace parcel
100 }  // namespace pkgmgr_common