如何在 Eiffel 中 运行 游标树?
How can I run a cursor tree in Eiffel?
我需要一个游标树,我在 EiffelStudio 中找到了 CURSOR_TREE 和 RECURSIVE_CURSOR_TREE 类,但它们被推迟了,我不知道如何实现它们。是不是很奇怪?
一些 类 实现 CURSOR_TREE
的源代码可在 .../library/base/elks/structures/cursor_tree
中的安装中获得。不幸的是,类(因为它们已实现)与 void safety 不兼容。您可以尝试将以下 类 复制到您的项目并编译:
library/base/elks/structures/cursor_tree/compact_cursor_tree.e
library/base/elks/structures/cursor_tree/linked_cursor_tree.e
library/base/elks/structures/cursor_tree/two_way_cursor_tree.e
library/base/elks/structures/cursors/compact_tree_cursor.e
library/base/elks/structures/cursors/linked_cursor_tree_cursor.e
library/base/elks/structures/cursors/two_way_cursor_tree_cursor.e
这个过程会涉及到几个变化:
您的项目无效安全能力应设置为none
(项目应从头开始重新编译);
根据编译器的版本,您可能需要修复库 类 中的一些有效性错误(例如,从 redefine
子句中删除 put_right
) ;
必须提供功能 new_cursor
的实现,一个快速而肮脏的修复可能是一个虚拟存根:
new_cursor: ITERATION_CURSOR [G]
do
Result := (create {SPECIAL [G]}.make_empty (0)).new_cursor
end
之后你应该可以使用有效的 类 COMPACT_CURSOR_TREE
, LINKED_CURSOR_TREE
和 TWO_WAY_CURSOR_TREE
.
如果您打算在无效安全项目中使用 类,我建议与 Eiffel Software 合作,因为实现和接口需要进行大量更改才能使代码无效安全。
我需要一个游标树,我在 EiffelStudio 中找到了 CURSOR_TREE 和 RECURSIVE_CURSOR_TREE 类,但它们被推迟了,我不知道如何实现它们。是不是很奇怪?
一些 类 实现 CURSOR_TREE
的源代码可在 .../library/base/elks/structures/cursor_tree
中的安装中获得。不幸的是,类(因为它们已实现)与 void safety 不兼容。您可以尝试将以下 类 复制到您的项目并编译:
library/base/elks/structures/cursor_tree/compact_cursor_tree.e
library/base/elks/structures/cursor_tree/linked_cursor_tree.e
library/base/elks/structures/cursor_tree/two_way_cursor_tree.e
library/base/elks/structures/cursors/compact_tree_cursor.e
library/base/elks/structures/cursors/linked_cursor_tree_cursor.e
library/base/elks/structures/cursors/two_way_cursor_tree_cursor.e
这个过程会涉及到几个变化:
您的项目无效安全能力应设置为
none
(项目应从头开始重新编译);根据编译器的版本,您可能需要修复库 类 中的一些有效性错误(例如,从
redefine
子句中删除put_right
) ;必须提供功能
new_cursor
的实现,一个快速而肮脏的修复可能是一个虚拟存根:new_cursor: ITERATION_CURSOR [G] do Result := (create {SPECIAL [G]}.make_empty (0)).new_cursor end
之后你应该可以使用有效的 类 COMPACT_CURSOR_TREE
, LINKED_CURSOR_TREE
和 TWO_WAY_CURSOR_TREE
.
如果您打算在无效安全项目中使用 类,我建议与 Eiffel Software 合作,因为实现和接口需要进行大量更改才能使代码无效安全。