23 MacroCommand(std::vector<std::unique_ptr<Command>>&& commands) : m_commands(std::move(commands)) { }
26 for (
auto it = m_commands.begin(); it != m_commands.end(); ++it) {
30 inline virtual void Undo()
override {
31 for (
auto it = m_commands.rbegin(); it != m_commands.rend(); ++it) {
36 std::vector<std::unique_ptr<Command>> m_commands;
44 m_executeStack.push(std::move(command));
48 void Execute(std::unique_ptr<Command> command);
53 std::stack<std::unique_ptr<Command>> m_executeStack;
54 std::stack<std::unique_ptr<Command>> m_undoStack;
55 std::stack<std::unique_ptr<Command>> m_redoStack;
void PushCommand(std::unique_ptr< Command > command)
void Execute(std::unique_ptr< Command > command)
virtual ~Command()=default
virtual bool IsUndoable() const
Class to combine multiples commands to execute then or undo them in batches.
virtual void Undo() override
virtual void Execute() override
MacroCommand(std::vector< std::unique_ptr< Command > > &&commands)