wut v1.9.1
Wii U Toolchain
Loading...
Searching...
No Matches
DataCreator.h
Go to the documentation of this file.
1#pragma once
2
3#include <wut.h>
4#include <nn/result.h>
11#include <nn/sl/sl_cpp.h>
12
13#ifdef __cplusplus
14
15namespace nn ::sl
16{
17namespace details
18{
19typedef struct WUT_PACKED DataCreatorInternal
20{
21 IIconInfoAccessorInternal *iconInfoAccessor;
22 IAccountInfoAccessorInternal *accountInfoAccessor;
23 ISettingAccessorInternal *settingInfoAccessor;
24 ITitleIconCacheInternal *titleIconCache;
25 void *vtable;
26} DataCreatorInternal;
27WUT_CHECK_SIZE(DataCreatorInternal, 0x14);
28WUT_CHECK_OFFSET(DataCreatorInternal, 0x00, iconInfoAccessor);
29WUT_CHECK_OFFSET(DataCreatorInternal, 0x04, accountInfoAccessor);
30WUT_CHECK_OFFSET(DataCreatorInternal, 0x08, settingInfoAccessor);
31WUT_CHECK_OFFSET(DataCreatorInternal, 0x0c, titleIconCache);
32WUT_CHECK_OFFSET(DataCreatorInternal, 0x10, vtable);
33
34extern "C" DataCreatorInternal *
36extern "C" nn::Result
39 TransferableInfo *,
40 const TitleInfo *,
41 int,
42 const KillerNotification &,
43 const TitleInfo &,
44 LaunchInfoDatabase &);
45extern "C" nn::Result
48 IIconInfoAccessorInternal *,
49 IAccountInfoAccessorInternal *,
50 ISettingAccessorInternal *,
51 ITitleIconCacheInternal *);
52} // namespace details
53
54
56{
57public:
59 mIconInfoAccessor(nullptr),
60 mAccountInfoAccessor(nullptr),
61 mSettingAccessor(nullptr),
62 mTitleIconCache(nullptr)
63 {
64 if (__ct__Q3_2nn2sl11DataCreatorFv(&mInstance) != nullptr) {
65 mIconInfoAccessor = details::IconInfoAccessorFromPtr(mInstance.iconInfoAccessor);
66 mAccountInfoAccessor = details::AccountInfoAccessorFromPtr(mInstance.accountInfoAccessor);
67 mSettingAccessor = details::SettingAccessorFromPtr(mInstance.settingInfoAccessor);
68 mTitleIconCache = details::TitleIconCacheFromPtr(mInstance.titleIconCache);
69 }
70 }
71
72 [[nodiscard]] details::IIconInfoAccessorBase &
74 {
75 return mIconInfoAccessor;
76 }
77
78 [[nodiscard]] details::IAccountInfoAccessorBase &
80 {
81 return mAccountInfoAccessor;
82 }
83
84 [[nodiscard]] details::ISettingAccessorBase &
86 {
87 return mSettingAccessor;
88 }
89
90 [[nodiscard]] details::ITitleIconCacheBase &
92 {
93 return mTitleIconCache;
94 }
95
97 Create(TransferableInfo *outTransferableInfo,
98 const TitleInfo *quickstartTitleInfos,
99 int numQuickstartTitleInfos,
100 const KillerNotification &killerNotification,
101 const TitleInfo &killerNotificationTitleInfo,
102 LaunchInfoDatabase &launchInfoDatabase)
103 {
104 return details::Create__Q3_2nn2sl11DataCreatorFPQ3_2nn2sl16TransferableInfoPCQ3_2nn2sl9TitleInfoiRCQ3_2nn2sl18KillerNotificationRCQ3_2nn2sl9TitleInfoRQ3_2nn2sl18LaunchInfoDatabase(
105 &mInstance, outTransferableInfo, quickstartTitleInfos, numQuickstartTitleInfos, killerNotification, killerNotificationTitleInfo, launchInfoDatabase);
106 }
107
108 void
109 Initialize(details::IIconInfoAccessorBase &iconInfoAccessor, details::IAccountInfoAccessorBase &accountInfoAccessor, details::ISettingAccessorBase &settingAccessor, details::ITitleIconCacheBase &titleIconCache)
110 {
111 details::Initialize__Q3_2nn2sl11DataCreatorFRQ3_2nn2sl17IIconInfoAccessorRQ3_2nn2sl20IAccountInfoAccessorRQ3_2nn2sl16ISettingAccessorRQ3_2nn2sl15ITitleIconCache(
112 &mInstance, iconInfoAccessor.GetInternal(), accountInfoAccessor.GetInternal(), settingAccessor.GetInternal(), titleIconCache.GetInternal());
113 mIconInfoAccessor = details::IconInfoAccessorFromPtr(mInstance.iconInfoAccessor);
114 mAccountInfoAccessor = details::AccountInfoAccessorFromPtr(mInstance.accountInfoAccessor);
115 mSettingAccessor = details::SettingAccessorFromPtr(mInstance.settingInfoAccessor);
116 mTitleIconCache = details::TitleIconCacheFromPtr(mInstance.titleIconCache);
117 }
118
119 ~DataCreator() = default;
120
121private:
122 details::DataCreatorInternal mInstance = {};
123 details::IconInfoAccessorFromPtr mIconInfoAccessor;
124 details::AccountInfoAccessorFromPtr mAccountInfoAccessor;
125 details::SettingAccessorFromPtr mSettingAccessor;
126 details::TitleIconCacheFromPtr mTitleIconCache;
127};
128}; // namespace nn::sl
129
130#endif
details::IIconInfoAccessorBase & getIconInfoAccessor()
Definition DataCreator.h:73
nn::Result Create(TransferableInfo *outTransferableInfo, const TitleInfo *quickstartTitleInfos, int numQuickstartTitleInfos, const KillerNotification &killerNotification, const TitleInfo &killerNotificationTitleInfo, LaunchInfoDatabase &launchInfoDatabase)
Definition DataCreator.h:97
details::ITitleIconCacheBase & getTitleIconCache()
Definition DataCreator.h:91
details::ISettingAccessorBase & getSettingAccessor()
Definition DataCreator.h:85
details::IAccountInfoAccessorBase & getAccountInfoAccessor()
Definition DataCreator.h:79
void Initialize(details::IIconInfoAccessorBase &iconInfoAccessor, details::IAccountInfoAccessorBase &accountInfoAccessor, details::ISettingAccessorBase &settingAccessor, details::ITitleIconCacheBase &titleIconCache)
Result value type used by nn libraries.
Definition result.h:70
nn::Result Create__Q3_2nn2sl11DataCreatorFPQ3_2nn2sl16TransferableInfoPCQ3_2nn2sl9TitleInfoiRCQ3_2nn2sl18KillerNotificationRCQ3_2nn2sl9TitleInfoRQ3_2nn2sl18LaunchInfoDatabase(DataCreatorInternal *, TransferableInfo *, const TitleInfo *, int, const KillerNotification &, const TitleInfo &, LaunchInfoDatabase &)
nn::Result Initialize__Q3_2nn2sl11DataCreatorFRQ3_2nn2sl17IIconInfoAccessorRQ3_2nn2sl20IAccountInfoAccessorRQ3_2nn2sl16ISettingAccessorRQ3_2nn2sl15ITitleIconCache(DataCreatorInternal *, IIconInfoAccessorInternal *, IAccountInfoAccessorInternal *, ISettingAccessorInternal *, ITitleIconCacheInternal *)
ITitleIconCacheInternal * titleIconCache
Definition DataCreator.h:24
DataCreatorInternal * __ct__Q3_2nn2sl11DataCreatorFv(DataCreatorInternal *)
IAccountInfoAccessorInternal * accountInfoAccessor
Definition DataCreator.h:22
IIconInfoAccessorInternal * iconInfoAccessor
Definition DataCreator.h:21
ISettingAccessorInternal * settingInfoAccessor
Definition DataCreator.h:23
Definition ac_cpp.h:16