Add metadata to pkginfo
[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
6 #include <vector>
7
8 #include "pkgmgrinfo_basic.h"
9
10 #include "pkg_write_type.hh"
11
12 namespace pkgmgr_common {
13 namespace parcel {
14
15 #ifndef EXPORT_API
16 #define EXPORT_API __attribute__((visibility("default")))
17 #endif
18
19 class EXPORT_API PkgInfoParcelable : public AbstractParcelable {
20  public:
21   PkgInfoParcelable();
22   PkgInfoParcelable(uid_t uid,
23       std::vector<std::shared_ptr<package_x>>&& pkg_list,
24       PkgWriteType write_type, bool auto_release = true);
25   PkgInfoParcelable(int ret, std::vector<std::shared_ptr<package_x>>&& pkg_list,
26       bool auto_release = true);
27   ~PkgInfoParcelable();
28   const std::vector<std::shared_ptr<package_x>>& GetPkgInfo();
29   std::vector<std::shared_ptr<package_x>> ExtractPkgInfo();
30   PkgWriteType GetWriteType();
31
32   void WriteToParcel(tizen_base::Parcel* parcel) const override;
33   void ReadFromParcel(tizen_base::Parcel* parcel) override;
34
35  private:
36   void WriteIcon(tizen_base::Parcel* parcel, GList* icon) const;
37   void WriteLabel(tizen_base::Parcel* parcel, GList* label) const;
38   void WriteAuthor(tizen_base::Parcel* parcel, GList* author) const;
39   void WriteDescription(tizen_base::Parcel* parcel, GList* description) const;
40   void WriteLicense(tizen_base::Parcel* parcel, GList* license) const;
41   void WritePrivileges(tizen_base::Parcel* parcel, GList* privileges) const;
42   void WriteAppdefinedPrivileges(tizen_base::Parcel* parcel,
43       GList* appdefined_privileges) const;
44   void WriteProvidesAppdefinedPrivileges(tizen_base::Parcel* parcel,
45       GList* provides_appdefined_privileges) const;
46   void WriteApplication(tizen_base::Parcel* parcel, GList* application) const;
47   void WriteCompatibility(tizen_base::Parcel* parcel,
48       GList* compatibility) const;
49   void WriteDeviceprofile(tizen_base::Parcel* parcel,
50       GList* deviceprofile) const;
51   void WriteDependencies(tizen_base::Parcel* parcel,
52       GList* dependencies) const;
53   void WritePlugin(tizen_base::Parcel* parcel, GList* plugin) const;
54   void WriteResAllowedPackages(tizen_base::Parcel* parcel,
55       GList* plugin) const;
56   void WriteMetadata(tizen_base::Parcel* parcel, GList* metadata) const;
57   void WritePackage(tizen_base::Parcel* parcel, package_x* package) const;
58   void ReadIcon(tizen_base::Parcel* parcel, GList** list);
59   void ReadLabel(tizen_base::Parcel* parcel, GList** list);
60   void ReadAuthor(tizen_base::Parcel* parcel, GList** list);
61   void ReadDescription(tizen_base::Parcel* parcel, GList** list);
62   void ReadLicense(tizen_base::Parcel* parcel, GList** list);
63   void ReadPrivileges(tizen_base::Parcel* parcel, GList** list);
64   void ReadAppdefinedPrivileges(tizen_base::Parcel* parcel, GList** list);
65   void ReadProvidesAppdefinedPrivileges(tizen_base::Parcel* parcel,
66       GList** list);
67   void ReadApplication(tizen_base::Parcel* parcel, GList** list);
68   void ReadCompatibility(tizen_base::Parcel* parcel, GList** list);
69   void ReadDeviceprofile(tizen_base::Parcel* parcel, GList** list);
70   void ReadDependencies(tizen_base::Parcel* parcel, GList** list);
71   void ReadPlugin(tizen_base::Parcel* parcel, GList** list);
72   void ReadResAllowedPackages(tizen_base::Parcel* parcel, GList** list);
73   void ReadMetadata(tizen_base::Parcel* parcel, GList** list);
74   package_x* ReadPackage(tizen_base::Parcel* parcel);
75
76   std::vector<std::shared_ptr<package_x>> pkg_list_;
77   PkgWriteType write_type_;
78   bool auto_release_;
79 };
80
81 }  // namespace parcel
82 }  // namespace pkgmgr_common
83
84 #endif  // PKGINFO_PARCELABLE_HH_