Merge branch 'tizen' of ssh://review.tizen.org:29418/platform/core/appfw/pkgmgr-info
[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, std::vector<package_x *>&& pkg_list, PkgWriteType write_type, bool auto_release = true);
23   PkgInfoParcelable(int ret, std::vector<package_x *>&& pkg_list, bool auto_release = true);
24   ~PkgInfoParcelable();
25   const std::vector<package_x *>& GetPkgInfo();
26   std::vector<package_x *> ExtractPkgInfo();
27   PkgWriteType GetWriteType();
28
29   void WriteToParcel(tizen_base::Parcel* parcel) const override;
30   void ReadFromParcel(tizen_base::Parcel* parcel) override;
31
32  private:
33   void WriteIcon(tizen_base::Parcel* parcel, GList* icon) const;
34   void WriteLabel(tizen_base::Parcel* parcel, GList* label) const;
35   void WriteAuthor(tizen_base::Parcel* parcel, GList* author) const;
36   void WriteDescription(tizen_base::Parcel* parcel, GList* description) const;
37   void WriteLicense(tizen_base::Parcel* parcel, GList* license) const;
38   void WritePrivileges(tizen_base::Parcel* parcel, GList* privileges) const;
39   void WriteAppdefinedPrivileges(tizen_base::Parcel* parcel, GList* appdefined_privileges) const;
40   void WriteProvidesAppdefinedPrivileges(tizen_base::Parcel* parcel, GList* provides_appdefined_privileges) const;
41   void WriteApplication(tizen_base::Parcel* parcel, GList* application) const;
42   void WriteCompatibility(tizen_base::Parcel* parcel, GList* compatibility) const;
43   void WriteDeviceprofile(tizen_base::Parcel* parcel, GList* deviceprofile) const;
44   void WriteDependencies(tizen_base::Parcel* parcel, GList* dependencies) const;
45   void WritePlugin(tizen_base::Parcel* parcel, GList* plugin) const;
46   void WritePackage(tizen_base::Parcel* parcel, package_x *package) const;
47   void ReadIcon(tizen_base::Parcel* parcel, GList** list);
48   void ReadLabel(tizen_base::Parcel* parcel, GList** list);
49   void ReadAuthor(tizen_base::Parcel* parcel, GList** list);
50   void ReadDescription(tizen_base::Parcel* parcel, GList** list);
51   void ReadLicense(tizen_base::Parcel* parcel, GList** list);
52   void ReadPrivileges(tizen_base::Parcel* parcel, GList** list);
53   void ReadAppdefinedPrivileges(tizen_base::Parcel* parcel, GList** list);
54   void ReadProvidesAppdefinedPrivileges(tizen_base::Parcel* parcel, GList** list);
55   void ReadApplication(tizen_base::Parcel* parcel, GList** list);
56   void ReadCompatibility(tizen_base::Parcel* parcel, GList** list);
57   void ReadDeviceprofile(tizen_base::Parcel* parcel, GList** list);
58   void ReadDependencies(tizen_base::Parcel* parcel, GList** list);
59   void ReadPlugin(tizen_base::Parcel* parcel, GList** list);
60   package_x *ReadPackage(tizen_base::Parcel* parcel);
61
62   std::vector<package_x *> pkg_list_;
63   PkgWriteType write_type_;
64   bool auto_release_;
65 };
66
67 }  // namespace parcel
68 }  // namespace pkgmgr_common
69
70 #endif  // PKGINFO_PARCELABLE_HH_