Chinaunix首页 | 论坛 | 博客
  • 博客访问: 191739
  • 博文数量: 28
  • 博客积分: 1490
  • 博客等级: 上尉
  • 技术积分: 310
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-17 10:01
文章分类
文章存档

2012年(3)

2011年(2)

2008年(2)

2007年(7)

2006年(14)

我的朋友

分类: LINUX

2006-10-23 09:37:00

正在写 linux/gtk 的一项目的 undo/redo 的实现。

目前的思路是这样的:

1. 设置两个stack, undo_stack 与 redo_stack。栈里面只保存 undo 和 redo 的操作所需的参数。

2. 在每一个操作中,如添加实体、删除实体。。。时必须将相关的参数入 undo_stack, 以备 undo 时用,

3. 在 undo_stack 参数弹出时,将弹出的参数转换成 redo 的对应参数压入 redo_stack 以备 redo 使

用。也就是不论是 undo_stack 还是 redo_stack 的参数出栈时,他们都应该做相应的转换压入另一个栈。

4. 这里面的一个关键问题是必须修改与操作相关的其他实体的联系,因为这些实体直接的联系通常都是用指针来

实现的。而如果删除里一个实体后,再 undo 来生成他,该实体的指针必然发生更改。所以,这时如果其他的实

体有指向他的指针,也要修改该指针的值。

5. 为了解决实体指针变化的问题,就需要一个不变的 ID 值来索引该实体,由这个 ID 来定位指针。
阅读(1719) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~