Fix memory leak in Parcelable
[platform/core/appfw/pkgmgr-info.git] / src / common / parcel / pkginfo_parcelable.hh
1 #ifndef PKGINFO_PARCELABLE_HH_
2 #define PKGINFO_PARCELABLE_HH_
3
4 #include "abstract_parcelable.hh"
5 #include "pkg_set_db_handler.hh"
6
7 #include <vector>
8
9 #include "pkgmgrinfo_basic.h"
10
11 namespace pkgmgr_common {
12 namespace parcel {
13
14 #ifndef EXPORT_API
15 #define EXPORT_API __attribute__((visibility("default")))
16 #endif
17
18 class EXPORT_API PkgInfoParcelable : public AbstractParcelable {
19  public:
20   PkgInfoParcelable();
21   PkgInfoParcelable(uid_t uid, std::vector<package_x *>&& pkg_list, WriteType write_type, bool auto_release);
22   PkgInfoParcelable(int ret, std::vector<package_x *>&& pkg_list, bool auto_release);
23   ~PkgInfoParcelable();
24   const std::vector<package_x *>& GetPkgInfo();
25   std::vector<package_x *>&& ExtractPkgInfo();
26   WriteType GetWriteType();
27
28   void WriteToParcel(tizen_base::Parcel* parcel) const override;
29   void ReadFromParcel(tizen_base::Parcel* parcel) override;
30
31  private:
32   void WriteIcon(tizen_base::Parcel* parcel, GList* icon) const;
33   void WriteLabel(tizen_base::Parcel* parcel, GList* label) const;
34   void WriteAuthor(tizen_base::Parcel* parcel, GList* author) const;
35   void WriteDescription(tizen_base::Parcel* parcel, GList* description) const;
36   void WriteLicense(tizen_base::Parcel* parcel, GList* license) const;
37   void WritePrivileges(tizen_base::Parcel* parcel, GList* privileges) const;
38   void WriteAppdefinedPrivileges(tizen_base::Parcel* parcel, GList* appdefined_privileges) const;
39   void WriteProvidesAppdefinedPrivileges(tizen_base::Parcel* parcel, GList* provides_appdefined_privileges) const;
40   void WriteApplication(tizen_base::Parcel* parcel, GList* application) const;
41   void WriteCompatibility(tizen_base::Parcel* parcel, GList* compatibility) const;
42   void WriteDeviceprofile(tizen_base::Parcel* parcel, GList* deviceprofile) const;
43   void WriteDependencies(tizen_base::Parcel* parcel, GList* dependencies) const;
44   void WritePlugin(tizen_base::Parcel* parcel, GList* plugin) const;
45   void WritePackage(tizen_base::Parcel* parcel, package_x *package) const;
46   void ReadIcon(tizen_base::Parcel* parcel, GList** list);
47   void ReadLabel(tizen_base::Parcel* parcel, GList** list);
48   void ReadAuthor(tizen_base::Parcel* parcel, GList** list);
49   void ReadDescription(tizen_base::Parcel* parcel, GList** list);
50   void ReadLicense(tizen_base::Parcel* parcel, GList** list);
51   void ReadPrivileges(tizen_base::Parcel* parcel, GList** list);
52   void ReadAppdefinedPrivileges(tizen_base::Parcel* parcel, GList** list);
53   void ReadProvidesAppdefinedPrivileges(tizen_base::Parcel* parcel, GList** list);
54   void ReadApplication(tizen_base::Parcel* parcel, GList** list);
55   void ReadCompatibility(tizen_base::Parcel* parcel, GList** list);
56   void ReadDeviceprofile(tizen_base::Parcel* parcel, GList** list);
57   void ReadDependencies(tizen_base::Parcel* parcel, GList** list);
58   void ReadPlugin(tizen_base::Parcel* parcel, GList** list);
59   package_x *ReadPackage(tizen_base::Parcel* parcel);
60
61   std::vector<package_x *> pkg_list_;
62   WriteType write_type_;
63   bool auto_release_;
64 };
65
66 }  // namespace parcel
67 }  // namespace pkgmgr_common
68
69 #endif  // PKGINFO_PARCELABLE_HH_