wut/include/nn/sl/KillerNotificationSelector.h
GaryOderNichts 2c98cc91aa
Some checks failed
C/C++ CI / ubuntu-latest (push) Has been cancelled
Run clang-format
`find . -regex '.*\.\(cpp\|hpp\|cu\|cuh\|c\|h\)' -exec clang-format -style=file -i {} \;`
2025-06-05 11:06:04 +01:00

193 lines
8.8 KiB
C++

#pragma once
#include <wut.h>
#include <nn/result.h>
#include <nn/sl/IAccountInfoAccessor.h>
#include <nn/sl/IKillerNotificationAccessor.h>
#include <nn/sl/ILaunchedTitleListAccessor.h>
#include <nn/sl/ISerializer.h>
#include <nn/sl/ISettingAccessor.h>
#include <nn/sl/ITimeAccessor.h>
#include <nn/sl/KillerNotification.h>
#include <nn/sl/KillerNotificationTransferRecordManager.h>
#include <nn/sl/TitleListCache.h>
#include <nn/sl/sl_cpp.h>
#ifdef __cplusplus
namespace nn::sl
{
namespace details
{
typedef struct WUT_PACKED KillerNotificationSelectorInternal
{
ILaunchedTitleListAccessorInternal *launchedTitleListAccessor;
IKillerNotificationAccessorInternal *killerNotificationAccessor;
ITitleListCacheInternal *titleListCache;
ISerializerInternal *killerNotificationSerializer;
ISettingAccessorInternal *settingsAccessor;
IAccountInfoAccessorInternal *accountInfoAccessor;
ITimeAccessorInternal *timeAccessor;
IKillerNotificationTransferRecordManagerInternal *killerNotificationTransferRecordManager;
void *vtable;
} KillerNotificationSelectorInternal;
WUT_CHECK_SIZE(KillerNotificationSelectorInternal, 0x24);
WUT_CHECK_OFFSET(KillerNotificationSelectorInternal, 0x00, launchedTitleListAccessor);
WUT_CHECK_OFFSET(KillerNotificationSelectorInternal, 0x04, killerNotificationAccessor);
WUT_CHECK_OFFSET(KillerNotificationSelectorInternal, 0x08, titleListCache);
WUT_CHECK_OFFSET(KillerNotificationSelectorInternal, 0x0C, killerNotificationSerializer);
WUT_CHECK_OFFSET(KillerNotificationSelectorInternal, 0x10, settingsAccessor);
WUT_CHECK_OFFSET(KillerNotificationSelectorInternal, 0x14, accountInfoAccessor);
WUT_CHECK_OFFSET(KillerNotificationSelectorInternal, 0x18, timeAccessor);
WUT_CHECK_OFFSET(KillerNotificationSelectorInternal, 0x1C, killerNotificationTransferRecordManager);
WUT_CHECK_OFFSET(KillerNotificationSelectorInternal, 0x20, vtable);
extern "C" KillerNotificationSelectorInternal *
__ct__Q3_2nn2sl26KillerNotificationSelectorFv(KillerNotificationSelectorInternal *);
extern "C" void
__dt__Q3_2nn2sl26KillerNotificationSelectorFv(KillerNotificationSelectorInternal *, int);
extern "C" nn::Result
Select__Q3_2nn2sl26KillerNotificationSelectorFPQ3_2nn2sl18KillerNotificationPQ3_2nn2sl9TitleInfoPb(KillerNotificationSelectorInternal *, KillerNotification *, TitleInfo *, bool *);
extern "C" void
Initialize__Q3_2nn2sl26KillerNotificationSelectorFRQ3_2nn2sl26ILaunchedTitleListAccessorRQ3_2nn2sl27IKillerNotificationAccessorRQ3_2nn2sl14TitleListCacheRQ3_2nn2sl49ISerializer__tm__30_Q3_2nn2sl18KillerNotificationRQ3_2nn2sl16ISettingAccessorRQ3_2nn2sl20IAccountInfoAccessorRQ3_2nn2sl13ITimeAccessorRQ3_2nn2sl40IKillerNotificationTransferRecordManager(
KillerNotificationSelectorInternal *,
ILaunchedTitleListAccessorInternal *,
IKillerNotificationAccessorInternal *,
ITitleListCacheInternal *,
ISerializerInternal *,
ISettingAccessorInternal *,
IAccountInfoAccessorInternal *,
ITimeAccessorInternal *,
IKillerNotificationTransferRecordManagerInternal *);
} // namespace details
class KillerNotificationSelector
{
public:
KillerNotificationSelector() :
mLaunchedTitleListAccessor(nullptr),
mKillerNotificationAccessor(nullptr),
mTitleListCache(nullptr),
mKillerNotificationSerializer(nullptr),
mSettingAccessor(nullptr),
mAccountInfoAccessor(nullptr),
mTimeAccessor(nullptr),
mKillerNotificationTransferRecordManager(nullptr)
{
if (__ct__Q3_2nn2sl26KillerNotificationSelectorFv(&mInstance) != nullptr) {
mLaunchedTitleListAccessor = details::LaunchedTitleListAccessorFromPtr(mInstance.launchedTitleListAccessor);
mKillerNotificationAccessor = details::KillerNotificationAccessorFromPtr(mInstance.killerNotificationAccessor);
mTitleListCache = TitleListCacheFromPtr(mInstance.titleListCache);
mKillerNotificationSerializer = details::SerializerFromPtr<KillerNotification>(mInstance.killerNotificationSerializer);
mSettingAccessor = details::SettingAccessorFromPtr(mInstance.settingsAccessor);
mAccountInfoAccessor = details::AccountInfoAccessorFromPtr(mInstance.accountInfoAccessor);
mTimeAccessor = details::TimeAccessorFromPtr(mInstance.timeAccessor);
mKillerNotificationTransferRecordManager = details::KillerNotificationTransferRecordManagerFromPtr(mInstance.killerNotificationTransferRecordManager);
}
}
~KillerNotificationSelector()
{
__dt__Q3_2nn2sl26KillerNotificationSelectorFv(&mInstance, 2);
}
details::ILaunchedTitleListAccessorBase &
GetLaunchedTitleListAccessor()
{
return mLaunchedTitleListAccessor;
}
details::IKillerNotificationAccessorBase &
GetKillerNotificationAccessor()
{
return mKillerNotificationAccessor;
}
details::ITitleListCacheBase &
GetTitleListCache()
{
return mTitleListCache;
}
details::ISerializerBase<KillerNotification> &
GetKillerNotificationSerializer()
{
return mKillerNotificationSerializer;
}
details::ISettingAccessorBase &
GetSettingAccessor()
{
return mSettingAccessor;
}
details::IAccountInfoAccessorBase &
GetAccountInfoAccessor()
{
return mAccountInfoAccessor;
}
details::ITimeAccessorBase &
GetTimeAccessor()
{
return mTimeAccessor;
}
details::IKillerNotificationTransferRecordManagerBase &
GetKillerNotificationTransferRecordManager()
{
return mKillerNotificationTransferRecordManager;
}
nn::Result
Select(KillerNotification *outKillerNotification, TitleInfo *outKillerNotificationTitle, bool *u1)
{
return Select__Q3_2nn2sl26KillerNotificationSelectorFPQ3_2nn2sl18KillerNotificationPQ3_2nn2sl9TitleInfoPb(&mInstance, outKillerNotification, outKillerNotificationTitle, u1);
}
void
Initialize(details::ILaunchedTitleListAccessorBase &launchedTitleListAccessor,
details::IKillerNotificationAccessorBase &killerNotificationAccessor,
details::ITitleListCacheBase &titleListCache,
details::ISerializerBase<KillerNotification> &killerNotificationSerializer,
details::ISettingAccessorBase &settingAccessor,
details::IAccountInfoAccessorBase &accountInfoAccessor,
details::ITimeAccessorBase &timeAccessor,
details::IKillerNotificationTransferRecordManagerBase &killerNotificationTransferRecordManager)
{
Initialize__Q3_2nn2sl26KillerNotificationSelectorFRQ3_2nn2sl26ILaunchedTitleListAccessorRQ3_2nn2sl27IKillerNotificationAccessorRQ3_2nn2sl14TitleListCacheRQ3_2nn2sl49ISerializer__tm__30_Q3_2nn2sl18KillerNotificationRQ3_2nn2sl16ISettingAccessorRQ3_2nn2sl20IAccountInfoAccessorRQ3_2nn2sl13ITimeAccessorRQ3_2nn2sl40IKillerNotificationTransferRecordManager(
&mInstance,
launchedTitleListAccessor.GetInternal(),
killerNotificationAccessor.GetInternal(),
titleListCache.GetInternal(),
killerNotificationSerializer.GetInternal(),
settingAccessor.GetInternal(),
accountInfoAccessor.GetInternal(),
timeAccessor.GetInternal(),
killerNotificationTransferRecordManager.GetInternal());
mLaunchedTitleListAccessor = details::LaunchedTitleListAccessorFromPtr(launchedTitleListAccessor.GetInternal());
mKillerNotificationAccessor = details::KillerNotificationAccessorFromPtr(killerNotificationAccessor.GetInternal());
mTitleListCache = TitleListCacheFromPtr(titleListCache.GetInternal());
mKillerNotificationSerializer = details::SerializerFromPtr<KillerNotification>(killerNotificationSerializer.GetInternal());
mSettingAccessor = details::SettingAccessorFromPtr(settingAccessor.GetInternal());
mAccountInfoAccessor = details::AccountInfoAccessorFromPtr(accountInfoAccessor.GetInternal());
mTimeAccessor = details::TimeAccessorFromPtr(timeAccessor.GetInternal());
mKillerNotificationTransferRecordManager = details::KillerNotificationTransferRecordManagerFromPtr(killerNotificationTransferRecordManager.GetInternal());
}
private:
details::KillerNotificationSelectorInternal mInstance = {};
details::LaunchedTitleListAccessorFromPtr mLaunchedTitleListAccessor;
details::KillerNotificationAccessorFromPtr mKillerNotificationAccessor;
TitleListCacheFromPtr mTitleListCache;
details::SerializerFromPtr<KillerNotification> mKillerNotificationSerializer;
details::SettingAccessorFromPtr mSettingAccessor;
details::AccountInfoAccessorFromPtr mAccountInfoAccessor;
details::TimeAccessorFromPtr mTimeAccessor;
details::KillerNotificationTransferRecordManagerFromPtr mKillerNotificationTransferRecordManager;
};
} // namespace nn::sl
#endif