Add ParcelableFactory
[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 namespace pkgmgr_common {
11 namespace parcel {
12
13 #ifndef EXPORT_API
14 #define EXPORT_API __attribute__((visibility("default")))
15 #endif
16
17 class EXPORT_API PkgInfoParcelable : public AbstractParcelable {
18  public:
19   class EXPORT_API Factory : IFactory {
20    public:
21     std::unique_ptr<AbstractParcelable> CreateParcel();
22   };
23
24   PkgInfoParcelable();
25   PkgInfoParcelable(std::vector<package_x *>&& pkg_list);
26   ~PkgInfoParcelable();
27   const std::vector<package_x *>& GetPkgInfo();
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 };
64
65 }  // namespace parcel
66 }  // namespace pkgmgr_common
67
68 #endif  // PKGINFO_PARCELABLE_HH_