[BehaviourElement::] Behaviour Element. To write the Behaviour element (Bh) in the index. @ This simply itemises kinds of action, and what defines them. = void BehaviourElement::render(OUTPUT_STREAM, localisation_dictionary *LD) { inter_tree *I = InterpretIndex::get_tree(); tree_inventory *inv = Synoptic::inv(I); int num_naps = TreeLists::len(inv->named_action_pattern_nodes); if (num_naps == 0) { HTML_OPEN("p"); WRITE("No names for kinds of action have yet been defined."); HTML_CLOSE("p"); } else { TreeLists::sort(inv->named_action_pattern_nodes, Synoptic::module_order); for (int i=0; inamed_action_pattern_nodes); i++) { inter_package *pack = Inter::Package::defined_by_frame(inv->named_action_pattern_nodes->list[i].node); text_stream *name = Metadata::read_optional_textual(pack, I"^name"); int at = (int) Metadata::read_optional_numeric(pack, I"^at"); HTML_OPEN("p"); WRITE("%S", name); IndexUtilities::link(OUT, at); HTML_TAG("br"); WRITE("  defined as any of the following acts:\n"); inter_tree_node *D = Inter::Packages::definition(pack); LOOP_THROUGH_INTER_CHILDREN(C, D) { if (C->W.data[ID_IFLD] == PACKAGE_IST) { inter_package *entry = Inter::Package::defined_by_frame(C); if (Inter::Packages::type(entry) == PackageTypes::get(I, I"_named_action_pattern_entry")) { text_stream *text = Metadata::read_optional_textual(entry, I"^text"); HTML_TAG("br"); WRITE("    %S", text); int at = (int) Metadata::read_optional_numeric(entry, I"^at"); IndexUtilities::link(OUT, at); } } } HTML_CLOSE("p"); } } }