Add pointers support for virtual methods.
As introduced in godot for virtual methods. Custom structs are not yet supported.pull/625/head
parent
a44e9aa3f9
commit
80fdb9146f
|
@ -184,6 +184,47 @@ struct PtrToArg<const T *> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Pointers.
|
||||||
|
#define GDVIRTUAL_NATIVE_PTR(m_type) \
|
||||||
|
template <> \
|
||||||
|
struct PtrToArg<m_type *> { \
|
||||||
|
_FORCE_INLINE_ static m_type *convert(const void *p_ptr) { \
|
||||||
|
return (m_type *)(*(void **)p_ptr); \
|
||||||
|
} \
|
||||||
|
typedef m_type *EncodeT; \
|
||||||
|
_FORCE_INLINE_ static void encode(m_type *p_var, void *p_ptr) { \
|
||||||
|
*((void **)p_ptr) = p_var; \
|
||||||
|
} \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
template <> \
|
||||||
|
struct PtrToArg<const m_type *> { \
|
||||||
|
_FORCE_INLINE_ static const m_type *convert(const void *p_ptr) { \
|
||||||
|
return (const m_type *)(*(const void **)p_ptr); \
|
||||||
|
} \
|
||||||
|
typedef const m_type *EncodeT; \
|
||||||
|
_FORCE_INLINE_ static void encode(m_type *p_var, void *p_ptr) { \
|
||||||
|
*((void **)p_ptr) = p_var; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
GDVIRTUAL_NATIVE_PTR(bool);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(char);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(char16_t);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(char32_t);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(wchar_t);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(uint8_t);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(uint8_t *);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(int8_t);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(uint16_t);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(int16_t);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(uint32_t);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(int32_t);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(int64_t);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(uint64_t);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(float);
|
||||||
|
GDVIRTUAL_NATIVE_PTR(double);
|
||||||
|
|
||||||
} // namespace godot
|
} // namespace godot
|
||||||
|
|
||||||
#endif // ! GODOT_CPP_METHOD_PTRCALL_HPP
|
#endif // ! GODOT_CPP_METHOD_PTRCALL_HPP
|
||||||
|
|
Loading…
Reference in New Issue