Skip to content

Commit

Permalink
nn_sl: Implement more functions
Browse files Browse the repository at this point in the history
  • Loading branch information
Maschell committed Apr 7, 2024
1 parent bffd719 commit 09a5d2d
Show file tree
Hide file tree
Showing 38 changed files with 1,220 additions and 195 deletions.
1 change: 1 addition & 0 deletions include/nn/sl.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include <nn/sl/IStream.h>
#include <nn/sl/ITimeAccessor.h>
#include <nn/sl/ITitleIconCache.h>
#include <nn/sl/ITitleListAccessor.h>
#include <nn/sl/ITransferrer.h>
#include <nn/sl/IUpdatePackageAccessor.h>
#include <nn/sl/IWhiteListAccessor.h>
Expand Down
58 changes: 58 additions & 0 deletions include/nn/sl/IDiscCachedTitleAccessor.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#pragma once

#include <memory>
#include <nn/result.h>
#include <nn/sl/details/IDiscCachedTitleAccessorDetails.h>
#include <nn/sl/sl_cpp.h>
#include <wut.h>

#ifdef __cplusplus

namespace nn::sl {

class DiscCachedTitleAccessor : public details::IDiscCachedTitleAccessorBase {

public:
DiscCachedTitleAccessor() {
InitInternalVtable();
}

DiscCachedTitleAccessor(DiscCachedTitleAccessor &src) {
InitInternalVtable();
}

DiscCachedTitleAccessor &operator=(const DiscCachedTitleAccessor &other) {
InitInternalVtable();
return *this;
}

DiscCachedTitleAccessor &operator=(DiscCachedTitleAccessor &&src) noexcept {
InitInternalVtable();
return *this;
}

~DiscCachedTitleAccessor() override = default;

private:
static nn::Result GetWrapper(details::IDiscCachedTitleAccessorInternal *instance, nn::sl::TitleInfo *outTitleInfos, int *outTitleInfosSize, int maxTitleInfos) {
return instance->vtable->instance->Get(outTitleInfos, outTitleInfosSize, maxTitleInfos);
}

details::IDiscCachedTitleAccessorInternal *GetInternal() override {
return &mInstance;
}

void InitInternalVtable() {
mVTable = {.instance = this,
.GetFn = &GetWrapper};
mInstance.vtable = &mVTable;
}

details::IDiscCachedTitleAccessorInternal mInstance{};
details::IDiscCachedTitleAccessorInternalVTable mVTable{};
};

details::IDiscCachedTitleAccessorBase &GetDefaultCachedTitleAccessor();
} // namespace nn::sl

#endif
58 changes: 58 additions & 0 deletions include/nn/sl/IInstalledTitleListAccessor.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#pragma once

#include <memory>
#include <nn/result.h>
#include <nn/sl/details/IInstalledTitleListAccessorDetails.h>
#include <nn/sl/sl_cpp.h>
#include <wut.h>

#ifdef __cplusplus

namespace nn::sl {
class IInstalledTitleListAccessor : public details::IInstalledTitleListAccessorBase {

public:
IInstalledTitleListAccessor() {
InitInternalVtable();
}


IInstalledTitleListAccessor(IInstalledTitleListAccessor &src) {
InitInternalVtable();
}

IInstalledTitleListAccessor &operator=(const IInstalledTitleListAccessor &other) {
InitInternalVtable();
return *this;
}

IInstalledTitleListAccessor &operator=(IInstalledTitleListAccessor &&src) noexcept {
InitInternalVtable();
return *this;
}

~IInstalledTitleListAccessor() override = default;

private:
static nn::Result GetWrapper(details::IInstalledTitleListAccessorInternal *instance, nn::sl::TitleInfo *outInstalledTitleInfos, int *outInstalledTitleInfosSize, int maxInstalledTitleInfos) {
return instance->vtable->instance->Get(outInstalledTitleInfos, outInstalledTitleInfosSize, maxInstalledTitleInfos);
}

details::IInstalledTitleListAccessorInternal *GetInternal() override {
return &mInstance;
}

void InitInternalVtable() {
mVTable = {.instance = this,
.GetFn = &GetWrapper};
mInstance.vtable = &mVTable;
}

details::IInstalledTitleListAccessorInternal mInstance{};
details::IInstalledTitleListAccessorInternalVTable mVTable{};
};

details::IInstalledTitleListAccessorBase &GetDefaultInstalledTitleListAccessor();
} // namespace nn::sl

