wut  v1.7.0
Wii U Toolchain
IUpdatePackageAccessorDetails.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <nn/result.h>
4 #include <wut.h>
5 
6 #ifdef __cplusplus
7 
8 namespace nn::sl {
9  class Condition;
10  namespace details {
11  class IUpdatePackageAccessorBase;
13 
16 
18  IUpdatePackageAccessorBase *instance; // normally this is padding
19  uint32_t info;
20  WUT_PADDING_BYTES(4);
21  uint32_t destructor;
22  WUT_PADDING_BYTES(4);
24  WUT_PADDING_BYTES(4);
26  WUT_PADDING_BYTES(4);
27  };
28  WUT_CHECK_SIZE(IUpdatePackageAccessorInternalVTable, 0x24);
29  WUT_CHECK_OFFSET(IUpdatePackageAccessorInternalVTable, 0x14, PackageExistsFn);
30  WUT_CHECK_OFFSET(IUpdatePackageAccessorInternalVTable, 0x1C, IsUpdatePackageDownloadedFn);
31 
32  typedef struct WUT_PACKED IUpdatePackageAccessorInternal {
35  WUT_CHECK_SIZE(IUpdatePackageAccessorInternal, 0x04);
36  WUT_CHECK_OFFSET(IUpdatePackageAccessorInternal, 0x00, vtable);
37 
39 
41  friend class nn::sl::Condition;
42 
43  public:
45  virtual ~IUpdatePackageAccessorBase() = default;
46 
47  virtual bool PackageExists() const = 0;
48 
49  virtual bool IsUpdatePackageDownloaded() const = 0;
50 
51  private:
52  virtual details::IUpdatePackageAccessorInternal *GetInternal() = 0;
53  };
54 
56  public:
58  }
59  bool PackageExists() const override {
60  if (!mInstancePtr) {
61  return false;
62  }
63  return mInstancePtr->vtable->PackageExistsFn(mInstancePtr);
64  }
65 
66  bool IsUpdatePackageDownloaded() const override {
67  if (!mInstancePtr) {
68  return false;
69  }
70  return mInstancePtr->vtable->IsUpdatePackageDownloadedFn(mInstancePtr);
71  }
72 
74  return mInstancePtr;
75  }
76 
77  private:
79  };
80  } // namespace details
81 } // namespace nn::sl
82 
83 #endif
virtual bool IsUpdatePackageDownloaded() const =0
details::IUpdatePackageAccessorInternal * GetInternal() override
UpdatePackageAccessorFromPtr(details::IUpdatePackageAccessorInternal *ptr)
bool(* IUpdatePackageAccessor_PackageExistsFn)(IUpdatePackageAccessorInternal *)
bool(* IUpdatePackageAccessor_IsUpdatePackageDownloadedFn)(IUpdatePackageAccessorInternal *)
IUpdatePackageAccessorInternal * GetDefaultUpdatePackageAccessor__Q2_2nn2slFv()
IUpdatePackageAccessor_IsUpdatePackageDownloadedFn IsUpdatePackageDownloadedFn
struct nn::sl::details::IUpdatePackageAccessorInternal IUpdatePackageAccessorInternal