diff --git a/README.md b/README.md
index cd7d8a0c1..6d491a051 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Inform 7
-v10.1.0-alpha.1+6T95 'Krypton' (3 January 2022)
+v10.1.0-alpha.1+6T96 'Krypton' (4 January 2022)
## About Inform 7
diff --git a/build.txt b/build.txt
index 237e1ea80..2ac815d5a 100644
--- a/build.txt
+++ b/build.txt
@@ -1,3 +1,3 @@
Prerelease: alpha.1
-Build Date: 3 January 2022
-Build Number: 6T95
+Build Date: 4 January 2022
+Build Number: 6T96
diff --git a/docs/BasicInformKit/S-dfn.html b/docs/BasicInformKit/S-dfn.html
index 25c4ce19c..3d4b75596 100644
--- a/docs/BasicInformKit/S-dfn.html
+++ b/docs/BasicInformKit/S-dfn.html
@@ -56,7 +56,7 @@ MathJax = {
Miscellaneous constant definitions, usually providing symbolic names for otherwise inscrutable numbers, which are used throughout the template layer.
-The parser for turning the text of the typed command into a proposed action by the player.
-
- Chapter 6: Optimisation Stages
+ Chapter 6: Optimisation
void Hierarchy::establish(void) {
SynopticHierarchy::establish(Emit::tree());
+ KitHierarchy::establish(Emit::tree());
H_BEGIN_DECLARATIONS
Establish locations for material created by the compiler8.1;
Establish locations for material expected to be added by linking8.2;
diff --git a/inform7/Figures/memory-diagnostics.txt b/inform7/Figures/memory-diagnostics.txt
index d06c36eec..3343b85a2 100644
--- a/inform7/Figures/memory-diagnostics.txt
+++ b/inform7/Figures/memory-diagnostics.txt
@@ -1,9 +1,9 @@
-Total memory consumption was 403231K = 394 MB
+Total memory consumption was 404027K = 395 MB
-61.3% was used for 2026336 objects, in 380039 frames in 309 x 800K = 247200K = 241 MB:
+61.3% was used for 2026237 objects, in 380039 frames in 310 x 800K = 248000K = 242 MB:
10.1% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
- 7.2% text_stream_array 5299 x 100 = 529900 objects, 29843968 bytes
+ 7.2% text_stream_array 5298 x 100 = 529800 objects, 29838336 bytes
4.7% linked_list 34785 objects, 19479600 bytes
4.1% inter_symbol_array 140 x 1024 = 143360 objects, 17207680 bytes
2.5% parse_node 129462 objects, 10356960 bytes
@@ -18,7 +18,7 @@ Total memory consumption was 403231K = 394 MB
0.4% package_request 21139 objects, 1860232 bytes
0.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
0.4% inter_symbols_table 26570 objects, 1700480 bytes
- 0.3% dictionary 33309 objects, 1598832 bytes
+ 0.3% dictionary 33310 objects, 1598880 bytes
0.3% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
0.3% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
0.3% dict_entry_array 423 x 100 = 42300 objects, 1367136 bytes
@@ -237,8 +237,8 @@ Total memory consumption was 403231K = 394 MB
38.6% was used for memory not allocated for objects:
- 20.2% text stream storage 83536636 bytes in 547918 claims
- 4.4% dictionary storage 18457600 bytes in 33309 claims
+ 20.1% text stream storage 83531016 bytes in 547826 claims
+ 4.4% dictionary storage 18458624 bytes in 33310 claims
---- sorting 736 bytes in 3 claims
1.7% source text 7200000 bytes in 3 claims
2.6% source text details 10800000 bytes in 2 claims
@@ -255,5 +255,5 @@ Total memory consumption was 403231K = 394 MB
---- code generation workspace for objects 1336 bytes in 4 claims
---- emitter array storage 161792 bytes in 2062 claims
-18.9% was overhead - 78312888 bytes = 76477K = 74 MB
+19.1% was overhead - 79137672 bytes = 77282K = 75 MB
diff --git a/inform7/Figures/timings-diagnostics.txt b/inform7/Figures/timings-diagnostics.txt
index 9ed626d20..a9431f5a7 100644
--- a/inform7/Figures/timings-diagnostics.txt
+++ b/inform7/Figures/timings-diagnostics.txt
@@ -1,11 +1,11 @@
100.0% in inform7 run
- 56.8% in compilation to Inter
- 41.1% in //Sequence::undertake_queued_tasks//
- 3.6% in //MajorNodes::pre_pass//
+ 57.1% in compilation to Inter
+ 41.5% in //Sequence::undertake_queued_tasks//
+ 3.5% in //MajorNodes::pre_pass//
2.6% in //MajorNodes::pass_1//
- 2.2% in //RTPhrasebook::compile_entries//
- 1.4% in //ImperativeDefinitions::assess_all//
- 1.1% in //RTKindConstructors::compile//
+ 2.1% in //RTPhrasebook::compile_entries//
+ 1.3% in //ImperativeDefinitions::assess_all//
+ 1.2% in //RTKindConstructors::compile//
0.4% in //MajorNodes::pass_2//
0.4% in //Sequence::undertake_queued_tasks//
0.4% in //World::stage_V//
@@ -16,11 +16,11 @@
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
2.0% not specifically accounted for
- 41.1% in running Inter pipeline
- 11.0% in step preparation
- 10.3% in inter step 6/14: make-synoptic-module
- 8.1% in inter step 5/14: load-binary-kits
- 7.0% in inter step 14/14: generate inform6 -> auto.inf
+ 40.8% in running Inter pipeline
+ 10.8% in step preparation
+ 10.2% in inter step 6/14: make-synoptic-module
+ 8.0% in inter step 5/14: load-binary-kits
+ 7.1% in inter step 14/14: generate inform6 -> auto.inf
1.5% in inter step 10/14: make-identifiers-unique
0.3% in inter step 13/14: eliminate-redundant-operations
0.3% in inter step 4/14: compile-splats
@@ -28,6 +28,6 @@
0.1% in inter step 11/14: reconcile-verbs
0.1% in inter step 12/14: eliminate-redundant-labels
0.1% in inter step 9/14: detect-indirect-calls
- 1.5% not specifically accounted for
+ 1.7% not specifically accounted for
1.7% in supervisor
0.4% not specifically accounted for
diff --git a/inform7/Internal/Inter/BasicInformKit/Sections/Definitions.i6t b/inform7/Internal/Inter/BasicInformKit/Sections/Definitions.i6t
index c76c5aec0..814d501c0 100644
--- a/inform7/Internal/Inter/BasicInformKit/Sections/Definitions.i6t
+++ b/inform7/Internal/Inter/BasicInformKit/Sections/Definitions.i6t
@@ -391,42 +391,6 @@ Constant REPORT_RB = 33;
Constant DOES_THE_PLAYER_MEAN_RB = 34;
Constant MULTIPLE_ACTION_PROCESSING_RB = 35;
-@h Kind IDs.
-These are filled in automatically by Inform, and have the same names as are used
-in the Inform source (and in the Load-.i6t sections): for instance |NUMBER_TY|.
-
-@h Parser Error Numbers.
-The traditional ways in which the I6 library's parser, which we adopt here
-more or less intact, can give up on a player's command. See the {\it Inform
-Designer's Manual}, 4th edition, for details.
-
-=
-Constant STUCK_PE = 1;
-Constant UPTO_PE = 2;
-Constant NUMBER_PE = 3;
-Constant ANIMA_PE = 4;
-Constant CANTSEE_PE = 5;
-Constant TOOLIT_PE = 6;
-Constant NOTHELD_PE = 7;
-Constant MULTI_PE = 8;
-Constant MMULTI_PE = 9;
-Constant VAGUE_PE = 10;
-Constant EXCEPT_PE = 11;
-Constant VERB_PE = 12;
-Constant SCENERY_PE = 13;
-Constant ITGONE_PE = 14;
-Constant JUNKAFTER_PE = 15;
-Constant TOOFEW_PE = 16;
-Constant NOTHING_PE = 17;
-Constant ASKSCOPE_PE = 18;
-Constant NOTINCONTEXT_PE = 19;
-Constant BLANKLINE_PE = 20; ! Not formally a parser error, but used by I7 as if
-Constant ANIMAAGAIN_PE = 21;
-Constant COMMABEGIN_PE = 22;
-Constant MISSINGPERSON_PE = 23;
-Constant ANIMALISTEN_PE = 24;
-Constant TOTALK_PE = 25;
-
@h Scope Searching Reasons.
The parser makes use of a mechanism for searching through the objects currently
"in scope", which basically means visible to the actor who would perform the
@@ -683,28 +647,6 @@ Property grammar; ! not used by I7, but an interesting hook in the parser
Property inside_description; ! not used by I7, but an interesting hook in the locale code
Property short_name_indef 0; ! not used by I7, but an interesting hook in the listmaker
-@h Fake Actions.
-Though sometimes useful for I6 coding tricks, fake actions -- action numbers
-not corresponding to any action, but different from those of valid actions,
-and useable with a number of action syntaxes -- are not conceptually present
-in I7 source text. They can only really exist at the I6 level because I6 is
-typeless; in I7 terms, there is no convenient kind of value which could
-represent both actions and fake actions while protecting each from confusion
-with the other.
-
-See the {\it Inform Designer's Manual}, 4th edition, for what these are
-used for.
-
-The following fake actions from the I6 library have been dropped here:
-|##LetGo|, |##Receive|, |##ThrownAt|, |##Prompt|, |##Places|, |##Objects|,
-|##Order|, |##NotUnderstood|.
-
-=
-Fake_Action ListMiscellany;
-Fake_Action Miscellany;
-Fake_Action PluralFound;
-Fake_Action TheSame;
-
@h Formal Parameters.
These are needed for efficient run-time ambiguity resolution.
diff --git a/inform7/Internal/Inter/CommandParserKit/Sections/Parser.i6t b/inform7/Internal/Inter/CommandParserKit/Sections/Parser.i6t
index 7934ef917..0092219f2 100644
--- a/inform7/Internal/Inter/CommandParserKit/Sections/Parser.i6t
+++ b/inform7/Internal/Inter/CommandParserKit/Sections/Parser.i6t
@@ -3,6 +3,37 @@ Parser Template.
The parser for turning the text of the typed command into a proposed
action by the player.
+@h Parser Error Numbers.
+The traditional ways in which the I6 library's parser, which we adopt here
+more or less intact, can give up on a player's command.
+
+=
+Constant STUCK_PE = 1;
+Constant UPTO_PE = 2;
+Constant NUMBER_PE = 3;
+Constant ANIMA_PE = 4;
+Constant CANTSEE_PE = 5;
+Constant TOOLIT_PE = 6;
+Constant NOTHELD_PE = 7;
+Constant MULTI_PE = 8;
+Constant MMULTI_PE = 9;
+Constant VAGUE_PE = 10;
+Constant EXCEPT_PE = 11;
+Constant VERB_PE = 12;
+Constant SCENERY_PE = 13;
+Constant ITGONE_PE = 14;
+Constant JUNKAFTER_PE = 15;
+Constant TOOFEW_PE = 16;
+Constant NOTHING_PE = 17;
+Constant ASKSCOPE_PE = 18;
+Constant NOTINCONTEXT_PE = 19;
+Constant BLANKLINE_PE = 20; ! Not formally a parser error, but used by I7 as if
+Constant ANIMAAGAIN_PE = 21;
+Constant COMMABEGIN_PE = 22;
+Constant MISSINGPERSON_PE = 23;
+Constant ANIMALISTEN_PE = 24;
+Constant TOTALK_PE = 25;
+
@h Grammar Line Variables.
This is the I6 library parser in mostly untouched form: reformatted for template
file use, and with paragraph divisions, but otherwise hardly changed at all.
@@ -24,6 +55,7 @@ in "Output.i6t" are for general access, while the ones below should only
be read or written by the parser.
=
+Global etype; ! parser error number if command not recognised
Global best_etype; ! Preferred error number so far
Global nextbest_etype; ! Preferred one, if ASKSCOPE_PE disallowed
diff --git a/inform7/Internal/Inter/WorldModelKit/Sections/Actions.i6t b/inform7/Internal/Inter/WorldModelKit/Sections/Actions.i6t
index df73b5cb5..f48e48d3e 100644
--- a/inform7/Internal/Inter/WorldModelKit/Sections/Actions.i6t
+++ b/inform7/Internal/Inter/WorldModelKit/Sections/Actions.i6t
@@ -46,6 +46,25 @@ This segment of the template is divided into two: first, the I6 code needed
for (i) to (vii), the alternative ways for actions to begin; and secondly
the common machinery into which all actions eventually pass.
+@h Fake Actions.
+Though sometimes useful for I6 coding tricks, fake actions -- action numbers
+not corresponding to any action, but different from those of valid actions,
+and useable with a number of action syntaxes -- are not conceptually present
+in I7 source text. They can only really exist at the I6 level because I6 is
+typeless; in I7 terms, there is no convenient kind of value which could
+represent both actions and fake actions while protecting each from confusion
+with the other.
+
+The following fake actions from the I6 library have been dropped here:
+|##LetGo|, |##Receive|, |##ThrownAt|, |##Prompt|, |##Places|, |##Objects|,
+|##Order|, |##NotUnderstood|.
+
+=
+Fake_Action ListMiscellany;
+Fake_Action Miscellany;
+Fake_Action PluralFound;
+Fake_Action TheSame;
+
@h Action Data.
This is perhaps a good place to document the |ActionData| array, a convenient
table of metadata about the actions. Since this is compiled by Inform, the
diff --git a/inform7/Internal/Inter/WorldModelKit/Sections/Miscellany.i6t b/inform7/Internal/Inter/WorldModelKit/Sections/Miscellany.i6t
index e4b0b1cc6..d76fb92bb 100644
--- a/inform7/Internal/Inter/WorldModelKit/Sections/Miscellany.i6t
+++ b/inform7/Internal/Inter/WorldModelKit/Sections/Miscellany.i6t
@@ -145,7 +145,6 @@ Global multiple_object_item; ! item currently being processed in multiple-object
Global noun; ! = I7 "noun"
Global second; ! = I7 "second noun"
Global keep_silent; ! true if current action is being tried silently
-Global etype; ! parser error number if command not recognised
Global trace_actions = 0;
Global untouchable_object;
diff --git a/inform7/runtime-module/Chapter 2/Hierarchy.w b/inform7/runtime-module/Chapter 2/Hierarchy.w
index 0d0877ff0..0bfc8b8b7 100644
--- a/inform7/runtime-module/Chapter 2/Hierarchy.w
+++ b/inform7/runtime-module/Chapter 2/Hierarchy.w
@@ -155,15 +155,13 @@ definitions, and also
(2) material added later in linking, for example from kits like //WorldModelKit//.
The following catalogue contains location and naming conventions for everything
-in category (1), and for some of the names in category (2) which the main
-compiler needs to refer to. For example, the Inform compiler generates calls
-to an Inter function called |BlkValueCopy|. This is a function in the kit
-//BasicInformKit//, but it has a hierarchy location ID, |BLKVALUECOPY_HL|, so
-that the compiler can refer to it.
+in category (1). Names in category (2) are set up in //pipeline: Synoptic Hierarchy//
+and //pipeline: The Standard Kits//, but by very similar methods.
=
void Hierarchy::establish(void) {
SynopticHierarchy::establish(Emit::tree());
+ KitHierarchy::establish(Emit::tree());
H_BEGIN_DECLARATIONS
@;
@;
diff --git a/inter/bytecode-module/Chapter 2/Inter Trees.w b/inter/bytecode-module/Chapter 2/Inter Trees.w
index 1c473954f..4d414fee3 100644
--- a/inter/bytecode-module/Chapter 2/Inter Trees.w
+++ b/inter/bytecode-module/Chapter 2/Inter Trees.w
@@ -5,12 +5,16 @@ within these trees.
@
+@d SYNOPTIC_HIERARCHY_MADE_ITHBIT 1
+@d KIT_HIERARCHY_MADE_ITHBIT 2
+
=
typedef struct inter_tree {
struct inter_warehouse *housed;
struct inter_tree_node *root_node;
struct inter_package *root_package;
struct building_site site;
+ int history_bits;
CLASS_DEFINITION
} inter_tree;
@@ -29,6 +33,7 @@ inter_tree *InterTree::new(void) {
I->root_node->package = I->root_package;
Inter::Warehouse::attribute_resource(I->housed, N, I->root_package);
Site::clear(I);
+ I->history_bits = 0;
return I;
}
diff --git a/inter/index-module/Chapter 1/Indexing API.w b/inter/index-module/Chapter 1/Indexing API.w
index ac17da91b..251db02dc 100644
--- a/inter/index-module/Chapter 1/Indexing API.w
+++ b/inter/index-module/Chapter 1/Indexing API.w
@@ -118,7 +118,7 @@ index_session *Indexing::new_session(inter_tree *I) {
if (I == NULL) internal_error("no tree to index");
index_session *session = CREATE(index_session);
session->tree = I;
- session->inv = Synoptic::inv(I);
+ session->inv = MakeSynopticModuleStage::take_inventory(I);
session->lexicon = NULL;
session->set_of_instances = NULL;
session->list_of_scenes = NULL;
diff --git a/inter/index-module/Chapter 2/Faux Instances.w b/inter/index-module/Chapter 2/Faux Instances.w
index 4a0c03e32..08231b05d 100644
--- a/inter/index-module/Chapter 2/Faux Instances.w
+++ b/inter/index-module/Chapter 2/Faux Instances.w
@@ -181,7 +181,7 @@ void FauxInstances::make_faux(index_session *session) {
session->set_of_instances = faux_set;
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->instance_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->instance_nodes, MakeSynopticModuleStage::module_order);
inter_package *pack;
LOOP_OVER_INVENTORY_PACKAGES(pack, i, inv->instance_nodes)
if (Metadata::read_optional_numeric(pack, I"^is_object"))
diff --git a/inter/index-module/Chapter 2/Faux Scenes.w b/inter/index-module/Chapter 2/Faux Scenes.w
index 407d39d35..99e88a30c 100644
--- a/inter/index-module/Chapter 2/Faux Scenes.w
+++ b/inter/index-module/Chapter 2/Faux Scenes.w
@@ -41,7 +41,7 @@ void FauxScenes::list_of_faux_scenes(index_session *session) {
inter_tree *I = Indexing::get_tree(session);
tree_inventory *inv = Indexing::get_inventory(session);
TreeLists::sort(inv->scene_nodes, FauxScenes::scene_order);
- TreeLists::sort(inv->rulebook_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->rulebook_nodes, MakeSynopticModuleStage::module_order);
inter_package *scene_pack;
LOOP_OVER_INVENTORY_PACKAGES(scene_pack, i, inv->scene_nodes)
diff --git a/inter/index-module/Chapter 2/Lexicon.w b/inter/index-module/Chapter 2/Lexicon.w
index 29df6cf11..4d16cd823 100644
--- a/inter/index-module/Chapter 2/Lexicon.w
+++ b/inter/index-module/Chapter 2/Lexicon.w
@@ -59,7 +59,7 @@ inter_lexicon *IndexLexicon::stock(inter_tree *I, tree_inventory *inv) {
}
@ =
- TreeLists::sort(inv->verb_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->verb_nodes, MakeSynopticModuleStage::module_order);
inter_package *pack;
LOOP_OVER_INVENTORY_PACKAGES(pack, i, inv->verb_nodes) {
index_lexicon_entry *lex;
diff --git a/inter/index-module/Chapter 3/Arithmetic Element.w b/inter/index-module/Chapter 3/Arithmetic Element.w
index 38ae880c6..8f4e9354f 100644
--- a/inter/index-module/Chapter 3/Arithmetic Element.w
+++ b/inter/index-module/Chapter 3/Arithmetic Element.w
@@ -9,8 +9,8 @@ so we do little more than tabulate that data here.
void ArithmeticElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->kind_nodes, Synoptic::module_order);
- TreeLists::sort(inv->multiplication_rule_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->kind_nodes, MakeSynopticModuleStage::module_order);
+ TreeLists::sort(inv->multiplication_rule_nodes, MakeSynopticModuleStage::module_order);
HTML_TAG("hr");
@;
@;
diff --git a/inter/index-module/Chapter 3/Behaviour Element.w b/inter/index-module/Chapter 3/Behaviour Element.w
index 0368f4431..60df114ef 100644
--- a/inter/index-module/Chapter 3/Behaviour Element.w
+++ b/inter/index-module/Chapter 3/Behaviour Element.w
@@ -17,7 +17,7 @@ void BehaviourElement::render(OUTPUT_STREAM, index_session *session) {
Localisation::roman(OUT, LD, I"Index.Elements.Bh.None");
HTML_CLOSE("p");
} else {
- TreeLists::sort(inv->named_action_pattern_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->named_action_pattern_nodes, MakeSynopticModuleStage::module_order);
inter_package *pack;
LOOP_OVER_INVENTORY_PACKAGES(pack, i, inv->named_action_pattern_nodes) {
text_stream *name = Metadata::read_optional_textual(pack, I"^name");
diff --git a/inter/index-module/Chapter 3/Chart Element.w b/inter/index-module/Chapter 3/Chart Element.w
index 127d446df..bbe7520fc 100644
--- a/inter/index-module/Chapter 3/Chart Element.w
+++ b/inter/index-module/Chapter 3/Chart Element.w
@@ -9,8 +9,8 @@ and it is quite dense with information.
void ChartElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *D = Indexing::get_localisation(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->kind_nodes, Synoptic::module_order);
- TreeLists::sort(inv->instance_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->kind_nodes, MakeSynopticModuleStage::module_order);
+ TreeLists::sort(inv->instance_nodes, MakeSynopticModuleStage::module_order);
HTML::begin_wide_html_table(OUT);
int pass = 1;
@;
diff --git a/inter/index-module/Chapter 3/Contents Element.w b/inter/index-module/Chapter 3/Contents Element.w
index cb9f8e51a..c52fd7060 100644
--- a/inter/index-module/Chapter 3/Contents Element.w
+++ b/inter/index-module/Chapter 3/Contents Element.w
@@ -9,8 +9,8 @@ void ContentsElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
inter_tree *I = Indexing::get_tree(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->extension_nodes, Synoptic::category_order);
- TreeLists::sort(inv->heading_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->extension_nodes, MakeSynopticModuleStage::category_order);
+ TreeLists::sort(inv->heading_nodes, MakeSynopticModuleStage::module_order);
@;
@;
diff --git a/inter/index-module/Chapter 3/Events Element.w b/inter/index-module/Chapter 3/Events Element.w
index bc65f873a..1c0e99922 100644
--- a/inter/index-module/Chapter 3/Events Element.w
+++ b/inter/index-module/Chapter 3/Events Element.w
@@ -8,7 +8,7 @@ To write the Events element (Ev) in the index.
void EventsElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->rule_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->rule_nodes, MakeSynopticModuleStage::module_order);
int when_count = 0, tt_count = 0;
@;
diff --git a/inter/index-module/Chapter 3/Extras Element.w b/inter/index-module/Chapter 3/Extras Element.w
index c2d6178e1..e5755d707 100644
--- a/inter/index-module/Chapter 3/Extras Element.w
+++ b/inter/index-module/Chapter 3/Extras Element.w
@@ -10,8 +10,8 @@ void ExtrasElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
inter_tree *I = Indexing::get_tree(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->rulebook_nodes, Synoptic::module_order);
- TreeLists::sort(inv->activity_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->rulebook_nodes, MakeSynopticModuleStage::module_order);
+ TreeLists::sort(inv->activity_nodes, MakeSynopticModuleStage::module_order);
inter_package *E;
LOOP_OVER_INVENTORY_PACKAGES(E, i, inv->module_nodes)
@@ -26,7 +26,7 @@ void ExtrasElement::render(OUTPUT_STREAM, index_session *session) {
int c = 0;
inter_package *rb_pack;
LOOP_OVER_INVENTORY_PACKAGES(rb_pack, i, inv->rulebook_nodes)
- if (Synoptic::module_containing(rb_pack->package_head) == E) {
+ if (MakeSynopticModuleStage::module_containing(rb_pack->package_head) == E) {
if (Metadata::read_optional_numeric(rb_pack, I"^automatically_generated"))
continue;
if (c++ == 0) @;
@@ -36,7 +36,7 @@ void ExtrasElement::render(OUTPUT_STREAM, index_session *session) {
}
inter_package *av_pack;
LOOP_OVER_INVENTORY_PACKAGES(av_pack, i, inv->activity_nodes)
- if (Synoptic::module_containing(av_pack->package_head) == E) {
+ if (MakeSynopticModuleStage::module_containing(av_pack->package_head) == E) {
if (c++ == 0) @;
IndexRules::activity_box(OUT, I, av_pack, 1, session);
}
diff --git a/inter/index-module/Chapter 3/Figures Element.w b/inter/index-module/Chapter 3/Figures Element.w
index ecb0357d4..4b75e7202 100644
--- a/inter/index-module/Chapter 3/Figures Element.w
+++ b/inter/index-module/Chapter 3/Figures Element.w
@@ -9,9 +9,9 @@ void FiguresElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
inter_tree *I = Indexing::get_tree(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->figure_nodes, Synoptic::module_order);
- TreeLists::sort(inv->sound_nodes, Synoptic::module_order);
- TreeLists::sort(inv->file_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->figure_nodes, MakeSynopticModuleStage::module_order);
+ TreeLists::sort(inv->sound_nodes, MakeSynopticModuleStage::module_order);
+ TreeLists::sort(inv->file_nodes, MakeSynopticModuleStage::module_order);
@;
@;
@;
diff --git a/inter/index-module/Chapter 3/Grouped Element.w b/inter/index-module/Chapter 3/Grouped Element.w
index 691756b79..54ffa347f 100644
--- a/inter/index-module/Chapter 3/Grouped Element.w
+++ b/inter/index-module/Chapter 3/Grouped Element.w
@@ -8,7 +8,7 @@ per-action pages linked from it.
=
void GroupedElement::render(OUTPUT_STREAM, index_session *session) {
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->action_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->action_nodes, MakeSynopticModuleStage::module_order);
int f = FALSE;
text_stream *current_area = I"___no_area___";
@@ -57,7 +57,7 @@ void GroupedElement::detail_pages(index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
inter_tree *I = Indexing::get_tree(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->action_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->action_nodes, MakeSynopticModuleStage::module_order);
inter_package *an_pack;
LOOP_OVER_INVENTORY_PACKAGES(an_pack, i, inv->action_nodes) {
diff --git a/inter/index-module/Chapter 3/Innards Element.w b/inter/index-module/Chapter 3/Innards Element.w
index 18ba82a2e..405df9358 100644
--- a/inter/index-module/Chapter 3/Innards Element.w
+++ b/inter/index-module/Chapter 3/Innards Element.w
@@ -10,7 +10,7 @@ void InnardsElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
inter_tree *I = Indexing::get_tree(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->use_option_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->use_option_nodes, MakeSynopticModuleStage::module_order);
@;
@;
diff --git a/inter/index-module/Chapter 3/Relations Element.w b/inter/index-module/Chapter 3/Relations Element.w
index 8de99e842..60ab2e820 100644
--- a/inter/index-module/Chapter 3/Relations Element.w
+++ b/inter/index-module/Chapter 3/Relations Element.w
@@ -8,7 +8,7 @@ To write the Relations element (Rl) in the index.
void RelationsElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->relation_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->relation_nodes, MakeSynopticModuleStage::module_order);
HTML_OPEN("p");
HTML::begin_plain_html_table(OUT);
diff --git a/inter/index-module/Chapter 3/Rules for Scenes Element.w b/inter/index-module/Chapter 3/Rules for Scenes Element.w
index fc3aee08f..6464a8077 100644
--- a/inter/index-module/Chapter 3/Rules for Scenes Element.w
+++ b/inter/index-module/Chapter 3/Rules for Scenes Element.w
@@ -8,7 +8,7 @@ To write the Rules for Scenes element (RS) in the index.
void RulesForScenesElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->rulebook_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->rulebook_nodes, MakeSynopticModuleStage::module_order);
HTML_OPEN("p");
Localisation::bold(OUT, LD, I"Index.Elements.RS.Machinery");
diff --git a/inter/index-module/Chapter 3/Standards Element.w b/inter/index-module/Chapter 3/Standards Element.w
index fdafb99e9..be011bdfc 100644
--- a/inter/index-module/Chapter 3/Standards Element.w
+++ b/inter/index-module/Chapter 3/Standards Element.w
@@ -9,8 +9,8 @@ their contents in logical order.
void StandardsElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->rulebook_nodes, Synoptic::module_order);
- TreeLists::sort(inv->activity_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->rulebook_nodes, MakeSynopticModuleStage::module_order);
+ TreeLists::sort(inv->activity_nodes, MakeSynopticModuleStage::module_order);
@;
@;
diff --git a/inter/index-module/Chapter 3/Tables Element.w b/inter/index-module/Chapter 3/Tables Element.w
index 32a93b1ea..82e6c7a84 100644
--- a/inter/index-module/Chapter 3/Tables Element.w
+++ b/inter/index-module/Chapter 3/Tables Element.w
@@ -10,14 +10,14 @@ main source text, all the tables in the Standard Rules, and so on.
void TablesElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->table_nodes, Synoptic::category_order);
+ TreeLists::sort(inv->table_nodes, MakeSynopticModuleStage::category_order);
inter_package *current_mod = NULL; int mc = 0, first_ext = TRUE;
inter_ti cat = 1, open_cat = 0;
for (inter_ti with_cat = 1; with_cat <= 3; with_cat++) {
inter_package *table_pack;
LOOP_OVER_INVENTORY_PACKAGES(table_pack, i, inv->table_nodes) {
- inter_package *mod = Synoptic::module_containing(table_pack->package_head);
+ inter_package *mod = MakeSynopticModuleStage::module_containing(table_pack->package_head);
if (mod) {
cat = Metadata::read_optional_numeric(mod, I"^category");
if (cat == with_cat) {
diff --git a/inter/index-module/Chapter 3/Values Element.w b/inter/index-module/Chapter 3/Values Element.w
index 4fc818304..f44dc30db 100644
--- a/inter/index-module/Chapter 3/Values Element.w
+++ b/inter/index-module/Chapter 3/Values Element.w
@@ -9,9 +9,9 @@ quite different.
void ValuesElement::render(OUTPUT_STREAM, index_session *session) {
localisation_dictionary *LD = Indexing::get_localisation(session);
tree_inventory *inv = Indexing::get_inventory(session);
- TreeLists::sort(inv->variable_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->variable_nodes, MakeSynopticModuleStage::module_order);
@;
- TreeLists::sort(inv->equation_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->equation_nodes, MakeSynopticModuleStage::module_order);
@;
}
diff --git a/inter/pipeline-module/Chapter 4/Shorten Wiring Stage.w b/inter/pipeline-module/Chapter 4/Shorten Wiring Stage.w
index f0f0ce9c9..fc54f0ea9 100644
--- a/inter/pipeline-module/Chapter 4/Shorten Wiring Stage.w
+++ b/inter/pipeline-module/Chapter 4/Shorten Wiring Stage.w
@@ -23,6 +23,13 @@ typedef struct plug_inspection_state {
int ShortenWiringStage::run(pipeline_step *step) {
inter_tree *I = step->ephemera.repository;
+ @;
+ inter_package *connectors = Site::connectors_package(I);
+ if (connectors) @;
+ return TRUE;
+}
+
+@ =
plug_inspection_state state;
state.bad_plugs = Dictionaries::new(16, FALSE);
state.bad_plug_names = NEW_LINKED_LIST(text_stream);
@@ -39,31 +46,6 @@ int ShortenWiringStage::run(pipeline_step *step) {
DISCARD_TEXT(NS)
return FALSE;
}
- inter_package *connectors = Site::connectors_package(I);
- if (connectors) {
- inter_symbols_table *ST = Inter::Packages::scope(connectors);
- for (int i=0; isize; i++) {
- inter_symbol *S = ST->symbol_array[i];
- if ((Wiring::is_plug(S)) && (Wiring::has_no_incoming_connections(S)))
- Inter::Symbols::remove_from_table(S);
- }
- for (int i=0; isize; i++) {
- inter_symbol *S = ST->symbol_array[i];
- if ((Wiring::is_socket(S)) && (Wiring::has_no_incoming_connections(S)))
- Inter::Symbols::remove_from_table(S);
- }
- int errors = 0;
- for (int i=0; isize; i++) {
- inter_symbol *S = ST->symbol_array[i];
- if (S) {
- LOG("Connector not deleted: %3\n", S);
- errors++;
- }
- }
- if (errors > 0) internal_error("plugs and sockets mismanaged");
- }
- return TRUE;
-}
@ Note that it is not necessarily an error to have a loose plug, that is, a plug
which does not connect to any socket. It is only an error if a symbol is trying
@@ -95,3 +77,42 @@ void ShortenWiringStage::visitor(inter_tree *I, inter_tree_node *P, void *v_stat
Dictionaries::create(state->bad_plugs, N);
ADD_TO_LINKED_LIST(N, text_stream, state->bad_plug_names);
}
+
+@ At this point there will be plugs with no incoming connections, but which
+are each wired to sockets. Removing the plugs first then leaves the sockets
+with no incoming connections either, and so the sockets can go too.
+
+The result should be a completely empty |connectors| module.
+
+@ =
+ inter_symbols_table *ST = Inter::Packages::scope(connectors);
+ @;
+ @;
+ @;
+
+@ =
+ for (int i=0; isize; i++) {
+ inter_symbol *S = ST->symbol_array[i];
+ if ((Wiring::is_plug(S)) && (Wiring::has_no_incoming_connections(S)))
+ Inter::Symbols::remove_from_table(S);
+ }
+
+@ =
+ for (int i=0; isize; i++) {
+ inter_symbol *S = ST->symbol_array[i];
+ if ((Wiring::is_socket(S)) && (Wiring::has_no_incoming_connections(S)))
+ Inter::Symbols::remove_from_table(S);
+ }
+
+@ This should never happen:
+
+@ =
+ int errors = 0;
+ for (int i=0; isize; i++) {
+ inter_symbol *S = ST->symbol_array[i];
+ if (S) {
+ LOG("Connector not deleted: %3\n", S);
+ errors++;
+ }
+ }
+ if (errors > 0) internal_error("plugs and sockets mismanaged");
diff --git a/inter/pipeline-module/Chapter 4/The Standard Kits.w b/inter/pipeline-module/Chapter 4/The Standard Kits.w
new file mode 100644
index 000000000..7c26fb0cc
--- /dev/null
+++ b/inter/pipeline-module/Chapter 4/The Standard Kits.w
@@ -0,0 +1,543 @@
+[KitHierarchy::] The Standard Kits.
+
+The layout and naming conventions for functions and other resources provided
+by the standard kits, and which are called or accessed from code generated
+by Inter or by the Inform 7 compiler.
+
+@ Suppose you are a tool like //inform7// or //inter// and you are generating
+a function, and in that function you want to access the variable |location| --
+which is defined in //WorldModelKit// -- or call the function |BlkValueCreate| --
+which is in //BasicInformKit//. These have not yet been linked in to the Inter
+tree you're trying to build: so how do you describe them?
+
+The answer is that you call |HierarchyLocations::find(I, BLKVALUECREATE_HL)|,
+say, and it will return an |inter_name| which is exactly what you need. This is
+all done with plugs and sockets, but you don't care about that.
+
+The one thing you do need to do is to ensure that the following initialisation
+function has been called: if not, |HierarchyLocations::find| won't find these
+resources.
+
+=
+void KitHierarchy::establish(inter_tree *I) {
+ if (I->history_bits & KIT_HIERARCHY_MADE_ITHBIT) return;
+ I->history_bits |= KIT_HIERARCHY_MADE_ITHBIT;
+ @;
+}
+
+@ The following, then, is an itemised list of what symbol names in the kits
+the //inform7// and //inter// tools need to refer to. (It's not any kind of
+comprehensive list of what is there.)
+
+@d KIT_PROVIDED(id, n) HierarchyLocations::ctr(I, id, n, Translation::same(), req);
+
+@ =
+ location_requirement req = HierarchyLocations::plug();
+ @;
+ @;
+ @;
+ @;
+ @;
+
+@h Offered by BasicInformKit.
+
+@e ADJUSTPARAGRAPHPOINT_HL from 0
+@e ARGUMENTTYPEFAILED_HL
+@e AUXF_MAGIC_VALUE_HL
+@e AUXF_STATUS_IS_CLOSED_HL
+@e BLKVALUECOPY_HL
+@e BLKVALUECOPYAZ_HL
+@e BLKVALUECREATE_HL
+@e BLKVALUECREATEONSTACK_HL
+@e BLKVALUEERROR_HL
+@e BLKVALUEFREE_HL
+@e BLKVALUEFREEONSTACK_HL
+@e BLKVALUEWRITE_HL
+@e CHECKKINDRETURNED_HL
+@e CLEARPARAGRAPHING_HL
+@e CONSTANT_PACKED_TEXT_STORAGE_HL
+@e CONSTANT_PERISHABLE_TEXT_STORAGE_HL
+@e CUBEROOT_HL
+@e DB_RULE_HL
+@e DEBUG_RULES_HL
+@e DEBUGPROPERTY_HL
+@e DECIMALNUMBER_HL
+@e DIGITTOVALUE_HL
+@e DIVIDEPARAGRAPHPOINT_HL
+@e DOUBLEHASHSETRELATIONHANDLER_HL
+@e EMPTY_RULEBOOK_INAME_HL
+@e EMPTY_TABLE_HL
+@e EMPTY_TEXT_PACKED_HL
+@e EMPTY_TEXT_VALUE_HL
+@e EMPTYRELATIONHANDLER_HL
+@e EXISTSTABLELOOKUPCORR_HL
+@e EXISTSTABLELOOKUPENTRY_HL
+@e EXISTSTABLEROWCORR_HL
+@e FLOAT_NAN_HL
+@e FLOATPARSE_HL
+@e FOLLOWRULEBOOK_HL
+@e formal_par0_HL
+@e formal_par1_HL
+@e formal_par2_HL
+@e formal_par3_HL
+@e formal_par4_HL
+@e formal_par5_HL
+@e formal_par6_HL
+@e formal_par7_HL
+@e FORMAL_RV_HL
+@e GENERATERANDOMNUMBER_HL
+@e GPROPERTY_HL
+@e HASHLISTRELATIONHANDLER_HL
+@e I7SFRAME_HL
+@e INTEGERDIVIDE_HL
+@e INTEGERREMAINDER_HL
+@e KINDATOMIC_HL
+@e LATEST_RULE_RESULT_HL
+@e LIST_ITEM_BASE_HL
+@e LIST_ITEM_KOV_F_HL
+@e LIST_OF_TY_DESC_HL
+@e LIST_OF_TY_GETITEM_HL
+@e LIST_OF_TY_GETLENGTH_HL
+@e LIST_OF_TY_INSERTITEM_HL
+@e LIST_OF_TY_SAY_HL
+@e LIST_OF_TY_SETLENGTH_HL
+@e MSTACK_HL
+@e MSTVO_HL
+@e MSTVON_HL
+@e NAME_HL
+@e NOTHING_HL
+@e NUMBER_TY_ABS_HL
+@e NUMBER_TY_TO_REAL_NUMBER_TY_HL
+@e OTOVRELROUTETO_HL
+@e PACKED_TEXT_STORAGE_HL
+@e PARACONTENT_HL
+@e PARAMETER_VALUE_HL
+@e PRINTORRUN_HL
+@e PRIOR_NAMED_LIST_GENDER_HL
+@e PRIOR_NAMED_LIST_HL
+@e PRIOR_NAMED_NOUN_HL
+@e PROPERTY_LOOP_SIGN_HL
+@e PROPERTY_TO_BE_TOTALLED_HL
+@e REAL_NUMBER_TY_ABS_HL
+@e REAL_NUMBER_TY_APPROXIMATE_HL
+@e REAL_NUMBER_TY_COMPARE_HL
+@e REAL_NUMBER_TY_CUBE_ROOT_HL
+@e REAL_NUMBER_TY_DIVIDE_HL
+@e REAL_NUMBER_TY_MINUS_HL
+@e REAL_NUMBER_TY_NAN_HL
+@e REAL_NUMBER_TY_NEGATE_HL
+@e REAL_NUMBER_TY_PLUS_HL
+@e REAL_NUMBER_TY_POW_HL
+@e REAL_NUMBER_TY_REMAINDER_HL
+@e REAL_NUMBER_TY_ROOT_HL
+@e REAL_NUMBER_TY_SAY_HL
+@e REAL_NUMBER_TY_TIMES_HL
+@e REAL_NUMBER_TY_TO_NUMBER_TY_HL
+@e RELATION_EMPTYEQUIV_HL
+@e RELATION_EMPTYOTOO_HL
+@e RELATION_EMPTYVTOV_HL
+@e RELATION_RSHOWOTOO_HL
+@e RELATION_SHOWEQUIV_HL
+@e RELATION_SHOWOTOO_HL
+@e RELATION_SHOWVTOV_HL
+@e RELATION_TY_EQUIVALENCEADJECTIVE_HL
+@e RELATION_TY_NAME_HL
+@e RELATION_TY_OTOOADJECTIVE_HL
+@e RELATION_TY_OTOVADJECTIVE_HL
+@e RELATION_TY_SYMMETRICADJECTIVE_HL
+@e RELATION_TY_VTOOADJECTIVE_HL
+@e RELATIONTEST_HL
+@e RELFOLLOWVECTOR_HL
+@e RELS_EMPTY_HL
+@e RLANY_CAN_GET_X_HL
+@e RLANY_CAN_GET_Y_HL
+@e RLANY_GET_X_HL
+@e RLIST_ALL_X_HL
+@e RLIST_ALL_Y_HL
+@e RLNGETF_HL
+@e ROUNDOFFVALUE_HL
+@e RR_STORAGE_HL
+@e RTP_RELKINDVIOLATION_HL
+@e RTP_RELMINIMAL_HL
+@e RULEBOOKFAILS_HL
+@e RULEBOOKPARBREAK_HL
+@e RULEBOOKSUCCEEDS_HL
+@e RUNTIMEPROBLEM_HL
+@e SAY__N_HL
+@e SAY__P_HL
+@e SAY__PC_HL
+@e SIGNEDCOMPARE_HL
+@e SQUAREROOT_HL
+@e STACKFRAMECREATE_HL
+@e SUPPRESS_TEXT_SUBSTITUTION_HL
+@e TABLE_NOVALUE_HL
+@e TABLELOOKUPCORR_HL
+@e TABLELOOKUPENTRY_HL
+@e TEXT_TY_COMPARE_HL
+@e TEXT_TY_EXPANDIFPERISHABLE_HL
+@e TEXT_TY_SAY_HL
+@e THEEMPTYTABLE_HL
+@e UNICODE_TEMP_HL
+@e VTOORELROUTETO_HL
+@e VTOVRELROUTETO_HL
+
+@ =
+ KIT_PROVIDED(ADJUSTPARAGRAPHPOINT_HL, I"AdjustParagraphPoint")
+ KIT_PROVIDED(ARGUMENTTYPEFAILED_HL, I"ArgumentTypeFailed")
+ KIT_PROVIDED(AUXF_MAGIC_VALUE_HL, I"AUXF_MAGIC_VALUE")
+ KIT_PROVIDED(AUXF_STATUS_IS_CLOSED_HL, I"AUXF_STATUS_IS_CLOSED")
+ KIT_PROVIDED(BLKVALUECOPY_HL, I"BlkValueCopy")
+ KIT_PROVIDED(BLKVALUECOPYAZ_HL, I"BlkValueCopyAZ")
+ KIT_PROVIDED(BLKVALUECREATE_HL, I"BlkValueCreate")
+ KIT_PROVIDED(BLKVALUECREATEONSTACK_HL, I"BlkValueCreateOnStack")
+ KIT_PROVIDED(BLKVALUEERROR_HL, I"BlkValueError")
+ KIT_PROVIDED(BLKVALUEFREE_HL, I"BlkValueFree")
+ KIT_PROVIDED(BLKVALUEFREEONSTACK_HL, I"BlkValueFreeOnStack")
+ KIT_PROVIDED(BLKVALUEWRITE_HL, I"BlkValueWrite")
+ KIT_PROVIDED(CHECKKINDRETURNED_HL, I"CheckKindReturned")
+ KIT_PROVIDED(CLEARPARAGRAPHING_HL, I"ClearParagraphing")
+ KIT_PROVIDED(CONSTANT_PACKED_TEXT_STORAGE_HL, I"CONSTANT_PACKED_TEXT_STORAGE")
+ KIT_PROVIDED(CONSTANT_PERISHABLE_TEXT_STORAGE_HL, I"CONSTANT_PERISHABLE_TEXT_STORAGE")
+ KIT_PROVIDED(CUBEROOT_HL, I"CubeRoot")
+ KIT_PROVIDED(DB_RULE_HL, I"DB_Rule")
+ KIT_PROVIDED(DEBUG_RULES_HL, I"debug_rules")
+ KIT_PROVIDED(DEBUGPROPERTY_HL, I"DebugProperty")
+ KIT_PROVIDED(DECIMALNUMBER_HL, I"DecimalNumber")
+ KIT_PROVIDED(DIGITTOVALUE_HL, I"DigitToValue")
+ KIT_PROVIDED(DIVIDEPARAGRAPHPOINT_HL, I"DivideParagraphPoint")
+ KIT_PROVIDED(DOUBLEHASHSETRELATIONHANDLER_HL, I"DoubleHashSetRelationHandler")
+ KIT_PROVIDED(EMPTY_RULEBOOK_INAME_HL, I"EMPTY_RULEBOOK")
+ KIT_PROVIDED(EMPTY_TABLE_HL, I"TheEmptyTable")
+ KIT_PROVIDED(EMPTY_TEXT_PACKED_HL, I"EMPTY_TEXT_PACKED")
+ KIT_PROVIDED(EMPTY_TEXT_VALUE_HL, I"EMPTY_TEXT_VALUE")
+ KIT_PROVIDED(EMPTYRELATIONHANDLER_HL, I"EmptyRelationHandler")
+ KIT_PROVIDED(EXISTSTABLELOOKUPCORR_HL, I"ExistsTableLookUpCorr")
+ KIT_PROVIDED(EXISTSTABLELOOKUPENTRY_HL, I"ExistsTableLookUpEntry")
+ KIT_PROVIDED(EXISTSTABLEROWCORR_HL, I"ExistsTableRowCorr")
+ KIT_PROVIDED(FLOAT_NAN_HL, I"FLOAT_NAN")
+ KIT_PROVIDED(FLOATPARSE_HL, I"FloatParse")
+ KIT_PROVIDED(FOLLOWRULEBOOK_HL, I"FollowRulebook")
+ KIT_PROVIDED(formal_par0_HL, I"formal_par0")
+ KIT_PROVIDED(formal_par1_HL, I"formal_par1")
+ KIT_PROVIDED(formal_par2_HL, I"formal_par2")
+ KIT_PROVIDED(formal_par3_HL, I"formal_par3")
+ KIT_PROVIDED(formal_par4_HL, I"formal_par4")
+ KIT_PROVIDED(formal_par5_HL, I"formal_par5")
+ KIT_PROVIDED(formal_par6_HL, I"formal_par6")
+ KIT_PROVIDED(formal_par7_HL, I"formal_par7")
+ KIT_PROVIDED(FORMAL_RV_HL, I"formal_rv")
+ KIT_PROVIDED(GENERATERANDOMNUMBER_HL, I"GenerateRandomNumber")
+ KIT_PROVIDED(GPROPERTY_HL, I"GProperty")
+ KIT_PROVIDED(HASHLISTRELATIONHANDLER_HL, I"HashListRelationHandler")
+ KIT_PROVIDED(I7SFRAME_HL, I"I7SFRAME")
+ KIT_PROVIDED(INTEGERDIVIDE_HL, I"IntegerDivide")
+ KIT_PROVIDED(INTEGERREMAINDER_HL, I"IntegerRemainder")
+ KIT_PROVIDED(KINDATOMIC_HL, I"KindAtomic")
+ KIT_PROVIDED(LATEST_RULE_RESULT_HL, I"latest_rule_result")
+ KIT_PROVIDED(LIST_ITEM_BASE_HL, I"LIST_ITEM_BASE")
+ KIT_PROVIDED(LIST_ITEM_KOV_F_HL, I"LIST_ITEM_KOV_F")
+ KIT_PROVIDED(LIST_OF_TY_DESC_HL, I"LIST_OF_TY_Desc")
+ KIT_PROVIDED(LIST_OF_TY_GETITEM_HL, I"LIST_OF_TY_GetItem")
+ KIT_PROVIDED(LIST_OF_TY_GETLENGTH_HL, I"LIST_OF_TY_GetLength")
+ KIT_PROVIDED(LIST_OF_TY_INSERTITEM_HL, I"LIST_OF_TY_InsertItem")
+ KIT_PROVIDED(LIST_OF_TY_SAY_HL, I"LIST_OF_TY_Say")
+ KIT_PROVIDED(LIST_OF_TY_SETLENGTH_HL, I"LIST_OF_TY_SetLength")
+ KIT_PROVIDED(MSTACK_HL, I"MStack")
+ KIT_PROVIDED(MSTVO_HL, I"MstVO")
+ KIT_PROVIDED(MSTVON_HL, I"MstVON")
+ KIT_PROVIDED(NAME_HL, I"name")
+ KIT_PROVIDED(NOTHING_HL, I"nothing")
+ KIT_PROVIDED(NUMBER_TY_ABS_HL, I"NUMBER_TY_Abs")
+ KIT_PROVIDED(NUMBER_TY_TO_REAL_NUMBER_TY_HL, I"NUMBER_TY_to_REAL_NUMBER_TY")
+ KIT_PROVIDED(OTOVRELROUTETO_HL, I"OtoVRelRouteTo")
+ KIT_PROVIDED(PACKED_TEXT_STORAGE_HL, I"PACKED_TEXT_STORAGE")
+ KIT_PROVIDED(PARACONTENT_HL, I"ParaContent")
+ KIT_PROVIDED(PARAMETER_VALUE_HL, I"parameter_value")
+ KIT_PROVIDED(PRINTORRUN_HL, I"PrintOrRun")
+ KIT_PROVIDED(PRIOR_NAMED_LIST_GENDER_HL, I"prior_named_list_gender")
+ KIT_PROVIDED(PRIOR_NAMED_LIST_HL, I"prior_named_list")
+ KIT_PROVIDED(PRIOR_NAMED_NOUN_HL, I"prior_named_noun")
+ KIT_PROVIDED(PROPERTY_LOOP_SIGN_HL, I"property_loop_sign")
+ KIT_PROVIDED(PROPERTY_TO_BE_TOTALLED_HL, I"property_to_be_totalled")
+ KIT_PROVIDED(REAL_NUMBER_TY_ABS_HL, I"REAL_NUMBER_TY_Abs")
+ KIT_PROVIDED(REAL_NUMBER_TY_APPROXIMATE_HL, I"REAL_NUMBER_TY_Approximate")
+ KIT_PROVIDED(REAL_NUMBER_TY_COMPARE_HL, I"REAL_NUMBER_TY_Compare")
+ KIT_PROVIDED(REAL_NUMBER_TY_CUBE_ROOT_HL, I"REAL_NUMBER_TY_Cube_Root")
+ KIT_PROVIDED(REAL_NUMBER_TY_DIVIDE_HL, I"REAL_NUMBER_TY_Divide")
+ KIT_PROVIDED(REAL_NUMBER_TY_MINUS_HL, I"REAL_NUMBER_TY_Minus")
+ KIT_PROVIDED(REAL_NUMBER_TY_NAN_HL, I"REAL_NUMBER_TY_Nan")
+ KIT_PROVIDED(REAL_NUMBER_TY_NEGATE_HL, I"REAL_NUMBER_TY_Negate")
+ KIT_PROVIDED(REAL_NUMBER_TY_PLUS_HL, I"REAL_NUMBER_TY_Plus")
+ KIT_PROVIDED(REAL_NUMBER_TY_POW_HL, I"REAL_NUMBER_TY_Pow")
+ KIT_PROVIDED(REAL_NUMBER_TY_REMAINDER_HL, I"REAL_NUMBER_TY_Remainder")
+ KIT_PROVIDED(REAL_NUMBER_TY_ROOT_HL, I"REAL_NUMBER_TY_Root")
+ KIT_PROVIDED(REAL_NUMBER_TY_SAY_HL, I"REAL_NUMBER_TY_Say")
+ KIT_PROVIDED(REAL_NUMBER_TY_TIMES_HL, I"REAL_NUMBER_TY_Times")
+ KIT_PROVIDED(REAL_NUMBER_TY_TO_NUMBER_TY_HL, I"REAL_NUMBER_TY_to_NUMBER_TY")
+ KIT_PROVIDED(RELATION_EMPTYEQUIV_HL, I"Relation_EmptyEquiv")
+ KIT_PROVIDED(RELATION_EMPTYOTOO_HL, I"Relation_EmptyOtoO")
+ KIT_PROVIDED(RELATION_EMPTYVTOV_HL, I"Relation_EmptyVtoV")
+ KIT_PROVIDED(RELATION_RSHOWOTOO_HL, I"Relation_RShowOtoO")
+ KIT_PROVIDED(RELATION_SHOWEQUIV_HL, I"Relation_ShowEquiv")
+ KIT_PROVIDED(RELATION_SHOWOTOO_HL, I"Relation_ShowOtoO")
+ KIT_PROVIDED(RELATION_SHOWVTOV_HL, I"Relation_ShowVtoV")
+ KIT_PROVIDED(RELATION_TY_EQUIVALENCEADJECTIVE_HL, I"RELATION_TY_EquivalenceAdjective")
+ KIT_PROVIDED(RELATION_TY_NAME_HL, I"RELATION_TY_Name")
+ KIT_PROVIDED(RELATION_TY_OTOOADJECTIVE_HL, I"RELATION_TY_OToOAdjective")
+ KIT_PROVIDED(RELATION_TY_OTOVADJECTIVE_HL, I"RELATION_TY_OToVAdjective")
+ KIT_PROVIDED(RELATION_TY_SYMMETRICADJECTIVE_HL, I"RELATION_TY_SymmetricAdjective")
+ KIT_PROVIDED(RELATION_TY_VTOOADJECTIVE_HL, I"RELATION_TY_VToOAdjective")
+ KIT_PROVIDED(RELATIONTEST_HL, I"RelationTest")
+ KIT_PROVIDED(RELFOLLOWVECTOR_HL, I"RelFollowVector")
+ KIT_PROVIDED(RELS_EMPTY_HL, I"RELS_EMPTY")
+ KIT_PROVIDED(RLANY_CAN_GET_X_HL, I"RLANY_CAN_GET_X")
+ KIT_PROVIDED(RLANY_CAN_GET_Y_HL, I"RLANY_CAN_GET_Y")
+ KIT_PROVIDED(RLANY_GET_X_HL, I"RLANY_GET_X")
+ KIT_PROVIDED(RLIST_ALL_X_HL, I"RLIST_ALL_X")
+ KIT_PROVIDED(RLIST_ALL_Y_HL, I"RLIST_ALL_Y")
+ KIT_PROVIDED(RLNGETF_HL, I"RlnGetF")
+ KIT_PROVIDED(ROUNDOFFVALUE_HL, I"RoundOffValue")
+ KIT_PROVIDED(RR_STORAGE_HL, I"RR_STORAGE")
+ KIT_PROVIDED(RTP_RELKINDVIOLATION_HL, I"RTP_RELKINDVIOLATION")
+ KIT_PROVIDED(RTP_RELMINIMAL_HL, I"RTP_RELMINIMAL")
+ KIT_PROVIDED(RULEBOOKFAILS_HL, I"RulebookFails")
+ KIT_PROVIDED(RULEBOOKPARBREAK_HL, I"RulebookParBreak")
+ KIT_PROVIDED(RULEBOOKSUCCEEDS_HL, I"RulebookSucceeds")
+ KIT_PROVIDED(RUNTIMEPROBLEM_HL, I"RunTimeProblem")
+ KIT_PROVIDED(SAY__N_HL, I"say__n")
+ KIT_PROVIDED(SAY__P_HL, I"say__p")
+ KIT_PROVIDED(SAY__PC_HL, I"say__pc")
+ KIT_PROVIDED(SIGNEDCOMPARE_HL, I"SignedCompare")
+ KIT_PROVIDED(SQUAREROOT_HL, I"SquareRoot")
+ KIT_PROVIDED(STACKFRAMECREATE_HL, I"StackFrameCreate")
+ KIT_PROVIDED(SUPPRESS_TEXT_SUBSTITUTION_HL, I"suppress_text_substitution")
+ KIT_PROVIDED(TABLE_NOVALUE_HL, I"TABLE_NOVALUE")
+ KIT_PROVIDED(TABLELOOKUPCORR_HL, I"TableLookUpCorr")
+ KIT_PROVIDED(TABLELOOKUPENTRY_HL, I"TableLookUpEntry")
+ KIT_PROVIDED(TEXT_TY_COMPARE_HL, I"TEXT_TY_Compare")
+ KIT_PROVIDED(TEXT_TY_EXPANDIFPERISHABLE_HL, I"TEXT_TY_ExpandIfPerishable")
+ KIT_PROVIDED(TEXT_TY_SAY_HL, I"TEXT_TY_Say")
+ KIT_PROVIDED(THEEMPTYTABLE_HL, I"TheEmptyTable")
+ KIT_PROVIDED(UNICODE_TEMP_HL, I"unicode_temp")
+ KIT_PROVIDED(VTOORELROUTETO_HL, I"VtoORelRouteTo")
+ KIT_PROVIDED(VTOVRELROUTETO_HL, I"VtoVRelRouteTo")
+
+@h Offered by CommandParserKit.
+
+@e ARTICLEDESCRIPTORS_HL
+@e ETYPE_HL
+@e NEXTBEST_ETYPE_HL
+@e NEXTWORDSTOPPED_HL
+@e NOTINCONTEXTPE_HL
+@e PARSETOKENSTOPPED_HL
+@e TRYGIVENOBJECT_HL
+@e WORDADDRESS_HL
+@e WORDINPROPERTY_HL
+@e WORDLENGTH_HL
+
+@ =
+ KIT_PROVIDED(ARTICLEDESCRIPTORS_HL, I"ArticleDescriptors")
+ KIT_PROVIDED(ETYPE_HL, I"etype")
+ KIT_PROVIDED(NEXTBEST_ETYPE_HL, I"nextbest_etype")
+ KIT_PROVIDED(NEXTWORDSTOPPED_HL, I"NextWordStopped")
+ KIT_PROVIDED(NOTINCONTEXTPE_HL, I"NOTINCONTEXT_PE")
+ KIT_PROVIDED(PARSETOKENSTOPPED_HL, I"ParseTokenStopped")
+ KIT_PROVIDED(TRYGIVENOBJECT_HL, I"TryGivenObject")
+ KIT_PROVIDED(WORDADDRESS_HL, I"WordAddress")
+ KIT_PROVIDED(WORDINPROPERTY_HL, I"WordInProperty")
+ KIT_PROVIDED(WORDLENGTH_HL, I"WordLength")
+
+@h Offered by WorldModelKit.
+
+@e ACT_REQUESTER_HL
+@e ACTION_HL
+@e ACTIONCURRENTLYHAPPENINGFLAG_HL
+@e ACTOR_HL
+@e ACTOR_LOCATION_HL
+@e ALLOWINSHOWME_HL
+@e ANIMATE_HL
+@e C_STYLE_HL
+@e COMPONENT_CHILD_HL
+@e COMPONENT_PARENT_HL
+@e COMPONENT_SIBLING_HL
+@e CONSULT_FROM_HL
+@e CONSULT_WORDS_HL
+@e CONTAINER_HL
+@e DA_NAME_HL
+@e DEADFLAG_HL
+@e DEBUG_SCENES_HL
+@e DETECTPLURALWORD_HL
+@e DURINGSCENEMATCHING_HL
+@e ELEMENTARY_TT_HL
+@e ENGLISH_BIT_HL
+@e FOUND_EVERYWHERE_HL
+@e GENERICVERBSUB_HL
+@e GETGNAOFOBJECT_HL
+@e GPR_FAIL_HL
+@e GPR_NUMBER_HL
+@e GPR_PREPOSITION_HL
+@e GPR_TT_HL
+@e INDENT_BIT_HL
+@e INP1_HL
+@e INP2_HL
+@e INVENTORY_STAGE_HL
+@e KEEP_SILENT_HL
+@e LOCATION_HL
+@e LOCATIONOF_HL
+@e LOOPOVERSCOPE_HL
+@e LOS_RV_HL
+@e NEWLINE_BIT_HL
+@e NOARTICLE_BIT_HL
+@e NOUN_HL
+@e NUMBER_TY_TO_TIME_TY_HL
+@e PARSED_NUMBER_HL
+@e PARSER_ACTION_HL
+@e PARSER_ONE_HL
+@e PARSER_TRACE_HL
+@e PARSER_TWO_HL
+@e PARSERERROR_HL
+@e PAST_CHRONOLOGICAL_RECORD_HL
+@e PLACEINSCOPE_HL
+@e PLAYER_HL
+@e PLURALFOUND_HL
+@e PRESENT_CHRONOLOGICAL_RECORD_HL
+@e REAL_LOCATION_HL
+@e REASON_THE_ACTION_FAILED_HL
+@e RESPONSEVIAACTIVITY_HL
+@e ROUTINEFILTER_TT_HL
+@e SCENE_ENDED_HL
+@e SCENE_ENDINGS_HL
+@e SCENE_LATEST_ENDING_HL
+@e SCENE_STARTED_HL
+@e SCENE_STATUS_HL
+@e SCOPE_STAGE_HL
+@e SCOPE_TT_HL
+@e SECOND_HL
+@e SHORT_NAME_HL
+@e SPECIAL_WORD_HL
+@e STORED_ACTION_TY_CURRENT_HL
+@e STORED_ACTION_TY_TRY_HL
+@e STORY_TENSE_HL
+@e SUPPORTER_HL
+@e SUPPRESS_SCOPE_LOOPS_HL
+@e TESTACTIONBITMAP_HL
+@e TESTACTIVITY_HL
+@e TESTREGIONALCONTAINMENT_HL
+@e TESTSCOPE_HL
+@e TESTSTART_HL
+@e THE_TIME_HL
+@e THEDARK_HL
+@e THESAME_HL
+@e TIMESACTIONHASBEENHAPPENING_HL
+@e TIMESACTIONHASHAPPENED_HL
+@e TRYACTION_HL
+@e TURNSACTIONHASBEENHAPPENING_HL
+@e UNDERSTAND_AS_MISTAKE_NUMBER_HL
+@e WHEN_SCENE_BEGINS_HL
+@e WHEN_SCENE_ENDS_HL
+@e WN_HL
+
+@ =
+ KIT_PROVIDED(ACT_REQUESTER_HL, I"act_requester")
+ KIT_PROVIDED(ACTION_HL, I"action")
+ KIT_PROVIDED(ACTIONCURRENTLYHAPPENINGFLAG_HL, I"ActionCurrentlyHappeningFlag")
+ KIT_PROVIDED(ACTOR_HL, I"actor")
+ KIT_PROVIDED(ACTOR_LOCATION_HL, I"actor_location")
+ KIT_PROVIDED(ALLOWINSHOWME_HL, I"AllowInShowme")
+ KIT_PROVIDED(ANIMATE_HL, I"animate")
+ KIT_PROVIDED(C_STYLE_HL, I"c_style")
+ KIT_PROVIDED(COMPONENT_CHILD_HL, I"component_child")
+ KIT_PROVIDED(COMPONENT_PARENT_HL, I"component_parent")
+ KIT_PROVIDED(COMPONENT_SIBLING_HL, I"component_sibling")
+ KIT_PROVIDED(CONSULT_FROM_HL, I"consult_from")
+ KIT_PROVIDED(CONSULT_WORDS_HL, I"consult_words")
+ KIT_PROVIDED(CONTAINER_HL, I"container")
+ KIT_PROVIDED(DA_NAME_HL, I"DA_Name")
+ KIT_PROVIDED(DEADFLAG_HL, I"deadflag")
+ KIT_PROVIDED(DEBUG_SCENES_HL, I"debug_scenes")
+ KIT_PROVIDED(DETECTPLURALWORD_HL, I"DetectPluralWord")
+ KIT_PROVIDED(DURINGSCENEMATCHING_HL, I"DuringSceneMatching")
+ KIT_PROVIDED(ELEMENTARY_TT_HL, I"ELEMENTARY_TT")
+ KIT_PROVIDED(ENGLISH_BIT_HL, I"ENGLISH_BIT")
+ KIT_PROVIDED(FOUND_EVERYWHERE_HL, I"FoundEverywhere")
+ KIT_PROVIDED(GENERICVERBSUB_HL, I"GenericVerbSub")
+ KIT_PROVIDED(GETGNAOFOBJECT_HL, I"GetGNAOfObject")
+ KIT_PROVIDED(GPR_FAIL_HL, I"GPR_FAIL")
+ KIT_PROVIDED(GPR_NUMBER_HL, I"GPR_NUMBER")
+ KIT_PROVIDED(GPR_PREPOSITION_HL, I"GPR_PREPOSITION")
+ KIT_PROVIDED(GPR_TT_HL, I"GPR_TT")
+ KIT_PROVIDED(INDENT_BIT_HL, I"INDENT_BIT")
+ KIT_PROVIDED(INP1_HL, I"inp1")
+ KIT_PROVIDED(INP2_HL, I"inp2")
+ KIT_PROVIDED(INVENTORY_STAGE_HL, I"inventory_stage")
+ KIT_PROVIDED(KEEP_SILENT_HL, I"keep_silent")
+ KIT_PROVIDED(LOCATION_HL, I"location")
+ KIT_PROVIDED(LOCATIONOF_HL, I"LocationOf")
+ KIT_PROVIDED(LOOPOVERSCOPE_HL, I"LoopOverScope")
+ KIT_PROVIDED(LOS_RV_HL, I"los_rv")
+ KIT_PROVIDED(NEWLINE_BIT_HL, I"NEWLINE_BIT")
+ KIT_PROVIDED(NOARTICLE_BIT_HL, I"NOARTICLE_BIT")
+ KIT_PROVIDED(NOUN_HL, I"noun")
+ KIT_PROVIDED(NUMBER_TY_TO_TIME_TY_HL, I"NUMBER_TY_to_TIME_TY")
+ KIT_PROVIDED(PARSED_NUMBER_HL, I"parsed_number")
+ KIT_PROVIDED(PARSER_ACTION_HL, I"parser_action")
+ KIT_PROVIDED(PARSER_ONE_HL, I"parser_one")
+ KIT_PROVIDED(PARSER_TRACE_HL, I"parser_trace")
+ KIT_PROVIDED(PARSER_TWO_HL, I"parser_two")
+ KIT_PROVIDED(PARSERERROR_HL, I"ParserError")
+ KIT_PROVIDED(PAST_CHRONOLOGICAL_RECORD_HL, I"past_chronological_record")
+ KIT_PROVIDED(PLACEINSCOPE_HL, I"PlaceInScope")
+ KIT_PROVIDED(PLAYER_HL, I"player")
+ KIT_PROVIDED(PLURALFOUND_HL, I"##PluralFound")
+ KIT_PROVIDED(PRESENT_CHRONOLOGICAL_RECORD_HL, I"present_chronological_record")
+ KIT_PROVIDED(REAL_LOCATION_HL, I"real_location")
+ KIT_PROVIDED(REASON_THE_ACTION_FAILED_HL, I"reason_the_action_failed")
+ KIT_PROVIDED(RESPONSEVIAACTIVITY_HL, I"ResponseViaActivity")
+ KIT_PROVIDED(ROUTINEFILTER_TT_HL, I"ROUTINE_FILTER_TT")
+ KIT_PROVIDED(SCENE_ENDED_HL, I"scene_ended")
+ KIT_PROVIDED(SCENE_ENDINGS_HL, I"scene_endings")
+ KIT_PROVIDED(SCENE_LATEST_ENDING_HL, I"scene_latest_ending")
+ KIT_PROVIDED(SCENE_STARTED_HL, I"scene_started")
+ KIT_PROVIDED(SCENE_STATUS_HL, I"scene_status")
+ KIT_PROVIDED(SCOPE_STAGE_HL, I"scope_stage")
+ KIT_PROVIDED(SCOPE_TT_HL, I"SCOPE_TT")
+ KIT_PROVIDED(SECOND_HL, I"second")
+ KIT_PROVIDED(SHORT_NAME_HL, I"short_name")
+ KIT_PROVIDED(SPECIAL_WORD_HL, I"special_word")
+ KIT_PROVIDED(STORED_ACTION_TY_CURRENT_HL, I"STORED_ACTION_TY_Current")
+ KIT_PROVIDED(STORED_ACTION_TY_TRY_HL, I"STORED_ACTION_TY_Try")
+ KIT_PROVIDED(STORY_TENSE_HL, I"story_tense")
+ KIT_PROVIDED(SUPPORTER_HL, I"supporter")
+ KIT_PROVIDED(SUPPRESS_SCOPE_LOOPS_HL, I"suppress_scope_loops")
+ KIT_PROVIDED(TESTACTIONBITMAP_HL, I"TestActionBitmap")
+ KIT_PROVIDED(TESTACTIVITY_HL, I"TestActivity")
+ KIT_PROVIDED(TESTREGIONALCONTAINMENT_HL, I"TestRegionalContainment")
+ KIT_PROVIDED(TESTSCOPE_HL, I"TestScope")
+ KIT_PROVIDED(TESTSTART_HL, I"TestStart")
+ KIT_PROVIDED(THE_TIME_HL, I"the_time")
+ KIT_PROVIDED(THEDARK_HL, I"thedark")
+ KIT_PROVIDED(THESAME_HL, I"##TheSame")
+ KIT_PROVIDED(TIMESACTIONHASBEENHAPPENING_HL, I"TimesActionHasBeenHappening")
+ KIT_PROVIDED(TIMESACTIONHASHAPPENED_HL, I"TimesActionHasHappened")
+ KIT_PROVIDED(TRYACTION_HL, I"TryAction")
+ KIT_PROVIDED(TURNSACTIONHASBEENHAPPENING_HL, I"TurnsActionHasBeenHappening")
+ KIT_PROVIDED(UNDERSTAND_AS_MISTAKE_NUMBER_HL, I"understand_as_mistake_number")
+ KIT_PROVIDED(WHEN_SCENE_BEGINS_HL, I"WHEN_SCENE_BEGINS_RB")
+ KIT_PROVIDED(WHEN_SCENE_ENDS_HL, I"WHEN_SCENE_ENDS_RB")
+ KIT_PROVIDED(WN_HL, I"wn")
+
+@
+
+@e PNTOVP_HL
+@e PRINTSHORTNAME_HL
+
+@ =
+ KIT_PROVIDED(PNTOVP_HL, I"PNToVP")
+ KIT_PROVIDED(PRINTSHORTNAME_HL, I"PrintShortName")
+
+@
+
+@e THEN1__WD_HL
+
+@ =
+ KIT_PROVIDED(THEN1__WD_HL, I"THEN1__WD")
diff --git a/inter/pipeline-module/Chapter 5/Actions.w b/inter/pipeline-module/Chapter 5/Actions.w
index b010c8d26..677bc6185 100644
--- a/inter/pipeline-module/Chapter 5/Actions.w
+++ b/inter/pipeline-module/Chapter 5/Actions.w
@@ -18,7 +18,7 @@ of packages of type |_action|.
=
void SynopticActions::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->action_nodes) > 0) {
- TreeLists::sort(inv->action_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->action_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; iaction_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->action_nodes->list[i].node);
inter_tree_node *D = Synoptic::get_definition(pack, I"action_id");
diff --git a/inter/pipeline-module/Chapter 5/Activities.w b/inter/pipeline-module/Chapter 5/Activities.w
index 1292ae18a..4dfc414e0 100644
--- a/inter/pipeline-module/Chapter 5/Activities.w
+++ b/inter/pipeline-module/Chapter 5/Activities.w
@@ -11,7 +11,7 @@ of packages of type |_activity|.
=
void SynopticActivities::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->activity_nodes) > 0) {
- TreeLists::sort(inv->activity_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->activity_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; iactivity_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->activity_nodes->list[i].node);
inter_tree_node *D = Synoptic::get_definition(pack, I"activity_id");
diff --git a/inter/pipeline-module/Chapter 5/Chronology.w b/inter/pipeline-module/Chapter 5/Chronology.w
index 836ffcfc5..3d3ed9cad 100644
--- a/inter/pipeline-module/Chapter 5/Chronology.w
+++ b/inter/pipeline-module/Chapter 5/Chronology.w
@@ -11,7 +11,7 @@ over the Inter tree. Each needs its own set of unique IDs.
=
void SynopticChronology::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->action_history_condition_nodes) > 0) {
- TreeLists::sort(inv->action_history_condition_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->action_history_condition_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; iaction_history_condition_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->action_history_condition_nodes->list[i].node);
inter_tree_node *D = Synoptic::get_definition(pack, I"ahc_id");
@@ -19,7 +19,7 @@ void SynopticChronology::compile(inter_tree *I, pipeline_step *step, tree_invent
}
}
if (TreeLists::len(inv->past_tense_condition_nodes) > 0) {
- TreeLists::sort(inv->past_tense_condition_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->past_tense_condition_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; ipast_tense_condition_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->past_tense_condition_nodes->list[i].node);
inter_tree_node *D = Synoptic::get_definition(pack, I"ptc_id");
diff --git a/inter/pipeline-module/Chapter 5/Extensions.w b/inter/pipeline-module/Chapter 5/Extensions.w
index d38c5c662..eed599fde 100644
--- a/inter/pipeline-module/Chapter 5/Extensions.w
+++ b/inter/pipeline-module/Chapter 5/Extensions.w
@@ -5,27 +5,31 @@ To renumber the extensions and construct suitable functions and arrays.
@ Before this runs, there are one or more modules in the Inter tree which
contain the material compiled from extensions. We must allocate each one a unique ID.
-As this is called, //Synoptic Utilities// has already formed a list |extension_nodes|
-of packages of type |_module| which derive from extensions.
+Our inventory |inv| already contains a list |inv->extension_nodes| of packages
+with the type |_module| which derive from extensions.
=
void SynopticExtensions::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
- if (TreeLists::len(inv->extension_nodes) > 0) {
- TreeLists::sort(inv->extension_nodes, Synoptic::category_order);
- for (int i=0; iextension_nodes); i++) {
- inter_package *pack = Inter::Package::defined_by_frame(inv->extension_nodes->list[i].node);
- inter_tree_node *D = Synoptic::get_definition(pack, I"extension_id");
- D->W.data[DATA_CONST_IFLD+1] = (inter_ti) (i + 1);
- }
- }
+ if (TreeLists::len(inv->extension_nodes) > 0) @;
@;
@;
@;
}
-@ Extensions have an obvious effect at runtime -- they include extra material.
-But there are also just three functions which deal with extensions as if
-they were values; all of them simply print credits out.
+@ Each extension module contains a numeric constant with the symbol name |extension_id|.
+We want to ensure that these ID numbers are contiguous from 1 and never duplicated,
+so we change the values of these constants accordingly.
+
+@ =
+ TreeLists::sort(inv->extension_nodes, MakeSynopticModuleStage::category_order);
+ for (int i=0; iextension_nodes); i++) {
+ inter_package *pack =
+ Inter::Package::defined_by_frame(inv->extension_nodes->list[i].node);
+ inter_tree_node *D = Synoptic::get_definition(pack, I"extension_id");
+ D->W.data[DATA_CONST_IFLD+1] = (inter_ti) (i + 1);
+ }
+
+@ Now we compile three functions, each of which simply prints credits out.
This is more important than it may sound because many extensions are published
under a Creative Commons attribution license which requires users to give credit
@@ -45,7 +49,8 @@ would violate the CC license.
inter_name *iname = HierarchyLocations::find(I, SHOWEXTENSIONVERSIONS_HL);
Synoptic::begin_function(I, iname);
for (int i=0; iextension_nodes); i++) {
- inter_package *pack = Inter::Package::defined_by_frame(inv->extension_nodes->list[i].node);
+ inter_package *pack =
+ Inter::Package::defined_by_frame(inv->extension_nodes->list[i].node);
inter_ti modesty = Metadata::read_numeric(pack, I"^modesty");
if (modesty == 0) {
text_stream *credit = Str::duplicate(Metadata::read_textual(pack, I"^credit"));
@@ -75,7 +80,8 @@ would violate the CC license.
Synoptic::end_function(I, step, iname);
@ This prints the name of a single extension, identified by a value which
-is its extension ID.
+is its extension ID. Speed of execution here is quite unimportant, so it's
+just a run of |if (id == 1) ...|, then |if (id == 2) ...|, and so on.
@ =
inter_name *iname = HierarchyLocations::find(I, SHOWONEEXTENSION_HL);
diff --git a/inter/pipeline-module/Chapter 5/Instances.w b/inter/pipeline-module/Chapter 5/Instances.w
index e492cb3b5..796a6d3dd 100644
--- a/inter/pipeline-module/Chapter 5/Instances.w
+++ b/inter/pipeline-module/Chapter 5/Instances.w
@@ -12,7 +12,7 @@ This section is a placeholder for now.
=
void SynopticInstances::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->instance_nodes) > 0) {
- TreeLists::sort(inv->instance_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->instance_nodes, MakeSynopticModuleStage::module_order);
}
@
}
diff --git a/inter/pipeline-module/Chapter 5/Kinds.w b/inter/pipeline-module/Chapter 5/Kinds.w
index c5077a67b..5fab6faf9 100644
--- a/inter/pipeline-module/Chapter 5/Kinds.w
+++ b/inter/pipeline-module/Chapter 5/Kinds.w
@@ -11,7 +11,7 @@ of packages of type |_kind|, and similarly for |derived_kind_nodes|.
=
void SynopticKinds::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->kind_nodes) > 0) {
- TreeLists::sort(inv->kind_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->kind_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; ikind_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->kind_nodes->list[i].node);
inter_symbol *id_s = Metadata::read_optional_symbol(pack, I"^strong_id");
@@ -19,7 +19,7 @@ void SynopticKinds::compile(inter_tree *I, pipeline_step *step, tree_inventory *
}
}
if (TreeLists::len(inv->derived_kind_nodes) > 0) {
- TreeLists::sort(inv->derived_kind_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->derived_kind_nodes, MakeSynopticModuleStage::module_order);
}
@;
@;
diff --git a/inter/pipeline-module/Chapter 5/Literal Text.w b/inter/pipeline-module/Chapter 5/Literal Text.w
index fbdb9e5c5..20310a86e 100644
--- a/inter/pipeline-module/Chapter 5/Literal Text.w
+++ b/inter/pipeline-module/Chapter 5/Literal Text.w
@@ -57,7 +57,7 @@ this will be executed on the first |"apple"|, on |"banana"| and the first
WRITE_TO(A, "alphabetised_text_%d", j++);
inter_symbol *alpha_s = Synoptic::new_symbol(texts_pack, A);
DISCARD_TEXT(A)
- Synoptic::def_textual_constant(I, step, alpha_s, S, &IBM);
+ Synoptic::textual_constant(I, step, alpha_s, S, &IBM);
latest_s = alpha_s;
latest_text = S;
diff --git a/inter/pipeline-module/Chapter 5/Make Synoptic Module Stage.w b/inter/pipeline-module/Chapter 5/Make Synoptic Module Stage.w
index d6e79ea2f..31e6d2b0f 100644
--- a/inter/pipeline-module/Chapter 5/Make Synoptic Module Stage.w
+++ b/inter/pipeline-module/Chapter 5/Make Synoptic Module Stage.w
@@ -2,7 +2,12 @@
Creating a top-level module of synoptic resources.
-@
+@ At this point the tree contains one module for each compilation unit included
+in the link: which is a fancy way of saying, it contains one module for the
+main source text, ohe for each extension, and one each for each kit included.
+
+We now add one final module, |/main/synoptic|, which contains resources compiled
+together from all of the others.
=
void MakeSynopticModuleStage::create_pipeline_stage(void) {
@@ -12,7 +17,10 @@ void MakeSynopticModuleStage::create_pipeline_stage(void) {
int MakeSynopticModuleStage::run(pipeline_step *step) {
inter_tree *I = step->ephemera.repository;
- tree_inventory *inv = Synoptic::inv(I);
+ tree_inventory *inv = MakeSynopticModuleStage::take_inventory_cached(I);
+
+ SynopticHierarchy::establish(I); /* in case this has not already been done */
+ KitHierarchy::establish(I); /* likewise */
SynopticText::compile(I, step, inv);
SynopticActions::compile(I, step, inv);
@@ -35,3 +43,220 @@ int MakeSynopticModuleStage::run(pipeline_step *step) {
Wiring::connect_plugs_to_sockets(I);
return TRUE;
}
+
+@ The inventory for an Inter tree is an itemisation of packages with particular
+types: for example, we can ask it to hold a list of |_activity| packages.
+
+=
+typedef struct tree_inventory {
+ struct inter_tree *of_tree;
+ struct linked_list *items; /* of |tree_inventory_item| */
+ inter_tree_location_list *text_nodes;
+ inter_tree_location_list *module_nodes;
+ inter_tree_location_list *response_nodes;
+ inter_tree_location_list *rulebook_nodes;
+ inter_tree_location_list *rule_nodes;
+ inter_tree_location_list *activity_nodes;
+ inter_tree_location_list *action_nodes;
+ inter_tree_location_list *property_nodes;
+ inter_tree_location_list *extension_nodes;
+ inter_tree_location_list *relation_nodes;
+ inter_tree_location_list *table_nodes;
+ inter_tree_location_list *table_column_nodes;
+ inter_tree_location_list *table_column_usage_nodes;
+ inter_tree_location_list *action_history_condition_nodes;
+ inter_tree_location_list *past_tense_condition_nodes;
+ inter_tree_location_list *instance_nodes;
+ inter_tree_location_list *scene_nodes;
+ inter_tree_location_list *file_nodes;
+ inter_tree_location_list *figure_nodes;
+ inter_tree_location_list *sound_nodes;
+ inter_tree_location_list *use_option_nodes;
+ inter_tree_location_list *verb_nodes;
+ inter_tree_location_list *modal_verb_nodes;
+ inter_tree_location_list *verb_form_nodes;
+ inter_tree_location_list *preposition_nodes;
+ inter_tree_location_list *adjective_nodes;
+ inter_tree_location_list *derived_kind_nodes;
+ inter_tree_location_list *kind_nodes;
+ inter_tree_location_list *test_nodes;
+ inter_tree_location_list *named_action_pattern_nodes;
+ inter_tree_location_list *variable_nodes;
+ inter_tree_location_list *equation_nodes;
+ inter_tree_location_list *heading_nodes;
+ inter_tree_location_list *multiplication_rule_nodes;
+ CLASS_DEFINITION
+} tree_inventory;
+
+typedef struct tree_inventory_item {
+ struct inter_tree_location_list *node_list;
+ struct inter_symbol *required_ptype;
+ CLASS_DEFINITION
+} tree_inventory_item;
+
+@ Creating one of these is quick enough: when created, it's just a list of
+requirements.
+
+=
+tree_inventory *MakeSynopticModuleStage::new_inventory(inter_tree *I) {
+ tree_inventory *inv = CREATE(tree_inventory);
+ inv->of_tree = I;
+ inv->items = NEW_LINKED_LIST(tree_inventory_item);
+ inv->text_nodes = TreeLists::new();
+
+ inv->response_nodes = MakeSynopticModuleStage::needs(inv, I"_response");
+ inv->rulebook_nodes = MakeSynopticModuleStage::needs(inv, I"_rulebook");
+ inv->rule_nodes = MakeSynopticModuleStage::needs(inv, I"_rule");
+ inv->activity_nodes = MakeSynopticModuleStage::needs(inv, I"_activity");
+ inv->action_nodes = MakeSynopticModuleStage::needs(inv, I"_action");
+ inv->property_nodes = MakeSynopticModuleStage::needs(inv, I"_property");
+ inv->relation_nodes = MakeSynopticModuleStage::needs(inv, I"_relation");
+ inv->table_nodes = MakeSynopticModuleStage::needs(inv, I"_table");
+ inv->table_column_nodes = MakeSynopticModuleStage::needs(inv, I"_table_column");
+ inv->table_column_usage_nodes = MakeSynopticModuleStage::needs(inv, I"_table_column_usage");
+ inv->action_history_condition_nodes = MakeSynopticModuleStage::needs(inv, I"_action_history_condition");
+ inv->past_tense_condition_nodes = MakeSynopticModuleStage::needs(inv, I"_past_condition");
+ inv->use_option_nodes = MakeSynopticModuleStage::needs(inv, I"_use_option");
+ inv->verb_nodes = MakeSynopticModuleStage::needs(inv, I"_verb");
+ inv->modal_verb_nodes = MakeSynopticModuleStage::needs(inv, I"_modal_verb");
+ inv->verb_form_nodes = MakeSynopticModuleStage::needs(inv, I"_verb_form");
+ inv->preposition_nodes = MakeSynopticModuleStage::needs(inv, I"_preposition");
+ inv->adjective_nodes = MakeSynopticModuleStage::needs(inv, I"_adjective");
+ inv->derived_kind_nodes = MakeSynopticModuleStage::needs(inv, I"_derived_kind");
+ inv->kind_nodes = MakeSynopticModuleStage::needs(inv, I"_kind");
+ inv->module_nodes = MakeSynopticModuleStage::needs(inv, I"_module");
+ inv->instance_nodes = MakeSynopticModuleStage::needs(inv, I"_instance");
+ inv->test_nodes = MakeSynopticModuleStage::needs(inv, I"_test");
+ inv->named_action_pattern_nodes = MakeSynopticModuleStage::needs(inv, I"_named_action_pattern");
+ inv->variable_nodes = MakeSynopticModuleStage::needs(inv, I"_variable");
+ inv->equation_nodes = MakeSynopticModuleStage::needs(inv, I"_equation");
+ inv->heading_nodes = MakeSynopticModuleStage::needs(inv, I"_heading");
+ inv->multiplication_rule_nodes = MakeSynopticModuleStage::needs(inv, I"_multiplication_rule");
+
+ inv->extension_nodes = TreeLists::new();
+ inv->scene_nodes = TreeLists::new();
+ inv->file_nodes = TreeLists::new();
+ inv->figure_nodes = TreeLists::new();
+ inv->sound_nodes = TreeLists::new();
+ return inv;
+}
+
+inter_tree_location_list *MakeSynopticModuleStage::needs(tree_inventory *inv, text_stream *pt) {
+ tree_inventory_item *item = CREATE(tree_inventory_item);
+ item->node_list = TreeLists::new();
+ item->required_ptype = PackageTypes::get(inv->of_tree, pt);
+ ADD_TO_LINKED_LIST(item, tree_inventory_item, inv->items);
+ return item->node_list;
+}
+
+@ The expensive part comes later, when we traverse the Inter tree and add
+interesting packages to one of the lists.
+
+=
+tree_inventory *MakeSynopticModuleStage::take_inventory(inter_tree *I) {
+ tree_inventory *inv = MakeSynopticModuleStage::new_inventory(I);
+ InterTree::traverse(I, MakeSynopticModuleStage::visitor, inv, NULL, 0);
+ for (int i=0; imodule_nodes); i++) {
+ inter_package *pack = Inter::Package::defined_by_frame(inv->module_nodes->list[i].node);
+ if (InterSymbolsTables::symbol_from_name(Inter::Packages::scope(pack), I"extension_id"))
+ TreeLists::add(inv->extension_nodes, inv->module_nodes->list[i].node);
+ }
+ for (int i=0; iinstance_nodes); i++) {
+ inter_package *pack = Inter::Package::defined_by_frame(inv->instance_nodes->list[i].node);
+ if (Metadata::exists(pack, I"^is_scene"))
+ TreeLists::add(inv->scene_nodes, inv->instance_nodes->list[i].node);
+ if (Metadata::exists(pack, I"^is_file"))
+ TreeLists::add(inv->file_nodes, inv->instance_nodes->list[i].node);
+ if (Metadata::exists(pack, I"^is_figure"))
+ TreeLists::add(inv->figure_nodes, inv->instance_nodes->list[i].node);
+ if (Metadata::exists(pack, I"^is_sound"))
+ TreeLists::add(inv->sound_nodes, inv->instance_nodes->list[i].node);
+ }
+ return inv;
+}
+
+void MakeSynopticModuleStage::visitor(inter_tree *I, inter_tree_node *P, void *state) {
+ tree_inventory *inv = (tree_inventory *) state;
+ if (P->W.data[ID_IFLD] == CONSTANT_IST) {
+ inter_symbol *con_s =
+ InterSymbolsTables::symbol_from_frame_data(P, DEFN_CONST_IFLD);
+ if (Inter::Symbols::read_annotation(con_s, TEXT_LITERAL_IANN) == 1)
+ TreeLists::add(inv->text_nodes, P);
+ }
+ if (P->W.data[ID_IFLD] == PACKAGE_IST) {
+ inter_package *pack = Inter::Package::defined_by_frame(P);
+ inter_symbol *ptype = Inter::Packages::type(pack);
+ if (ptype == PackageTypes::get(I, I"_kind")) {
+ LOG("Inside $6:\n", pack);
+ inter_symbols_table *ST = Inter::Packages::scope(pack);
+ for (int i=0; isize; i++) {
+ inter_symbol *S = ST->symbol_array[i];
+ if ((S) && (S->wiring.no_connections > 0))
+ LOG("I observe $3 (%d)\n", S, S->wiring.no_connections);
+ }
+ }
+ tree_inventory_item *item;
+ LOOP_OVER_LINKED_LIST(item, tree_inventory_item, inv->items)
+ if (ptype == item->required_ptype) {
+ TreeLists::add(item->node_list, P);
+ break;
+ }
+ }
+}
+
+@ Calling //MakeSynopticModuleStage::take_inventory// is potentially slow, so
+we also offer a version which caches the results:
+
+=
+tree_inventory *cached_inventory = NULL;
+inter_tree *cache_is_for = NULL;
+tree_inventory *MakeSynopticModuleStage::take_inventory_cached(inter_tree *I) {
+ if (cache_is_for == I) return cached_inventory;
+ cache_is_for = I;
+ cached_inventory = MakeSynopticModuleStage::take_inventory(I);
+ return cached_inventory;
+}
+
+@ The following are used for sorting.
+
+=
+int MakeSynopticModuleStage::module_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 *mod1 = MakeSynopticModuleStage::module_containing(P1);
+ inter_package *mod2 = MakeSynopticModuleStage::module_containing(P2);
+ inter_ti C1 = Metadata::read_optional_numeric(mod1, I"^category");
+ inter_ti C2 = Metadata::read_optional_numeric(mod2, I"^category");
+ int d = ((int) C2) - ((int) C1); /* larger values sort earlier */
+ if (d != 0) return d;
+ return E1->sort_key - E2->sort_key; /* smaller values sort earlier */
+}
+
+int MakeSynopticModuleStage::category_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 *mod1 = Inter::Packages::container(P1);
+ inter_package *mod2 = Inter::Packages::container(P2);
+ inter_ti C1 = Metadata::read_optional_numeric(mod1, I"^category");
+ inter_ti C2 = Metadata::read_optional_numeric(mod2, I"^category");
+ int d = ((int) C2) - ((int) C1); /* larger values sort earlier */
+ if (d != 0) return d;
+ return E1->sort_key - E2->sort_key; /* smaller values sort earlier */
+}
+
+inter_package *MakeSynopticModuleStage::module_containing(inter_tree_node *P) {
+ inter_package *pack = Inter::Packages::container(P);
+ inter_tree *I = Inter::Packages::tree(pack);
+ while (pack) {
+ inter_symbol *ptype = Inter::Packages::type(pack);
+ if (ptype == PackageTypes::get(I, I"_module")) return pack;
+ pack = Inter::Packages::parent(pack);
+ }
+ return NULL;
+}
diff --git a/inter/pipeline-module/Chapter 5/Multimedia.w b/inter/pipeline-module/Chapter 5/Multimedia.w
index c6ea8ea11..74447fbbe 100644
--- a/inter/pipeline-module/Chapter 5/Multimedia.w
+++ b/inter/pipeline-module/Chapter 5/Multimedia.w
@@ -11,13 +11,13 @@ of instances having the kind |K_sound_name|, and so on.
=
void SynopticMultimedia::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->figure_nodes) > 0) {
- TreeLists::sort(inv->figure_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->figure_nodes, MakeSynopticModuleStage::module_order);
}
if (TreeLists::len(inv->sound_nodes) > 0) {
- TreeLists::sort(inv->sound_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->sound_nodes, MakeSynopticModuleStage::module_order);
}
if (TreeLists::len(inv->file_nodes) > 0) {
- TreeLists::sort(inv->file_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->file_nodes, MakeSynopticModuleStage::module_order);
}
@;
@;
diff --git a/inter/pipeline-module/Chapter 5/Properties.w b/inter/pipeline-module/Chapter 5/Properties.w
index ee7a58f19..7fc7eb5f7 100644
--- a/inter/pipeline-module/Chapter 5/Properties.w
+++ b/inter/pipeline-module/Chapter 5/Properties.w
@@ -11,7 +11,7 @@ of packages of type |_activity|.
=
void SynopticProperties::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->property_nodes) > 0) {
- TreeLists::sort(inv->property_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->property_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; iproperty_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->property_nodes->list[i].node);
inter_tree_node *D = Synoptic::get_definition(pack, I"property_id");
diff --git a/inter/pipeline-module/Chapter 5/Relations.w b/inter/pipeline-module/Chapter 5/Relations.w
index b55e775a8..0108e20cc 100644
--- a/inter/pipeline-module/Chapter 5/Relations.w
+++ b/inter/pipeline-module/Chapter 5/Relations.w
@@ -11,7 +11,7 @@ of packages of type |_relation|.
=
void SynopticRelations::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->relation_nodes) > 0) {
- TreeLists::sort(inv->relation_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->relation_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; irelation_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->relation_nodes->list[i].node);
inter_tree_node *D = Synoptic::get_definition(pack, I"relation_id");
diff --git a/inter/pipeline-module/Chapter 5/Rules.w b/inter/pipeline-module/Chapter 5/Rules.w
index 1faf94ce2..2c618d997 100644
--- a/inter/pipeline-module/Chapter 5/Rules.w
+++ b/inter/pipeline-module/Chapter 5/Rules.w
@@ -11,7 +11,7 @@ of packages of type |_rulebook|; and similarly for |rule_nodes|.
=
void SynopticRules::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->rulebook_nodes) > 0) {
- TreeLists::sort(inv->rulebook_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->rulebook_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; irulebook_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->rulebook_nodes->list[i].node);
inter_tree_node *D = Synoptic::get_definition(pack, I"rulebook_id");
diff --git a/inter/pipeline-module/Chapter 5/Scenes.w b/inter/pipeline-module/Chapter 5/Scenes.w
index 1be326a07..3d91e7c27 100644
--- a/inter/pipeline-module/Chapter 5/Scenes.w
+++ b/inter/pipeline-module/Chapter 5/Scenes.w
@@ -10,7 +10,7 @@ of instances having the kind |K_scene|.
=
void SynopticScenes::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->scene_nodes) > 0) {
- TreeLists::sort(inv->scene_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->scene_nodes, MakeSynopticModuleStage::module_order);
}
@;
@;
diff --git a/inter/pipeline-module/Chapter 5/Synoptic Hierarchy.w b/inter/pipeline-module/Chapter 5/Synoptic Hierarchy.w
index 875809c5a..98175655e 100644
--- a/inter/pipeline-module/Chapter 5/Synoptic Hierarchy.w
+++ b/inter/pipeline-module/Chapter 5/Synoptic Hierarchy.w
@@ -2,61 +2,66 @@
The layout and naming conventions for the contents of the main/synoptic module.
-@
+@ This section gives a map of what resources will be made in the synoptic
+module. The definitions here enable code generated by //inform7// or //inter//
+to call functions or use constants defined in the synoptic module, and also
+allow them to be referred to from kits linked in.
+
+Because the synoptic module exists only to provide resources, this section is
+in effect a specification for it.
=
-int SynopticHierarchy_established = FALSE;
void SynopticHierarchy::establish(inter_tree *I) {
- if (SynopticHierarchy_established) return;
- SynopticHierarchy_established = TRUE;
+ if (I->history_bits & SYNOPTIC_HIERARCHY_MADE_ITHBIT) return;
+ I->history_bits |= SYNOPTIC_HIERARCHY_MADE_ITHBIT;
location_requirement req;
- @;
- @;
- @;
- @;
- @;
- @;
- @;
- @;
- @;
- @;
- @;
- @;
- @;
- @;
- @;
- @;
- @;
+ @;
+ @;
+ @;
+ @;
+ @;
+ @;
+ @;
+ @;
+ @;
+ @;
+ @;
+ @;
+ @;
+ @;
+ @;
+ @;
}
-@
+@ The notation here is a little cryptic, but see //runtime: Hierarchy// for a
+fuller explanation.
-@d SYN_SUBMD(r) req = HierarchyLocations::synoptic_submodule(I, Packaging::register_submodule(r));
+@d SYN_SUBMD(r)
+ req = HierarchyLocations::synoptic_submodule(I, Packaging::register_submodule(r));
@d SYN_CONST(id, n) {
- HierarchyLocations::ctr(I, id, n, Translation::same(), req);
+ HierarchyLocations::ctr(I, id, n, Translation::same(), req);
inter_name *iname = HierarchyLocations::find(I, id);
inter_symbol *S = InterNames::to_symbol(iname);
Wiring::socket(I, InterNames::to_text(iname), S);
}
@d SYN_FUNCT(id, n, t) {
- HierarchyLocations::fun(I, id, n, Translation::to(t), req);
+ HierarchyLocations::fun(I, id, n, Translation::to(t), req);
inter_name *iname = HierarchyLocations::find(I, id);
inter_symbol *S = InterNames::to_symbol(iname);
Wiring::socket(I, Produce::get_translation(iname), S);
}
-@d KIT_PROVIDED(id, n)
- HierarchyLocations::ctr(I, id, n, Translation::same(), req);
@h Actions.
+The |/main/synoptic/actions| submodule.
-@e ACTIONCODING_HL from 0
+@e ACTIONCODING_HL
@e ACTIONDATA_HL
@e ACTIONHAPPENED_HL
@e AD_RECORDS_HL
@e CCOUNT_ACTION_NAME_HL
@e DB_ACTION_DETAILS_HL
-@ =
+@ =
SYN_SUBMD(I"actions")
SYN_CONST(ACTIONCODING_HL, I"ActionCoding")
SYN_CONST(ACTIONDATA_HL, I"ActionData")
@@ -66,6 +71,7 @@ void SynopticHierarchy::establish(inter_tree *I) {
SYN_FUNCT(DB_ACTION_DETAILS_HL, I"DB_Action_Details_fn", I"DB_Action_Details")
@h Activities.
+The |/main/synoptic/activities| submodule.
@e ACTIVITY_AFTER_RULEBOOKS_HL
@e ACTIVITY_ATB_RULEBOOKS_HL
@@ -73,7 +79,7 @@ void SynopticHierarchy::establish(inter_tree *I) {
@e ACTIVITY_FOR_RULEBOOKS_HL
@e ACTIVITY_VAR_CREATORS_HL
-@ =
+@ =
SYN_SUBMD(I"activities")
SYN_CONST(ACTIVITY_AFTER_RULEBOOKS_HL, I"Activity_after_rulebooks")
SYN_CONST(ACTIVITY_ATB_RULEBOOKS_HL, I"Activity_atb_rulebooks")
@@ -82,6 +88,7 @@ void SynopticHierarchy::establish(inter_tree *I) {
SYN_CONST(ACTIVITY_VAR_CREATORS_HL, I"activity_var_creators")
@h Chronology.
+The |/main/synoptic/chronology| submodule.
@e TIMEDEVENTSTABLE_HL
@e TIMEDEVENTTIMESTABLE_HL
@@ -90,7 +97,7 @@ void SynopticHierarchy::establish(inter_tree *I) {
@e NO_PAST_TENSE_ACTIONS_HL
@e TESTSINGLEPASTSTATE_HL
-@ =
+@ =
SYN_SUBMD(I"chronology")
SYN_CONST(TIMEDEVENTSTABLE_HL, I"TimedEventsTable")
SYN_CONST(TIMEDEVENTTIMESTABLE_HL, I"TimedEventTimesTable")
@@ -100,34 +107,38 @@ void SynopticHierarchy::establish(inter_tree *I) {
SYN_FUNCT(TESTSINGLEPASTSTATE_HL, I"test_fn", I"TestSinglePastState")
@h Conjugations.
+The |/main/synoptic/conjugations| submodule.
@e TABLEOFVERBS_HL
-@ =
+@ =
SYN_SUBMD(I"conjugations")
SYN_CONST(TABLEOFVERBS_HL, I"TableOfVerbs")
@h Extensions.
+The |/main/synoptic/extensions| submodule.
@e SHOWEXTENSIONVERSIONS_HL
@e SHOWFULLEXTENSIONVERSIONS_HL
@e SHOWONEEXTENSION_HL
-@ =
+@ =
SYN_SUBMD(I"extensions")
SYN_FUNCT(SHOWEXTENSIONVERSIONS_HL, I"showextensionversions_fn", I"ShowExtensionVersions")
SYN_FUNCT(SHOWFULLEXTENSIONVERSIONS_HL, I"showfullextensionversions_fn", I"ShowFullExtensionVersions")
SYN_FUNCT(SHOWONEEXTENSION_HL, I"showoneextension_fn", I"ShowOneExtension")
@h Instances.
+The |/main/synoptic/instances| submodule.
@e SHOWMEINSTANCEDETAILS_HL
-@ =
+@ =
SYN_SUBMD(I"instances")
SYN_FUNCT(SHOWMEINSTANCEDETAILS_HL, I"showmeinstancedetails_fn", I"ShowMeInstanceDetails")
@h Kinds.
+The |/main/synoptic/kinds| submodule.
@e DEFAULTVALUEOFKOV_HL
@e DEFAULTVALUEFINDER_HL
@@ -142,7 +153,7 @@ void SynopticHierarchy::establish(inter_tree *I) {
@e RUCKSACK_CLASS_HL
@e KINDHIERARCHY_HL
-@ =
+@ =
SYN_SUBMD(I"kinds")
SYN_CONST(BASE_KIND_HWM_HL, I"BASE_KIND_HWM")
SYN_FUNCT(DEFAULTVALUEOFKOV_HL, I"defaultvalue_fn", I"DefaultValueOfKOV")
@@ -158,13 +169,14 @@ void SynopticHierarchy::establish(inter_tree *I) {
SYN_CONST(KINDHIERARCHY_HL, I"KindHierarchy")
@h Multimedia.
+The |/main/synoptic/multimedia| submodule.
@e RESOURCEIDSOFFIGURES_HL
@e RESOURCEIDSOFSOUNDS_HL
@e NO_EXTERNAL_FILES_HL
@e TABLEOFEXTERNALFILES_HL
-@ =
+@ =
SYN_SUBMD(I"multimedia")
SYN_CONST(RESOURCEIDSOFFIGURES_HL, I"ResourceIDsOfFigures")
SYN_CONST(RESOURCEIDSOFSOUNDS_HL, I"ResourceIDsOfSounds")
@@ -172,21 +184,23 @@ void SynopticHierarchy::establish(inter_tree *I) {
SYN_CONST(TABLEOFEXTERNALFILES_HL, I"TableOfExternalFiles")
@h Properties.
+The |/main/synoptic/properties| submodule.
@e CCOUNT_PROPERTY_HL
-@ =
+@ =
SYN_SUBMD(I"properties")
SYN_CONST(CCOUNT_PROPERTY_HL, I"CCOUNT_PROPERTY")
@h Relations.
+The |/main/synoptic/relations| submodule.
@e CREATEDYNAMICRELATIONS_HL
@e CCOUNT_BINARY_PREDICATE_HL
@e ITERATERELATIONS_HL
@e RPROPERTY_HL
-@ =
+@ =
SYN_SUBMD(I"relations")
SYN_FUNCT(CREATEDYNAMICRELATIONS_HL, I"creator_fn", I"CreateDynamicRelations")
SYN_CONST(CCOUNT_BINARY_PREDICATE_HL, I"CCOUNT_BINARY_PREDICATE")
@@ -194,6 +208,7 @@ void SynopticHierarchy::establish(inter_tree *I) {
SYN_FUNCT(RPROPERTY_HL, I"property_fn", I"RProperty")
@h Rulebooks.
+The |/main/synoptic/rulebooks| submodule.
@e NUMBER_RULEBOOKS_CREATED_HL
@e RULEBOOK_VAR_CREATORS_HL
@@ -201,7 +216,7 @@ void SynopticHierarchy::establish(inter_tree *I) {
@e RULEBOOKS_ARRAY_HL
@e RULEBOOKNAMES_HL
-@ =
+@ =
SYN_SUBMD(I"rulebooks")
SYN_CONST(NUMBER_RULEBOOKS_CREATED_HL, I"NUMBER_RULEBOOKS_CREATED")
SYN_CONST(RULEBOOK_VAR_CREATORS_HL, I"rulebook_var_creators")
@@ -210,6 +225,7 @@ void SynopticHierarchy::establish(inter_tree *I) {
SYN_CONST(RULEBOOKNAMES_HL, I"RulebookNames")
@h Rules.
+The |/main/synoptic/rules| and |/main/synoptic/responses| submodule.
@e RULEPRINTINGRULE_HL
@@ -218,7 +234,7 @@ void SynopticHierarchy::establish(inter_tree *I) {
@e RESPONSEDIVISIONS_HL
@e PRINT_RESPONSE_HL
-@ =
+@ =
SYN_SUBMD(I"rules")
SYN_FUNCT(RULEPRINTINGRULE_HL, I"print_fn", I"RulePrintingRule")
@@ -229,16 +245,18 @@ void SynopticHierarchy::establish(inter_tree *I) {
SYN_FUNCT(PRINT_RESPONSE_HL, I"print_fn", I"PrintResponse")
@h Scenes.
+The |/main/synoptic/scenes| submodule.
@e SHOWSCENESTATUS_HL
@e DETECTSCENECHANGE_HL
-@ =
+@ =
SYN_SUBMD(I"scenes")
SYN_FUNCT(SHOWSCENESTATUS_HL, I"show_scene_status_fn", I"ShowSceneStatus")
SYN_FUNCT(DETECTSCENECHANGE_HL, I"detect_scene_change_fn", I"DetectSceneChange")
@h Tables.
+The |/main/synoptic/tables| submodule.
@e PRINT_TABLE_HL
@e TABLEOFTABLES_HL
@@ -247,7 +265,7 @@ void SynopticHierarchy::establish(inter_tree *I) {
@e TC_KOV_HL
-@ =
+@ =
SYN_SUBMD(I"tables")
SYN_FUNCT(PRINT_TABLE_HL, I"print_fn", I"PrintTableName")
SYN_CONST(TABLEOFTABLES_HL, I"TableOfTables")
@@ -258,510 +276,23 @@ void SynopticHierarchy::establish(inter_tree *I) {
SYN_FUNCT(TC_KOV_HL, I"weak_kind_ID_of_column_entry_fn", I"TC_KOV")
@h Tests.
+The |/main/synoptic/tests| submodule.
@e TESTSCRIPTSUB_HL
-@ =
+@ =
SYN_SUBMD(I"tests")
SYN_FUNCT(TESTSCRIPTSUB_HL, I"TestScriptSub_fn", I"TestScriptSub")
@h Use options.
+The |/main/synoptic/use_options| submodule.
@e NO_USE_OPTIONS_HL
@e TESTUSEOPTION_HL
@e PRINT_USE_OPTION_HL
-@ =
+@ =
SYN_SUBMD(I"use_options")
SYN_CONST(NO_USE_OPTIONS_HL, I"NO_USE_OPTIONS")
SYN_FUNCT(TESTUSEOPTION_HL, I"test_fn", I"TestUseOption")
SYN_FUNCT(PRINT_USE_OPTION_HL, I"print_fn", I"PrintUseOption")
-
-@h Kit-defined symbols.
-The Inform 7 compiler creates none of the constants below. (Note that some are
-the addresses of functions, but they are constants for our purposes here.)
-Instead, they are defined using Inform 6 notation in one of the kits. We don't
-need to know which kit; we simply leaves them as "plugs" to be connected to
-"sockets" in the linking stage -- see //bytecode: Connectors//.
-
-@e THESAME_HL
-@e PLURALFOUND_HL
-@e THEDARK_HL
-@e ACT_REQUESTER_HL
-@e ACTION_HL
-@e ACTIONCURRENTLYHAPPENINGFLAG_HL
-@e ACTOR_HL
-@e ACTOR_LOCATION_HL
-@e ADJUSTPARAGRAPHPOINT_HL
-@e ALLOWINSHOWME_HL
-@e ANIMATE_HL
-@e ARGUMENTTYPEFAILED_HL
-@e ARTICLEDESCRIPTORS_HL
-@e AUXF_MAGIC_VALUE_HL
-@e AUXF_STATUS_IS_CLOSED_HL
-@e BLKVALUECOPY_HL
-@e BLKVALUECOPYAZ_HL
-@e BLKVALUECREATE_HL
-@e BLKVALUECREATEONSTACK_HL
-@e BLKVALUEERROR_HL
-@e BLKVALUEFREE_HL
-@e BLKVALUEFREEONSTACK_HL
-@e BLKVALUEWRITE_HL
-@e C_STYLE_HL
-@e CHECKKINDRETURNED_HL
-@e CLEARPARAGRAPHING_HL
-@e COMPONENT_CHILD_HL
-@e COMPONENT_PARENT_HL
-@e COMPONENT_SIBLING_HL
-@e CONSTANT_PACKED_TEXT_STORAGE_HL
-@e CONSTANT_PERISHABLE_TEXT_STORAGE_HL
-@e CONSULT_FROM_HL
-@e CONSULT_WORDS_HL
-@e CONTAINER_HL
-@e CUBEROOT_HL
-@e DA_NAME_HL
-@e DB_RULE_HL
-@e DEADFLAG_HL
-@e DEBUGPROPERTY_HL
-@e DEBUG_RULES_HL
-@e DEBUG_SCENES_HL
-@e DECIMALNUMBER_HL
-@e DETECTPLURALWORD_HL
-@e DIGITTOVALUE_HL
-@e DIVIDEPARAGRAPHPOINT_HL
-@e DOUBLEHASHSETRELATIONHANDLER_HL
-@e DURINGSCENEMATCHING_HL
-@e ELEMENTARY_TT_HL
-@e EMPTY_RULEBOOK_INAME_HL
-@e EMPTY_TABLE_HL
-@e EMPTY_TEXT_PACKED_HL
-@e EMPTY_TEXT_VALUE_HL
-@e EMPTYRELATIONHANDLER_HL
-@e ENGLISH_BIT_HL
-@e ETYPE_HL
-@e EXISTSTABLELOOKUPCORR_HL
-@e EXISTSTABLELOOKUPENTRY_HL
-@e EXISTSTABLEROWCORR_HL
-@e FLOAT_NAN_HL
-@e FLOATPARSE_HL
-@e FOLLOWRULEBOOK_HL
-@e formal_par0_HL
-@e formal_par1_HL
-@e formal_par2_HL
-@e formal_par3_HL
-@e formal_par4_HL
-@e formal_par5_HL
-@e formal_par6_HL
-@e formal_par7_HL
-@e FORMAL_RV_HL
-@e FOUND_EVERYWHERE_HL
-@e GENERATERANDOMNUMBER_HL
-@e GENERICVERBSUB_HL
-@e GETGNAOFOBJECT_HL
-@e GPR_FAIL_HL
-@e GPR_NUMBER_HL
-@e GPR_PREPOSITION_HL
-@e GPR_TT_HL
-@e GPROPERTY_HL
-@e HASHLISTRELATIONHANDLER_HL
-@e I7SFRAME_HL
-@e INDENT_BIT_HL
-@e INP1_HL
-@e INP2_HL
-@e INTEGERDIVIDE_HL
-@e INTEGERREMAINDER_HL
-@e INVENTORY_STAGE_HL
-@e KEEP_SILENT_HL
-@e KINDATOMIC_HL
-@e LATEST_RULE_RESULT_HL
-@e LIST_ITEM_BASE_HL
-@e LIST_ITEM_KOV_F_HL
-@e LIST_OF_TY_DESC_HL
-@e LIST_OF_TY_GETITEM_HL
-@e LIST_OF_TY_GETLENGTH_HL
-@e LIST_OF_TY_INSERTITEM_HL
-@e LIST_OF_TY_SAY_HL
-@e LIST_OF_TY_SETLENGTH_HL
-@e LOCATION_HL
-@e LOCATIONOF_HL
-@e LOOPOVERSCOPE_HL
-@e LOS_RV_HL
-@e MSTACK_HL
-@e MSTVO_HL
-@e MSTVON_HL
-@e NAME_HL
-@e NEWLINE_BIT_HL
-@e NEXTBEST_ETYPE_HL
-@e NEXTWORDSTOPPED_HL
-@e NOARTICLE_BIT_HL
-@e NOTHING_HL
-@e NOTINCONTEXTPE_HL
-@e NOUN_HL
-@e NUMBER_TY_ABS_HL
-@e NUMBER_TY_TO_REAL_NUMBER_TY_HL
-@e NUMBER_TY_TO_TIME_TY_HL
-@e OTOVRELROUTETO_HL
-@e PACKED_TEXT_STORAGE_HL
-@e PARACONTENT_HL
-@e PARAMETER_VALUE_HL
-@e PARSED_NUMBER_HL
-@e PARSER_ACTION_HL
-@e PARSER_ONE_HL
-@e PARSER_TRACE_HL
-@e PARSER_TWO_HL
-@e PARSERERROR_HL
-@e PARSETOKENSTOPPED_HL
-@e PAST_CHRONOLOGICAL_RECORD_HL
-@e PLACEINSCOPE_HL
-@e PLAYER_HL
-@e PNTOVP_HL
-@e PRESENT_CHRONOLOGICAL_RECORD_HL
-@e PRINTORRUN_HL
-@e PRINTSHORTNAME_HL
-@e PRIOR_NAMED_LIST_HL
-@e PRIOR_NAMED_LIST_GENDER_HL
-@e PRIOR_NAMED_NOUN_HL
-@e PROPERTY_LOOP_SIGN_HL
-@e PROPERTY_TO_BE_TOTALLED_HL
-@e REAL_LOCATION_HL
-@e REAL_NUMBER_TY_ABS_HL
-@e REAL_NUMBER_TY_APPROXIMATE_HL
-@e REAL_NUMBER_TY_COMPARE_HL
-@e REAL_NUMBER_TY_CUBE_ROOT_HL
-@e REAL_NUMBER_TY_DIVIDE_HL
-@e REAL_NUMBER_TY_MINUS_HL
-@e REAL_NUMBER_TY_NAN_HL
-@e REAL_NUMBER_TY_NEGATE_HL
-@e REAL_NUMBER_TY_PLUS_HL
-@e REAL_NUMBER_TY_POW_HL
-@e REAL_NUMBER_TY_REMAINDER_HL
-@e REAL_NUMBER_TY_ROOT_HL
-@e REAL_NUMBER_TY_SAY_HL
-@e REAL_NUMBER_TY_TIMES_HL
-@e REAL_NUMBER_TY_TO_NUMBER_TY_HL
-@e REASON_THE_ACTION_FAILED_HL
-@e RELATION_EMPTYEQUIV_HL
-@e RELATION_EMPTYOTOO_HL
-@e RELATION_EMPTYVTOV_HL
-@e RELATION_RSHOWOTOO_HL
-@e RELATION_SHOWEQUIV_HL
-@e RELATION_SHOWOTOO_HL
-@e RELATION_SHOWVTOV_HL
-@e RELATION_TY_EQUIVALENCEADJECTIVE_HL
-@e RELATION_TY_NAME_HL
-@e RELATION_TY_OTOOADJECTIVE_HL
-@e RELATION_TY_OTOVADJECTIVE_HL
-@e RELATION_TY_SYMMETRICADJECTIVE_HL
-@e RELATION_TY_VTOOADJECTIVE_HL
-@e RELATIONTEST_HL
-@e RELFOLLOWVECTOR_HL
-@e RELS_EMPTY_HL
-@e RESPONSEVIAACTIVITY_HL
-@e RLANY_CAN_GET_X_HL
-@e RLANY_CAN_GET_Y_HL
-@e RLANY_GET_X_HL
-@e RLIST_ALL_X_HL
-@e RLIST_ALL_Y_HL
-@e RLNGETF_HL
-@e ROUNDOFFVALUE_HL
-@e ROUTINEFILTER_TT_HL
-@e RR_STORAGE_HL
-@e RTP_RELKINDVIOLATION_HL
-@e RTP_RELMINIMAL_HL
-@e RULEBOOKFAILS_HL
-@e RULEBOOKPARBREAK_HL
-@e RULEBOOKSUCCEEDS_HL
-@e RUNTIMEPROBLEM_HL
-@e SAY__N_HL
-@e SAY__P_HL
-@e SAY__PC_HL
-@e SCENE_ENDED_HL
-@e SCENE_ENDINGS_HL
-@e SCENE_LATEST_ENDING_HL
-@e SCENE_STARTED_HL
-@e SCENE_STATUS_HL
-@e SCOPE_STAGE_HL
-@e SCOPE_TT_HL
-@e SECOND_HL
-@e SHORT_NAME_HL
-@e SIGNEDCOMPARE_HL
-@e SPECIAL_WORD_HL
-@e SQUAREROOT_HL
-@e STACKFRAMECREATE_HL
-@e STORED_ACTION_TY_CURRENT_HL
-@e STORED_ACTION_TY_TRY_HL
-@e STORY_TENSE_HL
-@e SUPPORTER_HL
-@e SUPPRESS_SCOPE_LOOPS_HL
-@e SUPPRESS_TEXT_SUBSTITUTION_HL
-@e TABLE_NOVALUE_HL
-@e TABLELOOKUPCORR_HL
-@e TABLELOOKUPENTRY_HL
-@e TESTACTIONBITMAP_HL
-@e TESTACTIVITY_HL
-@e TESTREGIONALCONTAINMENT_HL
-@e TESTSCOPE_HL
-@e TESTSTART_HL
-@e TEXT_TY_COMPARE_HL
-@e TEXT_TY_EXPANDIFPERISHABLE_HL
-@e TEXT_TY_SAY_HL
-@e THE_TIME_HL
-@e THEEMPTYTABLE_HL
-@e THEN1__WD_HL
-@e TIMESACTIONHASBEENHAPPENING_HL
-@e TIMESACTIONHASHAPPENED_HL
-@e TRYACTION_HL
-@e TRYGIVENOBJECT_HL
-@e TURNSACTIONHASBEENHAPPENING_HL
-@e UNDERSTAND_AS_MISTAKE_NUMBER_HL
-@e UNICODE_TEMP_HL
-@e VTOORELROUTETO_HL
-@e VTOVRELROUTETO_HL
-@e WHEN_SCENE_BEGINS_HL
-@e WHEN_SCENE_ENDS_HL
-@e WN_HL
-@e WORDADDRESS_HL
-@e WORDINPROPERTY_HL
-@e WORDLENGTH_HL
-
-@ =
- req = HierarchyLocations::plug();
- KIT_PROVIDED(THESAME_HL, I"##TheSame")
- KIT_PROVIDED(PLURALFOUND_HL, I"##PluralFound")
- KIT_PROVIDED(THEDARK_HL, I"thedark")
- KIT_PROVIDED(ACT_REQUESTER_HL, I"act_requester")
- KIT_PROVIDED(ACTION_HL, I"action")
- KIT_PROVIDED(ACTIONCURRENTLYHAPPENINGFLAG_HL, I"ActionCurrentlyHappeningFlag")
- KIT_PROVIDED(ACTOR_HL, I"actor")
- KIT_PROVIDED(ACTOR_LOCATION_HL, I"actor_location")
- KIT_PROVIDED(ADJUSTPARAGRAPHPOINT_HL, I"AdjustParagraphPoint")
- KIT_PROVIDED(ALLOWINSHOWME_HL, I"AllowInShowme")
- KIT_PROVIDED(ANIMATE_HL, I"animate")
- KIT_PROVIDED(ARGUMENTTYPEFAILED_HL, I"ArgumentTypeFailed")
- KIT_PROVIDED(ARTICLEDESCRIPTORS_HL, I"ArticleDescriptors")
- KIT_PROVIDED(AUXF_MAGIC_VALUE_HL, I"AUXF_MAGIC_VALUE")
- KIT_PROVIDED(AUXF_STATUS_IS_CLOSED_HL, I"AUXF_STATUS_IS_CLOSED")
- KIT_PROVIDED(BLKVALUECOPY_HL, I"BlkValueCopy")
- KIT_PROVIDED(BLKVALUECOPYAZ_HL, I"BlkValueCopyAZ")
- KIT_PROVIDED(BLKVALUECREATE_HL, I"BlkValueCreate")
- KIT_PROVIDED(BLKVALUECREATEONSTACK_HL, I"BlkValueCreateOnStack")
- KIT_PROVIDED(BLKVALUEERROR_HL, I"BlkValueError")
- KIT_PROVIDED(BLKVALUEFREE_HL, I"BlkValueFree")
- KIT_PROVIDED(BLKVALUEFREEONSTACK_HL, I"BlkValueFreeOnStack")
- KIT_PROVIDED(BLKVALUEWRITE_HL, I"BlkValueWrite")
- KIT_PROVIDED(C_STYLE_HL, I"c_style")
- KIT_PROVIDED(CHECKKINDRETURNED_HL, I"CheckKindReturned")
- KIT_PROVIDED(CLEARPARAGRAPHING_HL, I"ClearParagraphing")
- KIT_PROVIDED(COMPONENT_CHILD_HL, I"component_child")
- KIT_PROVIDED(COMPONENT_PARENT_HL, I"component_parent")
- KIT_PROVIDED(COMPONENT_SIBLING_HL, I"component_sibling")
- KIT_PROVIDED(CONSTANT_PACKED_TEXT_STORAGE_HL, I"CONSTANT_PACKED_TEXT_STORAGE")
- KIT_PROVIDED(CONSTANT_PERISHABLE_TEXT_STORAGE_HL, I"CONSTANT_PERISHABLE_TEXT_STORAGE")
- KIT_PROVIDED(CONSULT_FROM_HL, I"consult_from")
- KIT_PROVIDED(CONSULT_WORDS_HL, I"consult_words")
- KIT_PROVIDED(CONTAINER_HL, I"container")
- KIT_PROVIDED(CUBEROOT_HL, I"CubeRoot")
- KIT_PROVIDED(DA_NAME_HL, I"DA_Name")
- KIT_PROVIDED(DB_RULE_HL, I"DB_Rule")
- KIT_PROVIDED(DEADFLAG_HL, I"deadflag")
- KIT_PROVIDED(DEBUGPROPERTY_HL, I"DebugProperty")
- KIT_PROVIDED(DEBUG_RULES_HL, I"debug_rules")
- KIT_PROVIDED(DEBUG_SCENES_HL, I"debug_scenes")
- KIT_PROVIDED(DECIMALNUMBER_HL, I"DecimalNumber")
- KIT_PROVIDED(DETECTPLURALWORD_HL, I"DetectPluralWord")
- KIT_PROVIDED(DIGITTOVALUE_HL, I"DigitToValue")
- KIT_PROVIDED(DIVIDEPARAGRAPHPOINT_HL, I"DivideParagraphPoint")
- KIT_PROVIDED(DOUBLEHASHSETRELATIONHANDLER_HL, I"DoubleHashSetRelationHandler")
- KIT_PROVIDED(DURINGSCENEMATCHING_HL, I"DuringSceneMatching")
- KIT_PROVIDED(ELEMENTARY_TT_HL, I"ELEMENTARY_TT")
- KIT_PROVIDED(EMPTY_RULEBOOK_INAME_HL, I"EMPTY_RULEBOOK")
- KIT_PROVIDED(EMPTY_TABLE_HL, I"TheEmptyTable")
- KIT_PROVIDED(EMPTY_TEXT_PACKED_HL, I"EMPTY_TEXT_PACKED")
- KIT_PROVIDED(EMPTY_TEXT_VALUE_HL, I"EMPTY_TEXT_VALUE")
- KIT_PROVIDED(EMPTYRELATIONHANDLER_HL, I"EmptyRelationHandler")
- KIT_PROVIDED(ENGLISH_BIT_HL, I"ENGLISH_BIT")
- KIT_PROVIDED(ETYPE_HL, I"etype")
- KIT_PROVIDED(EXISTSTABLELOOKUPCORR_HL, I"ExistsTableLookUpCorr")
- KIT_PROVIDED(EXISTSTABLELOOKUPENTRY_HL, I"ExistsTableLookUpEntry")
- KIT_PROVIDED(EXISTSTABLEROWCORR_HL, I"ExistsTableRowCorr")
- KIT_PROVIDED(FLOAT_NAN_HL, I"FLOAT_NAN")
- KIT_PROVIDED(FLOATPARSE_HL, I"FloatParse")
- KIT_PROVIDED(FOLLOWRULEBOOK_HL, I"FollowRulebook")
- KIT_PROVIDED(formal_par0_HL, I"formal_par0")
- KIT_PROVIDED(formal_par1_HL, I"formal_par1")
- KIT_PROVIDED(formal_par2_HL, I"formal_par2")
- KIT_PROVIDED(formal_par3_HL, I"formal_par3")
- KIT_PROVIDED(formal_par4_HL, I"formal_par4")
- KIT_PROVIDED(formal_par5_HL, I"formal_par5")
- KIT_PROVIDED(formal_par6_HL, I"formal_par6")
- KIT_PROVIDED(formal_par7_HL, I"formal_par7")
- KIT_PROVIDED(FORMAL_RV_HL, I"formal_rv")
- KIT_PROVIDED(FOUND_EVERYWHERE_HL, I"FoundEverywhere")
- KIT_PROVIDED(GENERATERANDOMNUMBER_HL, I"GenerateRandomNumber")
- KIT_PROVIDED(GENERICVERBSUB_HL, I"GenericVerbSub")
- KIT_PROVIDED(GETGNAOFOBJECT_HL, I"GetGNAOfObject")
- KIT_PROVIDED(GPR_FAIL_HL, I"GPR_FAIL")
- KIT_PROVIDED(GPR_NUMBER_HL, I"GPR_NUMBER")
- KIT_PROVIDED(GPR_PREPOSITION_HL, I"GPR_PREPOSITION")
- KIT_PROVIDED(GPR_TT_HL, I"GPR_TT")
- KIT_PROVIDED(GPROPERTY_HL, I"GProperty")
- KIT_PROVIDED(HASHLISTRELATIONHANDLER_HL, I"HashListRelationHandler")
- KIT_PROVIDED(I7SFRAME_HL, I"I7SFRAME")
- KIT_PROVIDED(INDENT_BIT_HL, I"INDENT_BIT")
- KIT_PROVIDED(INP1_HL, I"inp1")
- KIT_PROVIDED(INP2_HL, I"inp2")
- KIT_PROVIDED(INTEGERDIVIDE_HL, I"IntegerDivide")
- KIT_PROVIDED(INTEGERREMAINDER_HL, I"IntegerRemainder")
- KIT_PROVIDED(INVENTORY_STAGE_HL, I"inventory_stage")
- KIT_PROVIDED(KEEP_SILENT_HL, I"keep_silent")
- KIT_PROVIDED(KINDATOMIC_HL, I"KindAtomic")
- KIT_PROVIDED(LATEST_RULE_RESULT_HL, I"latest_rule_result")
- KIT_PROVIDED(LIST_ITEM_BASE_HL, I"LIST_ITEM_BASE")
- KIT_PROVIDED(LIST_ITEM_KOV_F_HL, I"LIST_ITEM_KOV_F")
- KIT_PROVIDED(LIST_OF_TY_DESC_HL, I"LIST_OF_TY_Desc")
- KIT_PROVIDED(LIST_OF_TY_GETITEM_HL, I"LIST_OF_TY_GetItem")
- KIT_PROVIDED(LIST_OF_TY_GETLENGTH_HL, I"LIST_OF_TY_GetLength")
- KIT_PROVIDED(LIST_OF_TY_INSERTITEM_HL, I"LIST_OF_TY_InsertItem")
- KIT_PROVIDED(LIST_OF_TY_SAY_HL, I"LIST_OF_TY_Say")
- KIT_PROVIDED(LIST_OF_TY_SETLENGTH_HL, I"LIST_OF_TY_SetLength")
- KIT_PROVIDED(LOCATION_HL, I"location")
- KIT_PROVIDED(LOCATIONOF_HL, I"LocationOf")
- KIT_PROVIDED(LOOPOVERSCOPE_HL, I"LoopOverScope")
- KIT_PROVIDED(LOS_RV_HL, I"los_rv")
- KIT_PROVIDED(MSTACK_HL, I"MStack")
- KIT_PROVIDED(MSTVO_HL, I"MstVO")
- KIT_PROVIDED(MSTVON_HL, I"MstVON")
- KIT_PROVIDED(NAME_HL, I"name")
- KIT_PROVIDED(NEWLINE_BIT_HL, I"NEWLINE_BIT")
- KIT_PROVIDED(NEXTBEST_ETYPE_HL, I"nextbest_etype")
- KIT_PROVIDED(NEXTWORDSTOPPED_HL, I"NextWordStopped")
- KIT_PROVIDED(NOARTICLE_BIT_HL, I"NOARTICLE_BIT")
- KIT_PROVIDED(NOTINCONTEXTPE_HL, I"NOTINCONTEXT_PE")
- KIT_PROVIDED(NOTHING_HL, I"nothing")
- KIT_PROVIDED(NOUN_HL, I"noun")
- KIT_PROVIDED(NUMBER_TY_ABS_HL, I"NUMBER_TY_Abs")
- KIT_PROVIDED(NUMBER_TY_TO_REAL_NUMBER_TY_HL, I"NUMBER_TY_to_REAL_NUMBER_TY")
- KIT_PROVIDED(NUMBER_TY_TO_TIME_TY_HL, I"NUMBER_TY_to_TIME_TY")
- KIT_PROVIDED(OTOVRELROUTETO_HL, I"OtoVRelRouteTo")
- KIT_PROVIDED(PACKED_TEXT_STORAGE_HL, I"PACKED_TEXT_STORAGE")
- KIT_PROVIDED(PARACONTENT_HL, I"ParaContent")
- KIT_PROVIDED(PARAMETER_VALUE_HL, I"parameter_value")
- KIT_PROVIDED(PARSED_NUMBER_HL, I"parsed_number")
- KIT_PROVIDED(PARSER_ACTION_HL, I"parser_action")
- KIT_PROVIDED(PARSER_ONE_HL, I"parser_one")
- KIT_PROVIDED(PARSER_TRACE_HL, I"parser_trace")
- KIT_PROVIDED(PARSER_TWO_HL, I"parser_two")
- KIT_PROVIDED(PARSERERROR_HL, I"ParserError")
- KIT_PROVIDED(PARSETOKENSTOPPED_HL, I"ParseTokenStopped")
- KIT_PROVIDED(PAST_CHRONOLOGICAL_RECORD_HL, I"past_chronological_record")
- KIT_PROVIDED(PLACEINSCOPE_HL, I"PlaceInScope")
- KIT_PROVIDED(PLAYER_HL, I"player")
- KIT_PROVIDED(PNTOVP_HL, I"PNToVP")
- KIT_PROVIDED(PRESENT_CHRONOLOGICAL_RECORD_HL, I"present_chronological_record")
- KIT_PROVIDED(PRINTORRUN_HL, I"PrintOrRun")
- KIT_PROVIDED(PRINTSHORTNAME_HL, I"PrintShortName")
- KIT_PROVIDED(PRIOR_NAMED_LIST_HL, I"prior_named_list")
- KIT_PROVIDED(PRIOR_NAMED_LIST_GENDER_HL, I"prior_named_list_gender")
- KIT_PROVIDED(PRIOR_NAMED_NOUN_HL, I"prior_named_noun")
- KIT_PROVIDED(PROPERTY_LOOP_SIGN_HL, I"property_loop_sign")
- KIT_PROVIDED(PROPERTY_TO_BE_TOTALLED_HL, I"property_to_be_totalled")
- KIT_PROVIDED(REAL_LOCATION_HL, I"real_location")
- KIT_PROVIDED(REAL_NUMBER_TY_ABS_HL, I"REAL_NUMBER_TY_Abs")
- KIT_PROVIDED(REAL_NUMBER_TY_APPROXIMATE_HL, I"REAL_NUMBER_TY_Approximate")
- KIT_PROVIDED(REAL_NUMBER_TY_COMPARE_HL, I"REAL_NUMBER_TY_Compare")
- KIT_PROVIDED(REAL_NUMBER_TY_CUBE_ROOT_HL, I"REAL_NUMBER_TY_Cube_Root")
- KIT_PROVIDED(REAL_NUMBER_TY_DIVIDE_HL, I"REAL_NUMBER_TY_Divide")
- KIT_PROVIDED(REAL_NUMBER_TY_MINUS_HL, I"REAL_NUMBER_TY_Minus")
- KIT_PROVIDED(REAL_NUMBER_TY_NAN_HL, I"REAL_NUMBER_TY_Nan")
- KIT_PROVIDED(REAL_NUMBER_TY_NEGATE_HL, I"REAL_NUMBER_TY_Negate")
- KIT_PROVIDED(REAL_NUMBER_TY_PLUS_HL, I"REAL_NUMBER_TY_Plus")
- KIT_PROVIDED(REAL_NUMBER_TY_POW_HL, I"REAL_NUMBER_TY_Pow")
- KIT_PROVIDED(REAL_NUMBER_TY_REMAINDER_HL, I"REAL_NUMBER_TY_Remainder")
- KIT_PROVIDED(REAL_NUMBER_TY_ROOT_HL, I"REAL_NUMBER_TY_Root")
- KIT_PROVIDED(REAL_NUMBER_TY_SAY_HL, I"REAL_NUMBER_TY_Say")
- KIT_PROVIDED(REAL_NUMBER_TY_TIMES_HL, I"REAL_NUMBER_TY_Times")
- KIT_PROVIDED(REAL_NUMBER_TY_TO_NUMBER_TY_HL, I"REAL_NUMBER_TY_to_NUMBER_TY")
- KIT_PROVIDED(REASON_THE_ACTION_FAILED_HL, I"reason_the_action_failed")
- KIT_PROVIDED(RELATION_EMPTYEQUIV_HL, I"Relation_EmptyEquiv")
- KIT_PROVIDED(RELATION_EMPTYOTOO_HL, I"Relation_EmptyOtoO")
- KIT_PROVIDED(RELATION_EMPTYVTOV_HL, I"Relation_EmptyVtoV")
- KIT_PROVIDED(RELATION_RSHOWOTOO_HL, I"Relation_RShowOtoO")
- KIT_PROVIDED(RELATION_SHOWEQUIV_HL, I"Relation_ShowEquiv")
- KIT_PROVIDED(RELATION_SHOWOTOO_HL, I"Relation_ShowOtoO")
- KIT_PROVIDED(RELATION_SHOWVTOV_HL, I"Relation_ShowVtoV")
- KIT_PROVIDED(RELATION_TY_EQUIVALENCEADJECTIVE_HL, I"RELATION_TY_EquivalenceAdjective")
- KIT_PROVIDED(RELATION_TY_NAME_HL, I"RELATION_TY_Name")
- KIT_PROVIDED(RELATION_TY_OTOOADJECTIVE_HL, I"RELATION_TY_OToOAdjective")
- KIT_PROVIDED(RELATION_TY_OTOVADJECTIVE_HL, I"RELATION_TY_OToVAdjective")
- KIT_PROVIDED(RELATION_TY_SYMMETRICADJECTIVE_HL, I"RELATION_TY_SymmetricAdjective")
- KIT_PROVIDED(RELATION_TY_VTOOADJECTIVE_HL, I"RELATION_TY_VToOAdjective")
- KIT_PROVIDED(RELATIONTEST_HL, I"RelationTest")
- KIT_PROVIDED(RELFOLLOWVECTOR_HL, I"RelFollowVector")
- KIT_PROVIDED(RELS_EMPTY_HL, I"RELS_EMPTY")
- KIT_PROVIDED(RESPONSEVIAACTIVITY_HL, I"ResponseViaActivity")
- KIT_PROVIDED(RLANY_CAN_GET_X_HL, I"RLANY_CAN_GET_X")
- KIT_PROVIDED(RLANY_CAN_GET_Y_HL, I"RLANY_CAN_GET_Y")
- KIT_PROVIDED(RLANY_GET_X_HL, I"RLANY_GET_X")
- KIT_PROVIDED(RLIST_ALL_X_HL, I"RLIST_ALL_X")
- KIT_PROVIDED(RLIST_ALL_Y_HL, I"RLIST_ALL_Y")
- KIT_PROVIDED(RLNGETF_HL, I"RlnGetF")
- KIT_PROVIDED(ROUNDOFFVALUE_HL, I"RoundOffValue")
- KIT_PROVIDED(ROUTINEFILTER_TT_HL, I"ROUTINE_FILTER_TT")
- KIT_PROVIDED(RR_STORAGE_HL, I"RR_STORAGE")
- KIT_PROVIDED(RTP_RELKINDVIOLATION_HL, I"RTP_RELKINDVIOLATION")
- KIT_PROVIDED(RTP_RELMINIMAL_HL, I"RTP_RELMINIMAL")
- KIT_PROVIDED(RULEBOOKFAILS_HL, I"RulebookFails")
- KIT_PROVIDED(RULEBOOKPARBREAK_HL, I"RulebookParBreak")
- KIT_PROVIDED(RULEBOOKSUCCEEDS_HL, I"RulebookSucceeds")
- KIT_PROVIDED(RUNTIMEPROBLEM_HL, I"RunTimeProblem")
- KIT_PROVIDED(SAY__N_HL, I"say__n")
- KIT_PROVIDED(SAY__P_HL, I"say__p")
- KIT_PROVIDED(SAY__PC_HL, I"say__pc")
- KIT_PROVIDED(SCENE_ENDED_HL, I"scene_ended")
- KIT_PROVIDED(SCENE_ENDINGS_HL, I"scene_endings")
- KIT_PROVIDED(SCENE_LATEST_ENDING_HL, I"scene_latest_ending")
- KIT_PROVIDED(SCENE_STARTED_HL, I"scene_started")
- KIT_PROVIDED(SCENE_STATUS_HL, I"scene_status")
- KIT_PROVIDED(SCOPE_STAGE_HL, I"scope_stage")
- KIT_PROVIDED(SCOPE_TT_HL, I"SCOPE_TT")
- KIT_PROVIDED(SECOND_HL, I"second")
- KIT_PROVIDED(SHORT_NAME_HL, I"short_name")
- KIT_PROVIDED(SIGNEDCOMPARE_HL, I"SignedCompare")
- KIT_PROVIDED(SPECIAL_WORD_HL, I"special_word")
- KIT_PROVIDED(SQUAREROOT_HL, I"SquareRoot")
- KIT_PROVIDED(STACKFRAMECREATE_HL, I"StackFrameCreate")
- KIT_PROVIDED(STORED_ACTION_TY_CURRENT_HL, I"STORED_ACTION_TY_Current")
- KIT_PROVIDED(STORED_ACTION_TY_TRY_HL, I"STORED_ACTION_TY_Try")
- KIT_PROVIDED(STORY_TENSE_HL, I"story_tense")
- KIT_PROVIDED(SUPPORTER_HL, I"supporter")
- KIT_PROVIDED(SUPPRESS_SCOPE_LOOPS_HL, I"suppress_scope_loops")
- KIT_PROVIDED(SUPPRESS_TEXT_SUBSTITUTION_HL, I"suppress_text_substitution")
- KIT_PROVIDED(TABLE_NOVALUE_HL, I"TABLE_NOVALUE")
- KIT_PROVIDED(TABLELOOKUPCORR_HL, I"TableLookUpCorr")
- KIT_PROVIDED(TABLELOOKUPENTRY_HL, I"TableLookUpEntry")
- KIT_PROVIDED(TESTACTIONBITMAP_HL, I"TestActionBitmap")
- KIT_PROVIDED(TESTACTIVITY_HL, I"TestActivity")
- KIT_PROVIDED(TESTREGIONALCONTAINMENT_HL, I"TestRegionalContainment")
- KIT_PROVIDED(TESTSCOPE_HL, I"TestScope")
- KIT_PROVIDED(TESTSTART_HL, I"TestStart")
- KIT_PROVIDED(TEXT_TY_COMPARE_HL, I"TEXT_TY_Compare")
- KIT_PROVIDED(TEXT_TY_EXPANDIFPERISHABLE_HL, I"TEXT_TY_ExpandIfPerishable")
- KIT_PROVIDED(TEXT_TY_SAY_HL, I"TEXT_TY_Say")
- KIT_PROVIDED(THE_TIME_HL, I"the_time")
- KIT_PROVIDED(THEEMPTYTABLE_HL, I"TheEmptyTable")
- KIT_PROVIDED(THEN1__WD_HL, I"THEN1__WD")
- KIT_PROVIDED(TIMESACTIONHASBEENHAPPENING_HL, I"TimesActionHasBeenHappening")
- KIT_PROVIDED(TIMESACTIONHASHAPPENED_HL, I"TimesActionHasHappened")
- KIT_PROVIDED(TRYACTION_HL, I"TryAction")
- KIT_PROVIDED(TRYGIVENOBJECT_HL, I"TryGivenObject")
- KIT_PROVIDED(TURNSACTIONHASBEENHAPPENING_HL, I"TurnsActionHasBeenHappening")
- KIT_PROVIDED(UNDERSTAND_AS_MISTAKE_NUMBER_HL, I"understand_as_mistake_number")
- KIT_PROVIDED(UNICODE_TEMP_HL, I"unicode_temp")
- KIT_PROVIDED(VTOORELROUTETO_HL, I"VtoORelRouteTo")
- KIT_PROVIDED(VTOVRELROUTETO_HL, I"VtoVRelRouteTo")
- KIT_PROVIDED(WHEN_SCENE_BEGINS_HL, I"WHEN_SCENE_BEGINS_RB")
- KIT_PROVIDED(WHEN_SCENE_ENDS_HL, I"WHEN_SCENE_ENDS_RB")
- KIT_PROVIDED(WN_HL, I"wn")
- KIT_PROVIDED(WORDADDRESS_HL, I"WordAddress")
- KIT_PROVIDED(WORDINPROPERTY_HL, I"WordInProperty")
- KIT_PROVIDED(WORDLENGTH_HL, I"WordLength")
diff --git a/inter/pipeline-module/Chapter 5/Synoptic Utilities.w b/inter/pipeline-module/Chapter 5/Synoptic Utilities.w
index e31c3b950..0ff75a04b 100644
--- a/inter/pipeline-module/Chapter 5/Synoptic Utilities.w
+++ b/inter/pipeline-module/Chapter 5/Synoptic Utilities.w
@@ -1,305 +1,18 @@
[Synoptic::] Synoptic Utilities.
-Managing the generation of code and arrays in the synoptic module, which is put
-together from resources all over the Inter tree.
+Utility functions for generating the code in the synoptic module.
-@h Pipeline stage.
-This stage...
+@h Dealing with symbols.
+We are going to need to read and write these: for reading --
=
-typedef struct tree_inventory {
- struct inter_tree *of_tree;
- struct linked_list *items; /* of |tree_inventory_item| */
- inter_tree_location_list *text_nodes;
- inter_tree_location_list *module_nodes;
- inter_tree_location_list *response_nodes;
- inter_tree_location_list *rulebook_nodes;
- inter_tree_location_list *rule_nodes;
- inter_tree_location_list *activity_nodes;
- inter_tree_location_list *action_nodes;
- inter_tree_location_list *property_nodes;
- inter_tree_location_list *extension_nodes;
- inter_tree_location_list *relation_nodes;
- inter_tree_location_list *table_nodes;
- inter_tree_location_list *table_column_nodes;
- inter_tree_location_list *table_column_usage_nodes;
- inter_tree_location_list *action_history_condition_nodes;
- inter_tree_location_list *past_tense_condition_nodes;
- inter_tree_location_list *instance_nodes;
- inter_tree_location_list *scene_nodes;
- inter_tree_location_list *file_nodes;
- inter_tree_location_list *figure_nodes;
- inter_tree_location_list *sound_nodes;
- inter_tree_location_list *use_option_nodes;
- inter_tree_location_list *verb_nodes;
- inter_tree_location_list *modal_verb_nodes;
- inter_tree_location_list *verb_form_nodes;
- inter_tree_location_list *preposition_nodes;
- inter_tree_location_list *adjective_nodes;
- inter_tree_location_list *derived_kind_nodes;
- inter_tree_location_list *kind_nodes;
- inter_tree_location_list *test_nodes;
- inter_tree_location_list *named_action_pattern_nodes;
- inter_tree_location_list *variable_nodes;
- inter_tree_location_list *equation_nodes;
- inter_tree_location_list *heading_nodes;
- inter_tree_location_list *multiplication_rule_nodes;
- CLASS_DEFINITION
-} tree_inventory;
-
-tree_inventory *Synoptic::new_inventory(inter_tree *I) {
- tree_inventory *inv = CREATE(tree_inventory);
- inv->of_tree = I;
- inv->items = NEW_LINKED_LIST(tree_inventory_item);
- inv->text_nodes = TreeLists::new();
-
- inv->response_nodes = Synoptic::add_inventory_need(inv, I"_response");
- inv->rulebook_nodes = Synoptic::add_inventory_need(inv, I"_rulebook");
- inv->rule_nodes = Synoptic::add_inventory_need(inv, I"_rule");
- inv->activity_nodes = Synoptic::add_inventory_need(inv, I"_activity");
- inv->action_nodes = Synoptic::add_inventory_need(inv, I"_action");
- inv->property_nodes = Synoptic::add_inventory_need(inv, I"_property");
- inv->relation_nodes = Synoptic::add_inventory_need(inv, I"_relation");
- inv->table_nodes = Synoptic::add_inventory_need(inv, I"_table");
- inv->table_column_nodes = Synoptic::add_inventory_need(inv, I"_table_column");
- inv->table_column_usage_nodes = Synoptic::add_inventory_need(inv, I"_table_column_usage");
- inv->action_history_condition_nodes = Synoptic::add_inventory_need(inv, I"_action_history_condition");
- inv->past_tense_condition_nodes = Synoptic::add_inventory_need(inv, I"_past_condition");
- inv->use_option_nodes = Synoptic::add_inventory_need(inv, I"_use_option");
- inv->verb_nodes = Synoptic::add_inventory_need(inv, I"_verb");
- inv->modal_verb_nodes = Synoptic::add_inventory_need(inv, I"_modal_verb");
- inv->verb_form_nodes = Synoptic::add_inventory_need(inv, I"_verb_form");
- inv->preposition_nodes = Synoptic::add_inventory_need(inv, I"_preposition");
- inv->adjective_nodes = Synoptic::add_inventory_need(inv, I"_adjective");
- inv->derived_kind_nodes = Synoptic::add_inventory_need(inv, I"_derived_kind");
- inv->kind_nodes = Synoptic::add_inventory_need(inv, I"_kind");
- inv->module_nodes = Synoptic::add_inventory_need(inv, I"_module");
- inv->instance_nodes = Synoptic::add_inventory_need(inv, I"_instance");
- inv->test_nodes = Synoptic::add_inventory_need(inv, I"_test");
- inv->named_action_pattern_nodes = Synoptic::add_inventory_need(inv, I"_named_action_pattern");
- inv->variable_nodes = Synoptic::add_inventory_need(inv, I"_variable");
- inv->equation_nodes = Synoptic::add_inventory_need(inv, I"_equation");
- inv->heading_nodes = Synoptic::add_inventory_need(inv, I"_heading");
- inv->multiplication_rule_nodes = Synoptic::add_inventory_need(inv, I"_multiplication_rule");
-
- inv->extension_nodes = TreeLists::new();
- inv->scene_nodes = TreeLists::new();
- inv->file_nodes = TreeLists::new();
- inv->figure_nodes = TreeLists::new();
- inv->sound_nodes = TreeLists::new();
- return inv;
-}
-
-typedef struct tree_inventory_item {
- struct inter_tree_location_list *node_list;
- struct inter_symbol *required_ptype;
- CLASS_DEFINITION
-} tree_inventory_item;
-
-inter_tree_location_list *Synoptic::add_inventory_need(tree_inventory *inv, text_stream *pt) {
- tree_inventory_item *item = CREATE(tree_inventory_item);
- item->node_list = TreeLists::new();
- item->required_ptype = PackageTypes::get(inv->of_tree, pt);
- ADD_TO_LINKED_LIST(item, tree_inventory_item, inv->items);
- return item->node_list;
-}
-
-void Synoptic::perform_inventory(tree_inventory *inv) {
- inter_tree *I = inv->of_tree;
- InterTree::traverse(I, Synoptic::visitor, inv, NULL, 0);
- for (int i=0; imodule_nodes); i++) {
- inter_package *pack = Inter::Package::defined_by_frame(inv->module_nodes->list[i].node);
- if (InterSymbolsTables::symbol_from_name(Inter::Packages::scope(pack), I"extension_id"))
- TreeLists::add(inv->extension_nodes, inv->module_nodes->list[i].node);
- }
- for (int i=0; iinstance_nodes); i++) {
- inter_package *pack = Inter::Package::defined_by_frame(inv->instance_nodes->list[i].node);
- if (Metadata::exists(pack, I"^is_scene"))
- TreeLists::add(inv->scene_nodes, inv->instance_nodes->list[i].node);
- if (Metadata::exists(pack, I"^is_file"))
- TreeLists::add(inv->file_nodes, inv->instance_nodes->list[i].node);
- if (Metadata::exists(pack, I"^is_figure"))
- TreeLists::add(inv->figure_nodes, inv->instance_nodes->list[i].node);
- if (Metadata::exists(pack, I"^is_sound"))
- TreeLists::add(inv->sound_nodes, inv->instance_nodes->list[i].node);
- }
-}
-
-void Synoptic::visitor(inter_tree *I, inter_tree_node *P, void *state) {
- tree_inventory *inv = (tree_inventory *) state;
- if (P->W.data[ID_IFLD] == CONSTANT_IST) {
- inter_symbol *con_s =
- InterSymbolsTables::symbol_from_frame_data(P, DEFN_CONST_IFLD);
- if (Inter::Symbols::read_annotation(con_s, TEXT_LITERAL_IANN) == 1)
- TreeLists::add(inv->text_nodes, P);
- }
- if (P->W.data[ID_IFLD] == PACKAGE_IST) {
- inter_package *pack = Inter::Package::defined_by_frame(P);
- inter_symbol *ptype = Inter::Packages::type(pack);
- if (ptype == PackageTypes::get(I, I"_kind")) {
- LOG("Inside $6:\n", pack);
- inter_symbols_table *ST = Inter::Packages::scope(pack);
- for (int i=0; isize; i++) {
- inter_symbol *S = ST->symbol_array[i];
- if ((S) && (S->wiring.no_connections > 0))
- LOG("I observe $3 (%d)\n", S, S->wiring.no_connections);
- }
- }
- tree_inventory_item *item;
- LOOP_OVER_LINKED_LIST(item, tree_inventory_item, inv->items)
- if (ptype == item->required_ptype) {
- TreeLists::add(item->node_list, P);
- break;
- }
- }
-}
-
-tree_inventory *cached_inventory = NULL;
-inter_tree *cache_is_for = NULL;
-tree_inventory *Synoptic::inv(inter_tree *I) {
- if (cache_is_for == I) return cached_inventory;
- cache_is_for = I;
- cached_inventory = Synoptic::new_inventory(I);
- Synoptic::perform_inventory(cached_inventory);
- return cached_inventory;
-}
-
-@
-
-=
-int Synoptic::module_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 *mod1 = Synoptic::module_containing(P1);
- inter_package *mod2 = Synoptic::module_containing(P2);
- inter_ti C1 = Metadata::read_optional_numeric(mod1, I"^category");
- inter_ti C2 = Metadata::read_optional_numeric(mod2, I"^category");
- int d = ((int) C2) - ((int) C1); /* larger values sort earlier */
- if (d != 0) return d;
- return E1->sort_key - E2->sort_key; /* smaller values sort earlier */
-}
-
-int Synoptic::category_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 *mod1 = Inter::Packages::container(P1);
- inter_package *mod2 = Inter::Packages::container(P2);
- inter_ti C1 = Metadata::read_optional_numeric(mod1, I"^category");
- inter_ti C2 = Metadata::read_optional_numeric(mod2, I"^category");
- int d = ((int) C2) - ((int) C1); /* larger values sort earlier */
- if (d != 0) return d;
- return E1->sort_key - E2->sort_key; /* smaller values sort earlier */
-}
-
-@h Redefinition.
-
-=
-inter_symbol *Synoptic::new_symbol(inter_package *pack, text_stream *name) {
- return InterSymbolsTables::create_with_unique_name(Inter::Packages::scope(pack), name);
-}
-
inter_symbol *Synoptic::get_symbol(inter_package *pack, text_stream *name) {
- inter_symbol *loc_s = InterSymbolsTables::symbol_from_name(Inter::Packages::scope(pack), name);
+ inter_symbol *loc_s =
+ InterSymbolsTables::symbol_from_name(Inter::Packages::scope(pack), name);
if (loc_s == NULL) Metadata::err("package symbol not found", pack, name);
return loc_s;
}
-@
-
-=
-void Synoptic::def_textual_constant(inter_tree *I, pipeline_step *step,
- inter_symbol *con_s, text_stream *S, inter_bookmark *IBM) {
- Inter::Symbols::annotate_i(con_s, TEXT_LITERAL_IANN, 1);
- inter_ti ID = Inter::Warehouse::create_text(InterTree::warehouse(I),
- Inter::Bookmarks::package(IBM));
- Str::copy(Inter::Warehouse::get_text(InterTree::warehouse(I), ID), S);
- Produce::guard(Inter::Constant::new_textual(IBM,
- InterSymbolsTables::id_from_symbol(I, Inter::Bookmarks::package(IBM), con_s),
- InterSymbolsTables::id_from_symbol(I, Inter::Bookmarks::package(IBM),
- RunningPipelines::get_symbol(step, unchecked_kind_RPSYM)),
- ID, (inter_ti) Inter::Bookmarks::baseline(IBM) + 1, NULL));
-}
-
-@
-
-=
-inter_package *synoptic_fn_package = NULL;
-packaging_state synoptic_fn_ps;
-void Synoptic::begin_function(inter_tree *I, inter_name *iname) {
- synoptic_fn_package = Produce::block(I, &synoptic_fn_ps, iname);
-}
-void Synoptic::end_function(inter_tree *I, pipeline_step *step, inter_name *iname) {
- Produce::end_block(I);
- Synoptic::function(I, step, iname, synoptic_fn_package);
- Produce::end_main_block(I, synoptic_fn_ps);
-}
-
-void Synoptic::function(inter_tree *I, pipeline_step *step, inter_name *fn_iname, inter_package *block) {
- inter_symbol *fn_s = Produce::define_symbol(fn_iname);
- Produce::guard(Inter::Constant::new_function(Packaging::at(I),
- InterSymbolsTables::id_from_symbol(I, Inter::Bookmarks::package(Packaging::at(I)), fn_s),
- InterSymbolsTables::id_from_symbol(I, Inter::Bookmarks::package(Packaging::at(I)), RunningPipelines::get_symbol(step, unchecked_kind_RPSYM)),
- block,
- Produce::baseline(Packaging::at(I)), NULL));
-}
-inter_symbol *Synoptic::local(inter_tree *I, text_stream *name,
- text_stream *comment) {
- return Produce::local(I, K_value, name, 0, comment);
-}
-
-inter_tree_node *synoptic_array_node = NULL;
-packaging_state synoptic_array_ps;
-void Synoptic::begin_array(inter_tree *I, pipeline_step *step, inter_name *iname) {
- synoptic_array_ps = Packaging::enter_home_of(iname);
- inter_symbol *con_s = Produce::define_symbol(iname);
- synoptic_array_node = Inode::fill_3(Packaging::at(I), CONSTANT_IST,
- InterSymbolsTables::id_from_IRS_and_symbol(Packaging::at(I), con_s),
- InterSymbolsTables::id_from_IRS_and_symbol(Packaging::at(I), RunningPipelines::get_symbol(step, list_of_unchecked_kind_RPSYM)),
- CONSTANT_INDIRECT_LIST, NULL, (inter_ti) Inter::Bookmarks::baseline(Packaging::at(I)) + 1);
-}
-void Synoptic::end_array(inter_tree *I) {
- inter_error_message *E =
- Inter::Defn::verify_construct(Inter::Bookmarks::package(Packaging::at(I)), synoptic_array_node);
- if (E) {
- Inter::Errors::issue(E);
- internal_error("synoptic array failed verification");
- }
- Inter::Bookmarks::insert(Packaging::at(I), synoptic_array_node);
- Packaging::exit(I, synoptic_array_ps);
-}
-
-void Synoptic::numeric_entry(inter_ti val2) {
- if (Inode::extend(synoptic_array_node, 2) == FALSE) internal_error("cannot extend");
- synoptic_array_node->W.data[synoptic_array_node->W.extent-2] = LITERAL_IVAL;
- synoptic_array_node->W.data[synoptic_array_node->W.extent-1] = val2;
-}
-void Synoptic::symbol_entry(inter_symbol *S) {
- if (Inode::extend(synoptic_array_node, 2) == FALSE) internal_error("cannot extend");
- inter_package *pack = Inter::Packages::container(synoptic_array_node);
- inter_symbol *local_S = InterSymbolsTables::create_with_unique_name(Inter::Packages::scope(pack), S->symbol_name);
- Wiring::wire_to(local_S, S);
- inter_ti val1 = 0, val2 = 0;
- Inter::Symbols::to_data(Inter::Packages::tree(pack), pack, local_S, &val1, &val2);
- synoptic_array_node->W.data[synoptic_array_node->W.extent-2] = ALIAS_IVAL;
- synoptic_array_node->W.data[synoptic_array_node->W.extent-1] = val2;
-}
-void Synoptic::textual_entry(text_stream *text) {
- if (Inode::extend(synoptic_array_node, 2) == FALSE) internal_error("cannot extend");
- inter_package *pack = Inter::Packages::container(synoptic_array_node);
- inter_tree *I = Inter::Packages::tree(pack);
- inter_ti val2 = Inter::Warehouse::create_text(InterTree::warehouse(I), pack);
- text_stream *glob_storage = Inter::Warehouse::get_text(InterTree::warehouse(I), val2);
- Str::copy(glob_storage, text);
- synoptic_array_node->W.data[synoptic_array_node->W.extent-2] = LITERAL_TEXT_IVAL;
- synoptic_array_node->W.data[synoptic_array_node->W.extent-1] = val2;
-}
-
inter_tree_node *Synoptic::get_definition(inter_package *pack, text_stream *name) {
inter_symbol *def_s = InterSymbolsTables::symbol_from_name(Inter::Packages::scope(pack), name);
if (def_s == NULL) {
@@ -314,6 +27,10 @@ inter_tree_node *Synoptic::get_definition(inter_package *pack, text_stream *name
return D;
}
+@ To clarify: here, the symbol is optional, that is, need not exist; but if it
+does exist, it must have a definition, and we return that.
+
+=
inter_tree_node *Synoptic::get_optional_definition(inter_package *pack, text_stream *name) {
inter_symbol *def_s = InterSymbolsTables::symbol_from_name(Inter::Packages::scope(pack), name);
if (def_s == NULL) return NULL;
@@ -322,13 +39,110 @@ inter_tree_node *Synoptic::get_optional_definition(inter_package *pack, text_str
return D;
}
-inter_package *Synoptic::module_containing(inter_tree_node *P) {
- inter_package *pack = Inter::Packages::container(P);
- inter_tree *I = Inter::Packages::tree(pack);
- while (pack) {
- inter_symbol *ptype = Inter::Packages::type(pack);
- if (ptype == PackageTypes::get(I, I"_module")) return pack;
- pack = Inter::Packages::parent(pack);
- }
- return NULL;
+@ And this creates a new symbol:
+
+=
+inter_symbol *Synoptic::new_symbol(inter_package *pack, text_stream *name) {
+ return InterSymbolsTables::create_with_unique_name(Inter::Packages::scope(pack), name);
+}
+
+@h Making textual constants.
+
+=
+void Synoptic::textual_constant(inter_tree *I, pipeline_step *step,
+ inter_symbol *con_s, text_stream *S, inter_bookmark *IBM) {
+ Inter::Symbols::annotate_i(con_s, TEXT_LITERAL_IANN, 1);
+ inter_ti ID = Inter::Warehouse::create_text(InterTree::warehouse(I),
+ Inter::Bookmarks::package(IBM));
+ Str::copy(Inter::Warehouse::get_text(InterTree::warehouse(I), ID), S);
+ Produce::guard(Inter::Constant::new_textual(IBM,
+ InterSymbolsTables::id_from_symbol(I, Inter::Bookmarks::package(IBM), con_s),
+ InterSymbolsTables::id_from_symbol(I, Inter::Bookmarks::package(IBM),
+ RunningPipelines::get_symbol(step, unchecked_kind_RPSYM)),
+ ID, (inter_ti) Inter::Bookmarks::baseline(IBM) + 1, NULL));
+}
+
+@h Making functions.
+
+=
+inter_package *synoptic_fn_package = NULL;
+packaging_state synoptic_fn_ps;
+void Synoptic::begin_function(inter_tree *I, inter_name *iname) {
+ synoptic_fn_package = Produce::block(I, &synoptic_fn_ps, iname);
+}
+void Synoptic::end_function(inter_tree *I, pipeline_step *step, inter_name *iname) {
+ Produce::end_block(I);
+ inter_symbol *fn_s = Produce::define_symbol(iname);
+ Produce::guard(Inter::Constant::new_function(Packaging::at(I),
+ InterSymbolsTables::id_from_symbol(I, Inter::Bookmarks::package(Packaging::at(I)), fn_s),
+ InterSymbolsTables::id_from_symbol(I, Inter::Bookmarks::package(Packaging::at(I)),
+ RunningPipelines::get_symbol(step, unchecked_kind_RPSYM)),
+ synoptic_fn_package,
+ Produce::baseline(Packaging::at(I)), NULL));
+ Produce::end_main_block(I, synoptic_fn_ps);
+}
+
+@ To give such a function a local:
+
+=
+inter_symbol *Synoptic::local(inter_tree *I, text_stream *name, text_stream *comment) {
+ return Produce::local(I, K_value, name, 0, comment);
+}
+
+@h Making arrays.
+
+=
+inter_tree_node *synoptic_array_node = NULL;
+packaging_state synoptic_array_ps;
+
+void Synoptic::begin_array(inter_tree *I, pipeline_step *step, inter_name *iname) {
+ synoptic_array_ps = Packaging::enter_home_of(iname);
+ inter_symbol *con_s = Produce::define_symbol(iname);
+ synoptic_array_node = Inode::fill_3(Packaging::at(I), CONSTANT_IST,
+ InterSymbolsTables::id_from_IRS_and_symbol(Packaging::at(I), con_s),
+ InterSymbolsTables::id_from_IRS_and_symbol(Packaging::at(I),
+ RunningPipelines::get_symbol(step, list_of_unchecked_kind_RPSYM)),
+ CONSTANT_INDIRECT_LIST, NULL,
+ (inter_ti) Inter::Bookmarks::baseline(Packaging::at(I)) + 1);
+}
+
+void Synoptic::end_array(inter_tree *I) {
+ inter_error_message *E = Inter::Defn::verify_construct(
+ Inter::Bookmarks::package(Packaging::at(I)), synoptic_array_node);
+ if (E) {
+ Inter::Errors::issue(E);
+ internal_error("synoptic array failed verification");
+ }
+ Inter::Bookmarks::insert(Packaging::at(I), synoptic_array_node);
+ Packaging::exit(I, synoptic_array_ps);
+}
+
+@ Three ways to define an entry:
+
+=
+void Synoptic::numeric_entry(inter_ti val2) {
+ if (Inode::extend(synoptic_array_node, 2) == FALSE) internal_error("cannot extend");
+ synoptic_array_node->W.data[synoptic_array_node->W.extent-2] = LITERAL_IVAL;
+ synoptic_array_node->W.data[synoptic_array_node->W.extent-1] = val2;
+}
+void Synoptic::symbol_entry(inter_symbol *S) {
+ if (Inode::extend(synoptic_array_node, 2) == FALSE) internal_error("cannot extend");
+ inter_package *pack = Inter::Packages::container(synoptic_array_node);
+ inter_symbol *local_S =
+ InterSymbolsTables::create_with_unique_name(Inter::Packages::scope(pack), S->symbol_name);
+ Wiring::wire_to(local_S, S);
+ inter_ti val1 = 0, val2 = 0;
+ Inter::Symbols::to_data(Inter::Packages::tree(pack), pack, local_S, &val1, &val2);
+ synoptic_array_node->W.data[synoptic_array_node->W.extent-2] = ALIAS_IVAL;
+ synoptic_array_node->W.data[synoptic_array_node->W.extent-1] = val2;
+}
+void Synoptic::textual_entry(text_stream *text) {
+ if (Inode::extend(synoptic_array_node, 2) == FALSE) internal_error("cannot extend");
+ inter_package *pack = Inter::Packages::container(synoptic_array_node);
+ inter_tree *I = Inter::Packages::tree(pack);
+ inter_ti val2 = Inter::Warehouse::create_text(InterTree::warehouse(I), pack);
+ text_stream *glob_storage = Inter::Warehouse::get_text(InterTree::warehouse(I), val2);
+ Str::copy(glob_storage, text);
+ synoptic_array_node->W.data[synoptic_array_node->W.extent-2] = LITERAL_TEXT_IVAL;
+ synoptic_array_node->W.data[synoptic_array_node->W.extent-1] = val2;
}
diff --git a/inter/pipeline-module/Chapter 5/Tables.w b/inter/pipeline-module/Chapter 5/Tables.w
index a8a431ed5..ecb55e618 100644
--- a/inter/pipeline-module/Chapter 5/Tables.w
+++ b/inter/pipeline-module/Chapter 5/Tables.w
@@ -17,7 +17,7 @@ by index within the current table: see //assertions: Tables//.)
=
void SynopticTables::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->table_nodes) > 0) {
- TreeLists::sort(inv->table_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->table_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; itable_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->table_nodes->list[i].node);
inter_tree_node *D = Synoptic::get_definition(pack, I"table_id");
@@ -25,7 +25,7 @@ void SynopticTables::compile(inter_tree *I, pipeline_step *step, tree_inventory
}
}
if (TreeLists::len(inv->table_column_nodes) > 0) {
- TreeLists::sort(inv->table_column_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->table_column_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; itable_column_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->table_column_nodes->list[i].node);
inter_tree_node *D = Synoptic::get_definition(pack, I"table_column_id");
@@ -33,7 +33,7 @@ void SynopticTables::compile(inter_tree *I, pipeline_step *step, tree_inventory
}
}
if (TreeLists::len(inv->table_column_usage_nodes) > 0) {
- TreeLists::sort(inv->table_column_usage_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->table_column_usage_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; itable_column_usage_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->table_column_usage_nodes->list[i].node);
inter_tree_node *ID = Synoptic::get_definition(pack, I"column_identity");
diff --git a/inter/pipeline-module/Chapter 5/Tests.w b/inter/pipeline-module/Chapter 5/Tests.w
index 27d4c22f3..5ffdc6a72 100644
--- a/inter/pipeline-module/Chapter 5/Tests.w
+++ b/inter/pipeline-module/Chapter 5/Tests.w
@@ -8,7 +8,7 @@ of type |_test|.
=
void SynopticTests::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->test_nodes) > 0) {
- TreeLists::sort(inv->test_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->test_nodes, MakeSynopticModuleStage::module_order);
}
@;
diff --git a/inter/pipeline-module/Chapter 5/Use Options.w b/inter/pipeline-module/Chapter 5/Use Options.w
index 110066df1..85375f3a1 100644
--- a/inter/pipeline-module/Chapter 5/Use Options.w
+++ b/inter/pipeline-module/Chapter 5/Use Options.w
@@ -8,7 +8,7 @@ of packages of type |_use_option|.
=
void SynopticUseOptions::compile(inter_tree *I, pipeline_step *step, tree_inventory *inv) {
if (TreeLists::len(inv->use_option_nodes) > 0) {
- TreeLists::sort(inv->use_option_nodes, Synoptic::module_order);
+ TreeLists::sort(inv->use_option_nodes, MakeSynopticModuleStage::module_order);
for (int i=0; iuse_option_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(inv->use_option_nodes->list[i].node);
inter_tree_node *D = Synoptic::get_definition(pack, I"use_option_id");
diff --git a/inter/pipeline-module/Chapter 5/Verbs.w b/inter/pipeline-module/Chapter 5/Verbs.w
index a699acf30..7d0339ccd 100644
--- a/inter/pipeline-module/Chapter 5/Verbs.w
+++ b/inter/pipeline-module/Chapter 5/Verbs.w
@@ -22,8 +22,8 @@ int SynopticVerbs::form_order(const void *ent1, const void *ent2) {
if (E1 == E2) return 0;
inter_tree_node *P1 = E1->node;
inter_tree_node *P2 = E2->node;
- inter_package *mod1 = Synoptic::module_containing(P1);
- inter_package *mod2 = Synoptic::module_containing(P2);
+ inter_package *mod1 = MakeSynopticModuleStage::module_containing(P1);
+ inter_package *mod2 = MakeSynopticModuleStage::module_containing(P2);
inter_ti C1 = Metadata::read_optional_numeric(mod1, I"^category");
inter_ti C2 = Metadata::read_optional_numeric(mod2, I"^category");
int d = ((int) C2) - ((int) C1); /* larger values sort earlier */
diff --git a/inter/pipeline-module/Contents.w b/inter/pipeline-module/Contents.w
index 61df9dbe1..220b67dfb 100644
--- a/inter/pipeline-module/Contents.w
+++ b/inter/pipeline-module/Contents.w
@@ -17,17 +17,18 @@ Chapter 2: Pipelines
New Stage
Read, Move, Wipe, Stop Stages
-Chapter 3: Assimilation Stages
+Chapter 3: Assimilation
Parsing Stages
Resolve Conditional Compilation Stage
Compile Splats Stage
-Chapter 4: Linking Stages
+Chapter 4: Linking
Load Binary Kits Stage
Shorten Wiring Stage
Detect Indirect Calls Stage
Make Identifiers Unique Stage
Reconcile Verbs Stage
+ The Standard Kits
Chapter 5: Synoptic Module
Make Synoptic Module Stage
@@ -51,7 +52,7 @@ Chapter 5: Synoptic Module
Verbs
Tests
-Chapter 6: Optimisation Stages
+Chapter 6: Optimisation
Eliminate Redundant Matter Stage
Eliminate Redundant Labels Stage
Eliminate Redundant Operations Stage