mirror of
https://github.com/devkitPro/wut.git
synced 2026-08-05 09:20:21 -05:00
59 lines
1.8 KiB
C++
59 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include <nn/result.h>
|
|
#include <nn/sl/details/IUpdatePackageAccessorDetails.h>
|
|
#include <wut.h>
|
|
|
|
#ifdef __cplusplus
|
|
|
|
namespace nn::sl {
|
|
class IUpdatePackageAccessor : public details::IUpdatePackageAccessorBase {
|
|
|
|
public:
|
|
IUpdatePackageAccessor() {
|
|
InitInternalVtable();
|
|
}
|
|
|
|
IUpdatePackageAccessor(IUpdatePackageAccessor &src) {
|
|
InitInternalVtable();
|
|
}
|
|
|
|
IUpdatePackageAccessor &operator=(const IUpdatePackageAccessor &other) {
|
|
InitInternalVtable();
|
|
return *this;
|
|
}
|
|
|
|
IUpdatePackageAccessor &operator=(IUpdatePackageAccessor &&src) noexcept {
|
|
InitInternalVtable();
|
|
return *this;
|
|
}
|
|
|
|
~IUpdatePackageAccessor() override = default;
|
|
|
|
private:
|
|
static bool PackageExistsWrapper(details::IUpdatePackageAccessorInternal *instance) {
|
|
return instance->vtable->instance->PackageExists();
|
|
}
|
|
static bool IsUpdatePackageDownloadedWrapper(details::IUpdatePackageAccessorInternal *instance) {
|
|
return instance->vtable->instance->IsUpdatePackageDownloaded();
|
|
}
|
|
|
|
details::IUpdatePackageAccessorInternal *GetInternal() override {
|
|
return &mInstance;
|
|
}
|
|
|
|
void InitInternalVtable() {
|
|
mVTable = {.instance = this,
|
|
.PackageExistsFn = PackageExistsWrapper,
|
|
.IsUpdatePackageDownloadedFn = IsUpdatePackageDownloadedWrapper};
|
|
mInstance.vtable = &mVTable;
|
|
}
|
|
|
|
details::IUpdatePackageAccessorInternal mInstance{};
|
|
details::IUpdatePackageAccessorInternalVTable mVTable{};
|
|
};
|
|
|
|
details::IUpdatePackageAccessorBase &GetDefaultUpdatePackageAccessor();
|
|
} // namespace nn::sl
|
|
|
|
#endif |