Skip to content

DarkLichCode/UndoRedoPool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UndoRedoPool

C++实现的撤销重做函数管理池

原理是设计模式中的命令模式,将撤销时要做的操作和重做时的操作存好,并用栈存储。分为撤销栈和重做栈,执行撤销时,从撤销栈中取栈顶,执行后放入重做栈中。执行重做时同样,从重做栈中取栈顶,执行后放入撤销栈中。如果有新的撤销重做对放入重做栈中,那么会清空重做栈。

管理池使用带锁的懒汉式单例模式

// 创建管理池
std::shared_ptr<UndoRedoPool> undoRedoPool = UndoRedoPool::getInstance();
// 创建新的撤销重做对象
UndoRedoClass undoRedoClass;

// 撤销和重做函数放到对象中,如果要使用引用参数,使 std::ref将参数包裹
undoRedoClass.MakeUndo(fun1, std::ref(x), 5);
undoRedoClass.MakeUndo(fun3, std::ref(x));
undoRedoClass.MakeRedo(fun2, std::ref(x), 5);

// 将对象存入管理池中,由管理池来执行撤销和重做
undoRedoPool->SaveUndoRedo(undoRedoClass);

// 执行撤销
undoRedoPool->Undo();
// 执行重做
undoRedoPool->Redo();

具体用法请看main函数,也可以用于类的成员函数

About

A library be used for managing undo and redo

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published