1+ #pragma once
2+
3+ #include < nn/result.h>
4+ #include < nn/sl/IIconInfoAccessor.h>
5+ #include < nn/sl/ISettingAccessor.h>
6+ #include < nn/sl/ITitleIconCache.h>
7+ #include < nn/sl/KillerNotification.h>
8+ #include < nn/sl/LaunchInfoDatabase.h>
9+ #include < nn/sl/details/IAccountInfoAccessorDetails.h>
10+ #include < nn/sl/sl_cpp.h>
11+ #include < wut.h>
12+
13+ #ifdef __cplusplus
14+
15+ namespace nn ::sl {
16+ namespace details {
17+ typedef struct WUT_PACKED DataCreatorInternal {
18+ IIconInfoAccessorInternal *iconInfoAccessor;
19+ IAccountInfoAccessorInternal *accountInfoAccessor;
20+ ISettingAccessorInternal *settingInfoAccessor;
21+ ITitleIconCacheInternal *titleIconCache;
22+ void *vtable;
23+ } DataCreatorInternal;
24+ WUT_CHECK_SIZE (DataCreatorInternal, 0x14 );
25+ WUT_CHECK_OFFSET (DataCreatorInternal, 0x00 , iconInfoAccessor);
26+ WUT_CHECK_OFFSET (DataCreatorInternal, 0x04 , accountInfoAccessor);
27+ WUT_CHECK_OFFSET (DataCreatorInternal, 0x08 , settingInfoAccessor);
28+ WUT_CHECK_OFFSET (DataCreatorInternal, 0x0c , titleIconCache);
29+ WUT_CHECK_OFFSET (DataCreatorInternal, 0x10 , vtable);
30+
31+ extern " C" DataCreatorInternal *__ct__Q3_2nn2sl11DataCreatorFv (DataCreatorInternal *);
32+ extern " C" nn::Result Create__Q3_2nn2sl11DataCreatorFPQ3_2nn2sl16TransferableInfoPCQ3_2nn2sl9TitleInfoiRCQ3_2nn2sl18KillerNotificationRCQ3_2nn2sl9TitleInfoRQ3_2nn2sl18LaunchInfoDatabase (
33+ DataCreatorInternal *, TransferableInfo *, const TitleInfo *, int , const KillerNotification &, const TitleInfo &, LaunchInfoDatabase &);
34+ extern " C" nn::Result Initialize__Q3_2nn2sl11DataCreatorFRQ3_2nn2sl17IIconInfoAccessorRQ3_2nn2sl20IAccountInfoAccessorRQ3_2nn2sl16ISettingAccessorRQ3_2nn2sl15ITitleIconCache (
35+ DataCreatorInternal *, IIconInfoAccessorInternal *, IAccountInfoAccessorInternal *, ISettingAccessorInternal *, ITitleIconCacheInternal *);
36+ } // namespace details
37+
38+
39+ class DataCreator {
40+ public:
41+ DataCreator () : mIconInfoAccessor (nullptr ),
42+ mAccountInfoAccessor (nullptr ),
43+ mSettingAccessor(nullptr ),
44+ mTitleIconCache(nullptr ) {
45+ if (__ct__Q3_2nn2sl11DataCreatorFv (&mInstance ) != nullptr ) {
46+ mIconInfoAccessor = details::IconInfoAccessorFromPtr (mInstance .iconInfoAccessor );
47+ mAccountInfoAccessor = details::AccountInfoAccessorFromPtr (mInstance .accountInfoAccessor );
48+ mSettingAccessor = details::SettingAccessorFromPtr (mInstance .settingInfoAccessor );
49+ mTitleIconCache = details::TitleIconCacheFromPtr (mInstance .titleIconCache );
50+ }
51+ }
52+
53+ [[nodiscard]] details::IIconInfoAccessorBase &getIconInfoAccessor () {
54+ return mIconInfoAccessor ;
55+ }
56+
57+ [[nodiscard]] details::IAccountInfoAccessorBase &getAccountInfoAccessor () {
58+ return mAccountInfoAccessor ;
59+ }
60+
61+ [[nodiscard]] details::ISettingAccessorBase &getSettingAccessor () {
62+ return mSettingAccessor ;
63+ }
64+
65+ [[nodiscard]] details::ITitleIconCacheBase &getTitleIconCache () {
66+ return mTitleIconCache ;
67+ }
68+
69+ nn::Result Create (TransferableInfo *outTransferableInfo,
70+ const TitleInfo *quickstartTitleInfos,
71+ int numQuickstartTitleInfos,
72+ const KillerNotification &killerNotification,
73+ const TitleInfo &killerNotificationTitleInfo,
74+ LaunchInfoDatabase &launchInfoDatabase) {
75+ return details::Create__Q3_2nn2sl11DataCreatorFPQ3_2nn2sl16TransferableInfoPCQ3_2nn2sl9TitleInfoiRCQ3_2nn2sl18KillerNotificationRCQ3_2nn2sl9TitleInfoRQ3_2nn2sl18LaunchInfoDatabase (
76+ &mInstance , outTransferableInfo, quickstartTitleInfos, numQuickstartTitleInfos, killerNotification, killerNotificationTitleInfo, launchInfoDatabase);
77+ }
78+
79+ void Initialize (details::IIconInfoAccessorBase &iconInfoAccessor, details::IAccountInfoAccessorBase &accountInfoAccessor, details::ISettingAccessorBase &settingAccessor, details::ITitleIconCacheBase &titleIconCache) {
80+ details::Initialize__Q3_2nn2sl11DataCreatorFRQ3_2nn2sl17IIconInfoAccessorRQ3_2nn2sl20IAccountInfoAccessorRQ3_2nn2sl16ISettingAccessorRQ3_2nn2sl15ITitleIconCache (
81+ &mInstance , iconInfoAccessor.GetInternal (), accountInfoAccessor.GetInternal (), settingAccessor.GetInternal (), titleIconCache.GetInternal ());
82+ mIconInfoAccessor = details::IconInfoAccessorFromPtr (mInstance .iconInfoAccessor );
83+ mAccountInfoAccessor = details::AccountInfoAccessorFromPtr (mInstance .accountInfoAccessor );
84+ mSettingAccessor = details::SettingAccessorFromPtr (mInstance .settingInfoAccessor );
85+ mTitleIconCache = details::TitleIconCacheFromPtr (mInstance .titleIconCache );
86+ }
87+
88+ ~DataCreator () = default ;
89+
90+ private:
91+ details::DataCreatorInternal mInstance = {};
92+ details::IconInfoAccessorFromPtr mIconInfoAccessor ;
93+ details::AccountInfoAccessorFromPtr mAccountInfoAccessor ;
94+ details::SettingAccessorFromPtr mSettingAccessor ;
95+ details::TitleIconCacheFromPtr mTitleIconCache ;
96+ };
97+ }; // namespace nn::sl
98+
99+ #endif
0 commit comments