yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
undo_action.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_CORE_UNDO_ACTION_H_
2#define YAZE_APP_EDITOR_CORE_UNDO_ACTION_H_
3
4#include <cstddef>
5#include <string>
6
7#include "absl/status/status.h"
8
9namespace yaze {
10namespace editor {
11
21 public:
22 virtual ~UndoAction() = default;
23
24 virtual absl::Status Undo() = 0;
25 virtual absl::Status Redo() = 0;
26
28 virtual std::string Description() const = 0;
29
31 virtual size_t MemoryUsage() const { return 0; }
32
35 virtual bool CanMergeWith(const UndoAction& /*prev*/) const { return false; }
36
39 virtual void MergeWith(UndoAction& /*prev*/) {}
40};
41
42} // namespace editor
43} // namespace yaze
44
45#endif // YAZE_APP_EDITOR_CORE_UNDO_ACTION_H_
Abstract base for all undoable actions (Command pattern)
Definition undo_action.h:20
virtual absl::Status Redo()=0
virtual absl::Status Undo()=0
virtual void MergeWith(UndoAction &)
Definition undo_action.h:39
virtual bool CanMergeWith(const UndoAction &) const
Definition undo_action.h:35
virtual size_t MemoryUsage() const
Approximate memory footprint for budget enforcement.
Definition undo_action.h:31
virtual std::string Description() const =0
Human-readable description (e.g., "Paint 12 tiles on map 5")
virtual ~UndoAction()=default