mirror of https://github.com/AxioDL/metaforce.git
44 lines
816 B
C++
44 lines
816 B
C++
|
#ifndef __URDE_CGUIFUNCPARM_HPP__
|
||
|
#define __URDE_CGUIFUNCPARM_HPP__
|
||
|
|
||
|
#include "RetroTypes.hpp"
|
||
|
|
||
|
namespace urde
|
||
|
{
|
||
|
|
||
|
class CGuiFuncParm
|
||
|
{
|
||
|
public:
|
||
|
enum class Type
|
||
|
{
|
||
|
Null = -1,
|
||
|
Int = 0,
|
||
|
Float = 1,
|
||
|
IntrusivePointer = 2
|
||
|
};
|
||
|
|
||
|
private:
|
||
|
Type x0_type = Type::Null;
|
||
|
union
|
||
|
{
|
||
|
u32 x4_int;
|
||
|
float x4_float;
|
||
|
void* x4_ptr = nullptr;
|
||
|
};
|
||
|
|
||
|
public:
|
||
|
CGuiFuncParm() = default;
|
||
|
CGuiFuncParm(int arg) : x0_type(Type::Int), x4_int(arg) {}
|
||
|
CGuiFuncParm(float arg) : x0_type(Type::Float), x4_float(arg) {}
|
||
|
CGuiFuncParm(void* arg) : x0_type(Type::IntrusivePointer), x4_ptr(arg) {}
|
||
|
~CGuiFuncParm()
|
||
|
{
|
||
|
if (x0_type == Type::IntrusivePointer)
|
||
|
delete static_cast<u8*>(x4_ptr);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
}
|
||
|
|
||
|
#endif // __URDE_CGUIFUNCPARM_HPP__
|