wut v1.8.0
Wii U Toolchain
Loading...
Searching...
No Matches
ISerializerDetails.h
Go to the documentation of this file.
1#pragma once
2
3#include <nn/result.h>
4#include <wut.h>
5
6#ifdef __cplusplus
7
8namespace nn::sl {
9 template<typename T>
11
12 class TitleIconCache;
13 class DataCreator;
14 class CacheManager;
15 class Condition;
17 class TitleListCache;
18
19 namespace details {
20 struct ISerializerInternal;
21
25
41 WUT_CHECK_OFFSET(ISerializerInternalVTable, 0x1C, DeserializeFn);
43
46 } ISerializerInternal;
47 WUT_CHECK_SIZE(ISerializerInternal, 0x04);
48 WUT_CHECK_OFFSET(ISerializerInternal, 0x00, vtable);
49
50 template<typename T>
53 friend class nn::sl::DataCreator;
55 friend class nn::sl::Condition;
58
59 public:
60 ISerializerBase() = default;
61
62 virtual ~ISerializerBase() = default;
63
64 virtual nn::Result Serialize(void *buffer, uint32_t size) const = 0;
65
66 virtual nn::Result Deserialize(void *buffer, uint32_t size) const = 0;
67
68 virtual nn::Result GetCount(uint32_t *outCount) const = 0;
69
70 private:
71 virtual details::ISerializerInternal *GetInternal() = 0;
72 };
73
74
75 template<typename T>
77 public:
78 explicit SerializerFromPtr(details::ISerializerInternal *ptr) : mInstancePtr(ptr) {
79 }
80
81 nn::Result Serialize(void *buffer, uint32_t size) const override {
82 if (!mInstancePtr) {
84 }
85 return mInstancePtr->vtable->SerializeFn(mInstancePtr, buffer, size);
86 }
87
88 nn::Result Deserialize(void *buffer, uint32_t size) const override {
89 if (!mInstancePtr) {
91 }
92 return mInstancePtr->vtable->DeserializeFn(mInstancePtr, buffer, size);
93 }
94
96 if (!mInstancePtr) {
98 }
99 return mInstancePtr->vtable->GetCountFn(mInstancePtr, outCount);
100 }
101
102 private:
103 details::ISerializerInternal *GetInternal() override {
104 return mInstancePtr;
105 }
106
107 details::ISerializerInternal *mInstancePtr;
108 };
109 } // namespace details
110
111} // namespace nn::sl
112
113#endif
Result value type used by nn libraries.
Definition result.h:68
@ LEVEL_FATAL
Definition result.h:73
@ RESULT_MODULE_NN_SL
Definition result.h:114
virtual nn::Result Serialize(void *buffer, uint32_t size) const =0
virtual nn::Result GetCount(uint32_t *outCount) const =0
virtual ~ISerializerBase()=default
virtual nn::Result Deserialize(void *buffer, uint32_t size) const =0
nn::Result Deserialize(void *buffer, uint32_t size) const override
nn::Result GetCount(uint32_t *outCount) const override
nn::Result Serialize(void *buffer, uint32_t size) const override
SerializerFromPtr(details::ISerializerInternal *ptr)
nn::Result(* ISerializer_SerializeFn)(ISerializerInternal *, void *, uint32_t)
nn::Result(* ISerializer_DeserializeFn)(ISerializerInternal *, void *, uint32_t)
nn::Result(* ISerializer_GetCountFn)(ISerializerInternal *, uint32_t *)
ISerializerInternalVTable * vtable