1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-03 07:24:58 +03:00
inform7/inter/codegen-module/Chapter 6/Grouped Element.w

29 lines
1.1 KiB
OpenEdge ABL
Raw Normal View History

2021-06-20 15:59:38 +03:00
[GroupedElement::] Grouped Element.
To write the Grouped actions element (A1) in the index.
@ =
void GroupedElement::render(OUTPUT_STREAM) {
inter_tree *I = Index::get_tree();
tree_inventory *inv = Synoptic::inv(I);
TreeLists::sort(inv->action_nodes, GroupedElement::grouped_order);
for (int i=0; i<TreeLists::len(inv->action_nodes); i++) {
inter_package *an_pack = Inter::Package::defined_by_frame(inv->action_nodes->list[i].node);
WRITE("<p>%S</p>", Metadata::read_optional_textual(an_pack, I"^name"));
}
}
int GroupedElement::grouped_order(const void *ent1, const void *ent2) {
itl_entry *E1 = (itl_entry *) ent1;
itl_entry *E2 = (itl_entry *) ent2;
if (E1 == E2) return 0;
inter_tree_node *P1 = E1->node;
inter_tree_node *P2 = E2->node;
inter_package *an1_pack = Inter::Package::defined_by_frame(P1);
inter_package *an2_pack = Inter::Package::defined_by_frame(P2);
text_stream *an1_name = Metadata::read_optional_textual(an1_pack, I"^name");
text_stream *an2_name = Metadata::read_optional_textual(an2_pack, I"^name");
return Str::cmp(an1_name, an2_name);
}