Compare commits
2 Commits
82f02896c9
...
6a52319156
Author | SHA1 | Date | |
---|---|---|---|
6a52319156 | |||
205f2a698c |
@ -60,7 +60,7 @@ struct Wrap: public WrapBase {
|
|||||||
class WrapPtr {
|
class WrapPtr {
|
||||||
private:
|
private:
|
||||||
WrapBase *m_wrapPtr{};
|
WrapBase *m_wrapPtr{};
|
||||||
ox::Array<char, sizeof(WrapBase) + sizeof(void*)> m_wrapData;
|
ox::Array<char, sizeof(Wrap<void*>)> m_wrapData;
|
||||||
public:
|
public:
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline WrapPtr &operator=(T *ptr) noexcept {
|
inline WrapPtr &operator=(T *ptr) noexcept {
|
||||||
@ -88,7 +88,7 @@ void setApplicationDataRaw(Context &ctx, WrapBase &applicationData) noexcept;
|
|||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void setApplicationData(Context &ctx, T *applicationData) noexcept {
|
void setApplicationData(Context &ctx, T *applicationData) noexcept {
|
||||||
Wrap<T> w(applicationData);
|
Wrap w(applicationData);
|
||||||
setApplicationDataRaw(ctx, w);
|
setApplicationDataRaw(ctx, w);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,12 +99,15 @@ template<typename T>
|
|||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
T *applicationData(Context &ctx) noexcept {
|
T *applicationData(Context &ctx) noexcept {
|
||||||
auto const raw = applicationDataRaw(ctx);
|
auto const raw = applicationDataRaw(ctx);
|
||||||
|
if (!raw) [[unlikely]] {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
#ifdef OX_BARE_METAL
|
#ifdef OX_BARE_METAL
|
||||||
auto const out = static_cast<Wrap<T>*>(raw);
|
auto const out = static_cast<Wrap<T>*>(raw);
|
||||||
#else
|
#else
|
||||||
auto const out = dynamic_cast<Wrap<T>*>(raw);
|
auto const out = dynamic_cast<Wrap<T>*>(raw);
|
||||||
#endif
|
#endif
|
||||||
oxAssert(out || !raw, "Cast failed - wrong type");
|
oxAssert(out, "Cast failed - wrong type");
|
||||||
return out->data;
|
return out->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user