#endif
59 changes: 59 additions & 0 deletions include/nn/sl/IMetaInfoAccessor.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#pragma once

#include <memory>
#include <nn/result.h>
#include <nn/sl/details/IMetaInfoAccessorDetails.h>
#include <nn/sl/sl_cpp.h>
#include <wut.h>

#ifdef __cplusplus

namespace nn::sl {

class MetaInfoAccessor : public details::IMetaInfoAccessorBase {

public:
MetaInfoAccessor() {
InitInternalVtable();
}


MetaInfoAccessor(MetaInfoAccessor &src) {
InitInternalVtable();
}

MetaInfoAccessor &operator=(const MetaInfoAccessor &other) {
InitInternalVtable();
return *this;
}

MetaInfoAccessor &operator=(MetaInfoAccessor &&src) noexcept {
InitInternalVtable();
return *this;
}

~MetaInfoAccessor() override = default;

private:
static nn::Result GetWrapper(details::IMetaInfoAccessorInternal *instance, nn::sl::TitleMetaInfo *outMetaInfo, const nn::sl::TitleInfo &titleInfo) {
return instance->vtable->instance->Get(outMetaInfo, titleInfo);
}

details::IMetaInfoAccessorInternal *GetInternal() override {
return &mInstance;
}

void InitInternalVtable() {
mVTable = {.instance = this,
.GetFn = &GetWrapper};
mInstance.vtable = &mVTable;
}

details::IMetaInfoAccessorInternal mInstance{};
details::IMetaInfoAccessorInternalVTable mVTable{};
};

details::IMetaInfoAccessorBase &GetDefaultMetaInfoAccessor();
} // namespace nn::sl

#endif
59 changes: 59 additions & 0 deletions include/nn/sl/ITitleListAccessor.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#pragma once

#include <memory>
#include <nn/result.h>
#include <nn/sl/details/ITitleListAccessorDetails.h>
#include <nn/sl/sl_cpp.h>
#include <wut.h>

#ifdef __cplusplus

namespace nn::sl {

class ITitleListAccessor : public details::ITitleListAccessorBase {

public:
ITitleListAccessor() {
InitInternalVtable();
}


ITitleListAccessor(ITitleListAccessor &src) {
InitInternalVtable();
}

ITitleListAccessor &operator=(const ITitleListAccessor &other) {
InitInternalVtable();
return *this;
}

ITitleListAccessor &operator=(ITitleListAccessor &&src) noexcept {
InitInternalVtable();
return *this;
}

~ITitleListAccessor() override = default;

private:
static nn::Result GetWrapper(details::ITitleListAccessorInternal *instance, nn::sl::TitleInfo *outTitleInfos, int *outTitleInfosSize, int maxTitleInfos) {
return instance->vtable->instance->Get(outTitleInfos, outTitleInfosSize, maxTitleInfos);
}

details::ITitleListAccessorInternal *GetInternal() override {
return &mInstance;
}

void InitInternalVtable() {
mVTable = {.instance = this,
.GetFn = &GetWrapper};
mInstance.vtable = &mVTable;
}

details::ITitleListAccessorInternal mInstance{};
details::ITitleListAccessorInternalVTable mVTable{};
};

details::ITitleListAccessorBase &GetDefaultTitleListAccessor();
} // namespace nn::sl

