Skip to content

Commit 3d8bdee

Browse files
authored
[1130] 迁移 tree_observer/patch/modify/traverse 至 moebius 并整合 glue (#3855)
1 parent fcfcd9e commit 3d8bdee

16 files changed

Lines changed: 710 additions & 627 deletions

devel/1130.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# 1130: 将 tree_observer / tree_patch / tree_modify / tree_traverse 迁移到 moebius
2+
3+
## 目标
4+
`src/Data/Tree` 下的 `tree_observer``tree_patch``tree_modify``tree_traverse`
5+
四对头文件/实现文件迁移到 `moebius/Data/Tree`,使其作为 moebius 库的一部分编译。
6+
7+
## 背景
8+
moebius 是 Mogan 的基础 C++ 库,已包含 `tree``modification``observer``patch``drd``scheme` 等核心抽象。
9+
上述模块均直接依赖这些基础类型,天然适合放入 moebius。
10+
迁移后上层代码仍通过同样的公开头文件使用这些接口。
11+
12+
## 完成记录
13+
1.`tree_observer.hpp`/`tree_observer.cpp``src/Data/Tree` 移动到 `moebius/Data/Tree`
14+
2.`tree_patch.hpp`/`tree_patch.cpp``src/Data/Tree` 移动到 `moebius/Data/Tree`
15+
3.`tree_modify.hpp`/`tree_modify.cpp``src/Data/Tree` 移动到 `moebius/Data/Tree`
16+
4.`tree_traverse.hpp`/`tree_traverse.cpp``src/Data/Tree` 移动到 `moebius/Data/Tree`
17+
5. 由于 `tree_observer.cpp`/`tree_modify.cpp` 包含 `observers.hpp`,而该头文件原位于 `src/Data/Observers`
18+
为保持 moebius 不自依赖 src,将 `observers.hpp` 移动到 `moebius/Kernel/Abstractions`
19+
其实现文件(`ip_observer.cpp``list_observer.cpp` 等)仍保留在 src,通过 libmoebius 的公开 include 路径引用新头文件。
20+
6.`tree_observer.cpp` 中替换对 `src/Texmacs/tm_debug.hpp` 的依赖:
21+
- `failed_error` 改为 `cerr`
22+
- 显式包含 `basic.hpp` 以获得 `TM_FAILED`
23+
7. 将本次迁移模块暴露给 Scheme 的 glue 函数从 `glue_tree.lua` / `glue_patch.lua`
24+
迁移到 `src/Scheme/L3/glue_moebius.lua`
25+
-`glue_tree.lua` 迁移:tree 修改/遍历相关函数(如 `tree-ip``tree-assign`
26+
`tree-var-insert``tree-remove``tree-split``tree-join``tree-assign-node`
27+
`tree-insert-node``tree-remove-node``tree-simplify``cpp-tree-correct-node`
28+
`cpp-tree-correct-downwards``cpp-tree-correct-upwards`、各类 `path-*``tree-search-sections`
29+
`herk-tree->utf8-tree``utf8-tree->herk-tree` 等)。
30+
-`glue_patch.lua` 迁移:`patch-apply``patch-inplace-apply`
31+
-`glue_moebius.lua` 中补充对应 include(`observers.hpp``tree_modify.hpp`
32+
`tree_observer.hpp``tree_patch.hpp``tree_traverse.hpp``tree_helper.hpp`
33+
`object_l3.hpp` 等)。
34+
8. 调整 glue helper 文件:
35+
-`tree_assign``tree_insert``tree_remove``tree_split``tree_join`
36+
`tree_assign_node``tree_insert_node``tree_remove_node``var_clean_apply`
37+
`var_apply``glue_tree_extra.hpp` / `glue_patch_extra.hpp` 移至
38+
`src/Scheme/L3/glue_moebius_extra.hpp`
39+
-`glue_tree_extra.hpp` / `glue_patch_extra.hpp` 中移除已迁移的 helper 及多余 include。
40+
9. 运行 `gf fmt` 格式化迁移后的 C++ 文件。
41+
10. 构建验证:
42+
- `xmake b libmoebius` 成功
43+
- `xmake b libmogan` 成功
44+
- `xmake b stem` 成功
45+
10. 测试验证:
46+
- `xmake test`:moebius 单元测试全部通过
47+
- `xmake run 0138`:headless 启动测试正常完成并自动退出,3 checks passed, 0 failed
48+
49+
## 涉及文件
50+
- `moebius/Data/Tree/tree_observer.hpp`(新增,从 src 迁移)
51+
- `moebius/Data/Tree/tree_observer.cpp`(新增,从 src 迁移)
52+
- `moebius/Data/Tree/tree_patch.hpp`(新增,从 src 迁移)
53+
- `moebius/Data/Tree/tree_patch.cpp`(新增,从 src 迁移)
54+
- `moebius/Data/Tree/tree_modify.hpp`(新增,从 src 迁移)
55+
- `moebius/Data/Tree/tree_modify.cpp`(新增,从 src 迁移)
56+
- `moebius/Data/Tree/tree_traverse.hpp`(新增,从 src 迁移)
57+
- `moebius/Data/Tree/tree_traverse.cpp`(新增,从 src 迁移)
58+
- `moebius/Kernel/Abstractions/observers.hpp`(新增,从 src 迁移)
59+
- `src/Data/Tree/tree_observer.hpp`(删除)
60+
- `src/Data/Tree/tree_observer.cpp`(删除)
61+
- `src/Data/Tree/tree_patch.hpp`(删除)
62+
- `src/Data/Tree/tree_patch.cpp`(删除)
63+
- `src/Data/Tree/tree_modify.hpp`(删除)
64+
- `src/Data/Tree/tree_modify.cpp`(删除)
65+
- `src/Data/Tree/tree_traverse.hpp`(删除)
66+
- `src/Data/Tree/tree_traverse.cpp`(删除)
67+
- `src/Data/Observers/observers.hpp`(删除)
68+
- `src/Scheme/L3/glue_moebius.lua`(新增 glue 函数及 include)
69+
- `src/Scheme/L4/glue_tree.lua`(移除已迁移的 glue 函数及 include)
70+
- `src/Scheme/L3/glue_patch.lua`(移除已迁移的 glue 函数及 include)
71+
- `src/Scheme/L3/glue_moebius_extra.hpp`(新增 helper 函数)
72+
- `src/Scheme/L4/glue_tree_extra.hpp`(移除已迁移 helper)
73+
- `src/Scheme/L3/glue_patch_extra.hpp`(移除已迁移 helper)
74+
- `devel/1130.md`
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#include "tree_observer.hpp"
22
#include "analyze.hpp"
3+
#include "basic.hpp"
34
#include "modification.hpp"
45
#include "observers.hpp"
5-
#include "tm_debug.hpp"
66
#include "tree_cursor.hpp"
77
#include "tree_helper.hpp"
88

@@ -473,8 +473,8 @@ raw_apply (tree& t, modification mod) {
473473
void
474474
apply (tree& ref, modification mod) {
475475
if (!is_applicable (ref, mod)) {
476-
failed_error << "mod= " << mod << "\n";
477-
failed_error << "ref= " << ref << "\n";
476+
cerr << "mod= " << mod << "\n";
477+
cerr << "ref= " << ref << "\n";
478478
TM_FAILED ("invalid modification");
479479
}
480480
path ip= obtain_ip (ref);

0 commit comments

Comments
 (0)