wut v1.9.1
Wii U Toolchain
Loading...
Searching...
No Matches
ITitleIconCache.h
Go to the documentation of this file.
1#pragma once
2
3#include <wut.h>
4#include <nn/result.h>
6#include <nn/sl/sl_cpp.h>
7
8#ifdef __cplusplus
9
10namespace nn::sl
11{
12
14{
15
16public:
18 {
19 InitInternalVtable();
20 }
21
23 {
24 InitInternalVtable();
25 }
26
29 {
30 InitInternalVtable();
31 return *this;
32 }
33
35 operator=(ITitleIconCache &&src) noexcept
36 {
37 InitInternalVtable();
38 return *this;
39 }
40
41 ~ITitleIconCache() override = default;
42
43private:
44 static nn::Result
45 LoadWrapper(details::ITitleIconCacheInternal *instance)
46 {
47 return instance->vtable->instance->Load();
48 }
49
50 static nn::Result
51 UpdateWrapper(details::ITitleIconCacheInternal *instance, TitleInfo *titleInfos, int num)
52 {
53 return instance->vtable->instance->Update(titleInfos, num);
54 }
55
56 static nn::Result
57 StoreWrapper(details::ITitleIconCacheInternal *instance)
58 {
59 return instance->vtable->instance->Store();
60 }
61
62 static void
63 GetWrapper(details::ITitleIconCacheInternal *instance, IconInfo *iconInfos, int num)
64 {
65 return instance->vtable->instance->Get(iconInfos, num);
66 }
67
68 details::ITitleIconCacheInternal *
69 GetInternal() override
70 {
71 return &mInstance;
72 }
73
74 void
75 InitInternalVtable()
76 {
77 mVTable = {.instance = this,
78 .LoadFn = &LoadWrapper,
79 .UpdateFn = &UpdateWrapper,
80 .StoreFn = &StoreWrapper,
81 .GetFn = &GetWrapper};
82 mInstance.vtable = &mVTable;
83 }
84
85 details::ITitleIconCacheInternal mInstance{};
86 details::ITitleIconCacheInternalVTable mVTable{};
87};
88
89details::ITitleIconCacheBase &
91} // namespace nn::sl
92
93#endif
Result value type used by nn libraries.
Definition result.h:70
ITitleIconCache(ITitleIconCache &src)
ITitleIconCache & operator=(ITitleIconCache &&src) noexcept
ITitleIconCache & operator=(const ITitleIconCache &other)
~ITitleIconCache() override=default
virtual nn::Result Update(nn::sl::TitleInfo *titleInfos, int num)=0
details::ITitleIconCacheBase & GetDefaultTitleIconCache()