#endif
23 changes: 10 additions & 13 deletions include/nn/sl/KillerNotificationSelector.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,7 @@ namespace nn::sl {
mSettingAccessor(nullptr),
mAccountInfoAccessor(nullptr),
mTimeAccessor(nullptr),
mKillerNotificationTransferRecordManager(nullptr)

{
mKillerNotificationTransferRecordManager(nullptr) {
if (__ct__Q3_2nn2sl26KillerNotificationSelectorFv(&mInstance) != nullptr) {
mLaunchedTitleListAccessor = details::LaunchedTitleListAccessorFromPtr(mInstance.launchedTitleListAccessor);
mKillerNotificationAccessor = details::KillerNotificationAccessorFromPtr(mInstance.killerNotificationAccessor);
Expand All @@ -74,7 +72,7 @@ namespace nn::sl {
mSettingAccessor = details::SettingAccessorFromPtr(mInstance.settingsAccessor);
mAccountInfoAccessor = details::AccountInfoAccessorFromPtr(mInstance.accountInfoAccessor);
mTimeAccessor = details::TimeAccessorFromPtr(mInstance.timeAccessor);
mKillerNotificationTransferRecordManager = KillerNotificationTransferRecordManagerFromPtr(mInstance.killerNotificationTransferRecordManager);
mKillerNotificationTransferRecordManager = details::KillerNotificationTransferRecordManagerFromPtr(mInstance.killerNotificationTransferRecordManager);
}
}

Expand All @@ -90,7 +88,7 @@ namespace nn::sl {
return mKillerNotificationAccessor;
}

ITitleListCache &GetTitleListCache() {
details::ITitleListCacheBase &GetTitleListCache() {
return mTitleListCache;
}

Expand All @@ -110,23 +108,22 @@ namespace nn::sl {
return mTimeAccessor;
}

IKillerNotificationTransferRecordManager &GetKillerNotificationTransferRecordManager() {
details::IKillerNotificationTransferRecordManagerBase &GetKillerNotificationTransferRecordManager() {
return mKillerNotificationTransferRecordManager;
}

nn::Result
Select(KillerNotification *u1, TitleInfo *u2, bool *u3) {
return Select__Q3_2nn2sl26KillerNotificationSelectorFPQ3_2nn2sl18KillerNotificationPQ3_2nn2sl9TitleInfoPb(&mInstance, u1, u2, u3);
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,
ITitleListCache &titleListCache,
details::ITitleListCacheBase &titleListCache,
details::ISerializerBase<KillerNotification> &killerNotificationSerializer,
details::ISettingAccessorBase &settingAccessor,
details::IAccountInfoAccessorBase &accountInfoAccessor,
details::ITimeAccessorBase &timeAccessor,
IKillerNotificationTransferRecordManager &killerNotificationTransferRecordManager) {
details::IKillerNotificationTransferRecordManagerBase &killerNotificationTransferRecordManager) {
Initialize__Q3_2nn2sl26KillerNotificationSelectorFRQ3_2nn2sl26ILaunchedTitleListAccessorRQ3_2nn2sl27IKillerNotificationAccessorRQ3_2nn2sl14TitleListCacheRQ3_2nn2sl49ISerializer__tm__30_Q3_2nn2sl18KillerNotificationRQ3_2nn2sl16ISettingAccessorRQ3_2nn2sl20IAccountInfoAccessorRQ3_2nn2sl13ITimeAccessorRQ3_2nn2sl40IKillerNotificationTransferRecordManager(
&mInstance,
launchedTitleListAccessor.GetInternal(),
Expand All @@ -145,7 +142,7 @@ namespace nn::sl {
mSettingAccessor = details::SettingAccessorFromPtr(settingAccessor.GetInternal());
mAccountInfoAccessor = details::AccountInfoAccessorFromPtr(accountInfoAccessor.GetInternal());
mTimeAccessor = details::TimeAccessorFromPtr(timeAccessor.GetInternal());
mKillerNotificationTransferRecordManager = KillerNotificationTransferRecordManagerFromPtr(killerNotificationTransferRecordManager.GetInternal());
mKillerNotificationTransferRecordManager = details::KillerNotificationTransferRecordManagerFromPtr(killerNotificationTransferRecordManager.GetInternal());
}

private:
Expand All @@ -158,7 +155,7 @@ namespace nn::sl {
details::SettingAccessorFromPtr mSettingAccessor;
details::AccountInfoAccessorFromPtr mAccountInfoAccessor;
details::TimeAccessorFromPtr mTimeAccessor;
KillerNotificationTransferRecordManagerFromPtr mKillerNotificationTransferRecordManager;
details::KillerNotificationTransferRecordManagerFromPtr mKillerNotificationTransferRecordManager;
};
} // namespace nn::sl

Expand Down
Loading

0 comments on commit 09a5d2d

Please sign in to comment.