33#ifndef DVD_GFX_COMMAND_H_
34#define DVD_GFX_COMMAND_H_
47template <CommandType T>
59 template<
typename T>
requires std::is_base_of_v<CommandBase, T>
71template<CommandType EnumVal>
87#define DEFINE_COMMAND_BEGIN(Name, Enum) \
89template<> struct MapToDataType_t<Enum> { using type = Name; }; \
90struct Name final : public Command<Enum> { \
91PROPERTY_RW(bool, flag, false)
93#define DEFINE_COMMAND_END(Name) }
95#define DEFINE_COMMAND(Name, Enum) \
96DEFINE_COMMAND_BEGIN(Name, Enum);\
97DEFINE_COMMAND_END(Name)
void ToString(const CommandBase &cmd, const CommandType type, I32 &crtIndent, string &out)
typename MapToDataType_t< T >::type MapToDataType
Handle console commands that start with a forward slash.
CommandBase(const CommandBase &)=default
virtual void addToBuffer(CommandBuffer *buffer) const =0
virtual ~CommandBase()=default
PROPERTY_R(CommandType, type)
CommandBase & operator=(const CommandBase &)=default
CommandBase(CommandType type)
virtual void DeleteCmd(CommandBase *&cmd) const =0
static constexpr CommandType EType
virtual void DeleteCmd(CommandBase *&cmd) const final
virtual void addToBuffer(CommandBuffer *buffer) const final