From 263b3d9181614954913c584f5dd7608080b7a1a8 Mon Sep 17 00:00:00 2001 From: Graham Nelson Date: Sun, 14 Apr 2019 11:46:13 +0100 Subject: [PATCH] Further simplified expression of hierarchy --- docs/core-module/1-cm.html | 8 +- docs/core-module/13-rsfk.html | 5 +- docs/core-module/17-rs.html | 10 +- docs/core-module/19-tb.html | 3 +- docs/core-module/19-tc.html | 4 +- docs/core-module/21-ac.html | 6 +- docs/core-module/21-rl.html | 3 +- docs/core-module/22-pav.html | 5 +- docs/core-module/26-jl.html | 3 +- docs/core-module/26-lt.html | 3 +- docs/core-module/26-ts.html | 6 +- docs/core-module/27-cm.html | 6 +- docs/core-module/27-ei.html | 4 +- docs/core-module/27-hl.html | 340 ++-- docs/core-module/27-hr.html | 1418 +++++++++-------- docs/core-module/27-in.html | 8 +- docs/core-module/27-pc.html | 122 +- docs/core-module/27-tr.html | 67 + docs/core-module/5-nv.html | 2 +- docs/core-module/6-rlt.html | 6 +- docs/core-module/index.html | 4 + docs/core-test/1-pc.html | 2 +- docs/if-module/4-act.html | 6 +- docs/inform7/1-mn.html | 2 +- docs/kinds-module/2-uk.html | 21 +- docs/linguistics-module/3-adj.html | 3 +- docs/multimedia-module/2-ef.html | 8 +- inform7/core-module/Chapter 1/Core Module.w | 8 +- .../Chapter 13/Runtime Support for Kinds.w | 3 +- inform7/core-module/Chapter 17/Responses.w | 10 +- .../core-module/Chapter 19/Table Columns.w | 4 +- inform7/core-module/Chapter 19/Tables.w | 3 +- inform7/core-module/Chapter 21/Activities.w | 6 +- inform7/core-module/Chapter 21/Rules.w | 3 +- .../Chapter 22/Phrases as Values.w | 5 +- inform7/core-module/Chapter 26/Jump Labels.w | 3 +- .../core-module/Chapter 26/List Together.w | 3 +- inform7/core-module/Chapter 26/Test Scripts.w | 6 +- .../Chapter 27/Compilation Modules.w | 4 +- .../Chapter 27/Hierarchy Locations.w | 274 ++-- inform7/core-module/Chapter 27/Hierarchy.w | 1152 ++++++------- inform7/core-module/Chapter 27/Packaging.w | 90 +- inform7/core-module/Chapter 27/Translation.w | 37 + inform7/core-module/Chapter 6/Relations.w | 6 +- inform7/core-module/Contents.w | 1 + inform7/if-module/Chapter 4/Actions.w | 6 +- inform7/kinds-module/Chapter 2/Using Kinds.w | 21 +- .../linguistics-module/Chapter 3/Adjectives.w | 3 +- .../Chapter 2/External Files.w | 8 +- 49 files changed, 1991 insertions(+), 1740 deletions(-) create mode 100644 docs/core-module/27-tr.html create mode 100644 inform7/core-module/Chapter 27/Translation.w diff --git a/docs/core-module/1-cm.html b/docs/core-module/1-cm.html index 7101a254a..2625a2121 100644 --- a/docs/core-module/1-cm.html +++ b/docs/core-module/1-cm.html @@ -125,7 +125,9 @@ enum package_request_MT enum named_resource_location_MT enum hierarchy_attachment_point_MT - enum subpackage_request_counter_MT + enum submodule_request_counter_MT + enum submodule_identity_MT + enum submodule_request_MT

§3. Deep breath, then: the following macros define several hundred functions.

@@ -210,7 +212,9 @@ ALLOCATE_INDIVIDUALLY(package_request) ALLOCATE_INDIVIDUALLY(named_resource_location) ALLOCATE_INDIVIDUALLY(hierarchy_attachment_point) - ALLOCATE_INDIVIDUALLY(subpackage_request_counter) + ALLOCATE_INDIVIDUALLY(submodule_request_counter) + ALLOCATE_INDIVIDUALLY(submodule_identity) + ALLOCATE_INDIVIDUALLY(submodule_request)

diff --git a/docs/core-module/13-rsfk.html b/docs/core-module/13-rsfk.html index 78e66033e..098acf993 100644 --- a/docs/core-module/13-rsfk.html +++ b/docs/core-module/13-rsfk.html @@ -60,7 +60,7 @@ kinds being compiled to an I6 Class<

-

The function Kinds::RunTime::I6_classname is used in §27, 6/bp (§25), 6/rlt (§29.2, §29.3, §29.4, §29.5, §29.6), 12/ter (§8.6), 12/ca (§6.2), 12/dtd (§24), 13/kak (§2), 25/cii (§3.1.1.4.7.1), 26/iti (§9), 27/is (§31.8.1), 27/hr (§5).

+

The function Kinds::RunTime::I6_classname is used in §27, 6/bp (§25), 6/rlt (§29.2, §29.3, §29.4, §29.5, §29.6), 12/ter (§8.6), 12/ca (§6.2), 12/dtd (§24), 13/kak (§2), 25/cii (§3.1.1.4.7.1), 26/iti (§9), 27/is (§31.8.1), 27/hr (§4).

The function Kinds::RunTime::I6_classnumber is used in 16/ic (§6, §12.2), 27/in (§4).

@@ -750,8 +750,7 @@ compile under Inform 6. DISCARD_TEXT(TEMP); InterNames::attach_memo(rks->rks_iname, W); InterNames::to_symbol(rks->rks_iname); - rks->rks_dv_iname = InterNames::one_off(I"default_value", PR); - Inter::Symbols::set_flag(InterNames::to_symbol(rks->rks_dv_iname), MAKE_NAME_UNIQUE); + rks->rks_dv_iname = Hierarchy::make_iname_in(DEFAULT_VALUE_HL, PR);

diff --git a/docs/core-module/17-rs.html b/docs/core-module/17-rs.html index bddbd2819..b662a7a11 100644 --- a/docs/core-module/17-rs.html +++ b/docs/core-module/17-rs.html @@ -112,10 +112,8 @@ but also (in most cases) a TX_S_*resp->via_I6 = via_I6; resp->via_I6_routine_compiled = FALSE; resp->resp_package = Hierarchy::package_within(RESPONSES_HAP, Rules::package(resp->responding_rule)); - resp->resp_iname = InterNames::one_off(I"launcher", resp->resp_package); - Inter::Symbols::set_flag(InterNames::to_symbol(resp->resp_iname), MAKE_NAME_UNIQUE); - resp->constant_iname = InterNames::one_off(I"as_constant", resp->resp_package); - Inter::Symbols::set_flag(InterNames::to_symbol(resp->constant_iname), MAKE_NAME_UNIQUE); + resp->resp_iname = Hierarchy::make_iname_in(AS_BLOCK_CONSTANT_HL, resp->resp_package); + resp->constant_iname = Hierarchy::make_iname_in(AS_CONSTANT_HL, resp->resp_package); if (VH) { if (Holsters::data_acceptable(VH)) { Emit::val_iname(K_value, Strings::response_launcher_iname(resp)); @@ -166,9 +164,7 @@ a call to an activity based on that value:
         package_request *R = resp->resp_package;
-        inter_name *launcher =
-            Packaging::function(InterNames::one_off(I"launcher_fn", R), R, NULL);
-        Inter::Symbols::set_flag(InterNames::to_symbol(launcher), MAKE_NAME_UNIQUE);
+        inter_name *launcher = Hierarchy::make_iname_in(LAUNCHER_HL, R);
 
         packaging_state save = Routines::begin(launcher);
 
diff --git a/docs/core-module/19-tb.html b/docs/core-module/19-tb.html
index 126fae89b..f50b01be4 100644
--- a/docs/core-module/19-tb.html
+++ b/docs/core-module/19-tb.html
@@ -202,8 +202,7 @@ some of these fields have been properly filled in.
         t->amendment_of = NULL;
         t->has_been_amended = FALSE;
         t->table_package = Hierarchy::local_package(TABLES_HAP);
-        t->table_identifier = InterNames::one_off(I"data", t->table_package);
-        Inter::Symbols::set_flag(InterNames::to_symbol(t->table_identifier), MAKE_NAME_UNIQUE);
+        t->table_identifier = Hierarchy::make_iname_in(TABLE_DATA_HL, t->table_package);
         t->approximate_array_space_needed = 0;
         t->disable_block_constant_correction = FALSE;
         t->no_columns = 0;
diff --git a/docs/core-module/19-tc.html b/docs/core-module/19-tc.html
index 1f76fa652..11fc29b47 100644
--- a/docs/core-module/19-tc.html
+++ b/docs/core-module/19-tc.html
@@ -288,9 +288,7 @@ text is passed to the following routine in turn:
         tcu.observed_kind_cell = NULL;
 
         package_request *R = Hierarchy::package_within(TABLE_COLUMNS_HAP, t->table_package);
-
-        tcu.tcu_iname = InterNames::one_off(I"column_data", R);
-        Inter::Symbols::set_flag(InterNames::to_symbol(tcu.tcu_iname), MAKE_NAME_UNIQUE);
+        tcu.tcu_iname = Hierarchy::make_iname_in(COLUMN_DATA_HL, R);
 
         return tcu;
     }
diff --git a/docs/core-module/21-ac.html b/docs/core-module/21-ac.html
index 40ce8ce0f..d61ca29aa 100644
--- a/docs/core-module/21-ac.html
+++ b/docs/core-module/21-ac.html
@@ -276,7 +276,7 @@ noun for it; for example, the "announcing activity".
         Feeds::feed_text_expanding_strings(L"before");
         Feeds::feed_wording(av->name);
         wording SW = Feeds::end(id);
-        package_request *BR = Hierarchy::package_in_package(BEFORE_RB_HL, av->av_package);
+        package_request *BR = Hierarchy::make_package_in(BEFORE_RB_HL, av->av_package);
         av->before_rules =
             Rulebooks::new_automatic(SW, av->activity_on_what_kind,
                 NO_OUTCOME, FALSE, future_action_flag, TRUE, BR);
@@ -284,7 +284,7 @@ noun for it; for example, the "announcing activity".
         Feeds::feed_text_expanding_strings(L"for");
         Feeds::feed_wording(av->name);
         SW = Feeds::end(id);
-        package_request *FR = Hierarchy::package_in_package(FOR_RB_HL, av->av_package);
+        package_request *FR = Hierarchy::make_package_in(FOR_RB_HL, av->av_package);
         av->for_rules =
             Rulebooks::new_automatic(SW, av->activity_on_what_kind,
                 SUCCESS_OUTCOME, FALSE, future_action_flag, TRUE, FR);
@@ -292,7 +292,7 @@ noun for it; for example, the "announcing activity".
         Feeds::feed_text_expanding_strings(L"after");
         Feeds::feed_wording(av->name);
         SW = Feeds::end(id);
-        package_request *AR = Hierarchy::package_in_package(AFTER_RB_HL, av->av_package);
+        package_request *AR = Hierarchy::make_package_in(AFTER_RB_HL, av->av_package);
         av->after_rules =
             Rulebooks::new_automatic(SW, av->activity_on_what_kind,
                 NO_OUTCOME, FALSE, future_action_flag, TRUE, AR);
diff --git a/docs/core-module/21-rl.html b/docs/core-module/21-rl.html
index 16157af92..acdbad672 100644
--- a/docs/core-module/21-rl.html
+++ b/docs/core-module/21-rl.html
@@ -292,8 +292,7 @@ must be added after the rule has been created:
     void Rules::set_I6_definition(rule *R, wchar_t *identifier) {
         TEMPORARY_TEXT(XT);
         WRITE_TO(XT, "%w", identifier);
-        R->rule_extern_iname = InterNames::one_off(I"exterior_rule", R->rule_package);
-        Inter::Symbols::set_flag(InterNames::to_symbol(R->rule_extern_iname), MAKE_NAME_UNIQUE);
+        R->rule_extern_iname = Hierarchy::make_iname_in(EXTERIOR_RULE_HL, R->rule_package);
 
         inter_name *xiname = Hierarchy::find_by_name(XT);
         packaging_state save = Packaging::enter(R->rule_package);
diff --git a/docs/core-module/22-pav.html b/docs/core-module/22-pav.html
index da2475e3a..9a201c0d9 100644
--- a/docs/core-module/22-pav.html
+++ b/docs/core-module/22-pav.html
@@ -157,9 +157,8 @@ an I6 routine name, but no: it compiles to a small array called a "closure".
         if (cphr->cphr_iname == NULL) {
             phrase *ph = Phrases::Constants::as_phrase(cphr);
             if (ph == NULL) internal_error("cannot reconstruct phrase from cphr");
-            package_request *closure_package = Hierarchy::package_within(CLOSURES_HAP, ph->requests_package);
-            cphr->cphr_iname = InterNames::one_off(I"closure_data", closure_package);
-            Inter::Symbols::set_flag(InterNames::to_symbol(cphr->cphr_iname), MAKE_NAME_UNIQUE);
+            package_request *P = Hierarchy::package_within(CLOSURES_HAP, ph->requests_package);
+            cphr->cphr_iname = Hierarchy::make_iname_in(CLOSURE_DATA_HL, P);
         }
         return cphr->cphr_iname;
     }
diff --git a/docs/core-module/26-jl.html b/docs/core-module/26-jl.html
index 7c123e3b1..5b534a9e6 100644
--- a/docs/core-module/26-jl.html
+++ b/docs/core-module/26-jl.html
@@ -70,8 +70,7 @@ reserves no memory.
         lns->label_base_iname = InterNames::label_base_name(lns->label_prefix);
 
         package_request *PR2 = Hierarchy::synoptic_package(LABEL_STORAGES_HAP);
-        lns->label_storage_iname = InterNames::one_off(I"label_associated_storage", PR2);
-        Inter::Symbols::set_flag(InterNames::to_symbol(lns->label_storage_iname), MAKE_NAME_UNIQUE);
+        lns->label_storage_iname = Hierarchy::make_iname_in(LABEL_ASSOCIATED_STORAGE_HL, PR2);
 
         lns->label_counter = 0;
         lns->allocate_storage = 0;
diff --git a/docs/core-module/26-lt.html b/docs/core-module/26-lt.html
index 0845a04ef..76c2fc931 100644
--- a/docs/core-module/26-lt.html
+++ b/docs/core-module/26-lt.html
@@ -58,8 +58,7 @@ prints the name of a routine to be compiled later.
             InterNames::one_off(I"list_together_fn", PR),
             PR,
             InterNames::new(LIST_TOGETHER_ROUTINE_INAMEF));
-        ltr->ltr_array_iname = InterNames::one_off(I"list_together_array", PR);
-        Inter::Symbols::set_flag(InterNames::to_symbol(ltr->ltr_array_iname), MAKE_NAME_UNIQUE);
+        ltr->ltr_array_iname = Hierarchy::make_iname_in(LIST_TOGETHER_ARRAY_HL, PR);
 
         ltr->articles_bit = include_articles;
         return ltr->ltr_array_iname;
diff --git a/docs/core-module/26-ts.html b/docs/core-module/26-ts.html
index 0c89f59e5..ba7a8a96b 100644
--- a/docs/core-module/26-ts.html
+++ b/docs/core-module/26-ts.html
@@ -389,10 +389,8 @@ without notice.
         test->text_of_script = Str::new();
 
         package_request *P = Hierarchy::local_package(TESTS_HAP);
-        test->text_iname = InterNames::one_off(I"script", P);
-        test->req_iname = InterNames::one_off(I"requirements", P);
-        Inter::Symbols::set_flag(InterNames::to_symbol(test->text_iname), MAKE_NAME_UNIQUE);
-        Inter::Symbols::set_flag(InterNames::to_symbol(test->req_iname), MAKE_NAME_UNIQUE);
+        test->text_iname = Hierarchy::make_iname_in(SCRIPT_HL, P);
+        test->req_iname = Hierarchy::make_iname_in(REQUIREMENTS_HL, P);
 
         ts_being_parsed = test;
         <test-sentence-object>(ParseTree::get_text(PN->next->next));
diff --git a/docs/core-module/27-cm.html b/docs/core-module/27-cm.html
index 20f11b7a9..cd3c5cc43 100644
--- a/docs/core-module/27-cm.html
+++ b/docs/core-module/27-cm.html
@@ -16,7 +16,7 @@
     typedef struct compilation_module {
         struct inter_namespace *namespace;
         struct package_request *resources;
-        struct subpackage_requests subpackages;
+        struct submodule_requests subpackages;
         struct parse_node *hanging_from;
         MEMORY_MANAGEMENT
     } compilation_module;
@@ -94,7 +94,7 @@
         return C;
     }
 
-    subpackage_requests *Modules::subpackages(compilation_module *C) {
+    submodule_requests *Modules::subpackages(compilation_module *C) {
         if (C == NULL) internal_error("no module");
         return &(C->subpackages);
     }
@@ -165,7 +165,7 @@
 
 

The function Modules::propagate_downwards appears nowhere else.

-

The function Modules::find is used in 5/nv (§16), 6/bp (§31), 15/pr (§5.3), 21/rl (§26), 22/ph (§6.8), 22/tp (§7), 27/pc (§7), 27/hr (§6).

+

The function Modules::find is used in 5/nv (§16), 6/bp (§31), 15/pr (§5.3), 21/rl (§26), 22/ph (§6.8), 22/tp (§7), 27/pc (§7), 27/hr (§5).

The function Modules::markable appears nowhere else.

diff --git a/docs/core-module/27-ei.html b/docs/core-module/27-ei.html index c120a817e..ed38aff81 100644 --- a/docs/core-module/27-ei.html +++ b/docs/core-module/27-ei.html @@ -1205,7 +1205,7 @@ insert them into the Inter stream close to the top.

The function Emit::kind_inner is used in §3.

-

The function Emit::variable is used in 5/nv (§16), 27/hr (§5).

+

The function Emit::variable is used in 5/nv (§16), 27/hr (§4).

The function Emit::marker appears nowhere else.

@@ -1231,7 +1231,7 @@ insert them into the Inter stream close to the top.

The function Emit::named_generic_constant is used in 21/rl (§9).

-

The function Emit::named_numeric_constant is used in 6/rlt (§20.3), 13/kak (§5), 13/rsfk (§26), 21/ac (§6), 22/cs (§8), 24/ch (§8), 26/vm (§8), 26/uo (§21), 26/pl (§12), 26/ts (§10), 27/hr (§5).

+

The function Emit::named_numeric_constant is used in 6/rlt (§20.3), 13/kak (§5), 13/rsfk (§26), 21/ac (§6), 22/cs (§8), 24/ch (§8), 26/vm (§8), 26/uo (§21), 26/pl (§12), 26/ts (§10), 27/hr (§4).

The function Emit::hold_numeric_constant appears nowhere else.

diff --git a/docs/core-module/27-hl.html b/docs/core-module/27-hl.html index 11abb5080..e442bf9f2 100644 --- a/docs/core-module/27-hl.html +++ b/docs/core-module/27-hl.html @@ -1,7 +1,7 @@ - 27/pc + 27/tr @@ -13,15 +13,66 @@
+    typedef struct location_requirement {
+        struct submodule_identity *this_local_submodule;
+        struct package_request *this_mundane_package;
+        int this_exotic_package;
+        struct inter_symbol *any_package_of_this_type;
+    } location_requirement;
+
+    location_requirement HierarchyLocations::blank(void) {
+        location_requirement req;
+        req.this_local_submodule = NULL;
+        req.this_mundane_package = NULL;
+        req.this_exotic_package = -1;
+        req.any_package_of_this_type = NULL;
+        return req;
+    }
+
+    location_requirement HierarchyLocations::local_submodule(submodule_identity *sid) {
+        location_requirement req = HierarchyLocations::blank();
+        req.this_local_submodule = sid;
+        return req;
+    }
+
+    location_requirement HierarchyLocations::generic_submodule(submodule_identity *sid) {
+        location_requirement req = HierarchyLocations::blank();
+        req.this_mundane_package = Packaging::generic_resource(sid);
+        return req;
+    }
+
+    location_requirement HierarchyLocations::synoptic_submodule(submodule_identity *sid) {
+        location_requirement req = HierarchyLocations::blank();
+        req.this_mundane_package = Packaging::synoptic_resource(sid);
+        return req;
+    }
+
+    location_requirement HierarchyLocations::any_package_of_type(text_stream *ptype_name) {
+        location_requirement req = HierarchyLocations::blank();
+        req.any_package_of_this_type = HierarchyLocations::ptype(ptype_name);
+        return req;
+    }
+
+    location_requirement HierarchyLocations::this_package(package_request *P) {
+        location_requirement req = HierarchyLocations::blank();
+        req.this_mundane_package = P;
+        return req;
+    }
+
+    location_requirement HierarchyLocations::this_exotic_package(int N) {
+        location_requirement req = HierarchyLocations::blank();
+        req.this_exotic_package = N;
+        return req;
+    }
+
     typedef struct named_resource_location {
         int access_number;
         struct text_stream *access_name;
         struct text_stream *function_package_name;
         struct text_stream *datum_package_name;
-        struct package_request *package;
-        struct inter_symbol *package_type;
-        int exotic_package_identifier;
+        struct location_requirement requirements;
         struct inter_name *equates_to_iname;
+        struct name_translation trans;
         MEMORY_MANAGEMENT
     } named_resource_location;
 
@@ -31,27 +82,18 @@
         nrl->access_name = NULL;
         nrl->function_package_name = NULL;
         nrl->datum_package_name = NULL;
-        nrl->package = NULL;
-        nrl->package_type = NULL;
         nrl->equates_to_iname = NULL;
-        nrl->exotic_package_identifier = -1;
+        nrl->trans = Translation::same();
+        nrl->requirements = HierarchyLocations::blank();
         return nrl;
     }
 
-    named_resource_location *HierarchyLocations::make(int id, text_stream *name, package_request *P) {
+    named_resource_location *HierarchyLocations::con(int id, text_stream *name, name_translation nt, location_requirement req) {
         named_resource_location *nrl = HierarchyLocations::new();
         nrl->access_number = id;
         nrl->access_name = Str::duplicate(name);
-        nrl->package = P;
-        HierarchyLocations::index(nrl);
-        return nrl;
-    }
-
-    named_resource_location *HierarchyLocations::make_in_exotic(int id, text_stream *name, int x) {
-        named_resource_location *nrl = HierarchyLocations::new();
-        nrl->access_number = id;
-        nrl->access_name = Str::duplicate(name);
-        nrl->exotic_package_identifier = x;
+        nrl->requirements = req;
+        nrl->trans = nt;
         HierarchyLocations::index(nrl);
         return nrl;
     }
@@ -60,57 +102,30 @@
         named_resource_location *nrl = HierarchyLocations::new();
         nrl->access_number = id;
         nrl->access_name = Str::duplicate(name);
-        nrl->package = iname->eventual_owner;
+        nrl->requirements = HierarchyLocations::this_package(iname->eventual_owner);
         nrl->equates_to_iname = iname;
         HierarchyLocations::index(nrl);
         return nrl;
     }
 
-    named_resource_location *HierarchyLocations::make_function(int id, text_stream *name, text_stream *call_name, package_request *P) {
+    named_resource_location *HierarchyLocations::func(int id, text_stream *name, name_translation nt, location_requirement req) {
         named_resource_location *nrl = CREATE(named_resource_location);
         nrl->access_number = id;
-        nrl->access_name = Str::duplicate(call_name);
+        nrl->access_name = Str::duplicate(nt.translate_to);
         nrl->function_package_name = Str::duplicate(name);
-        nrl->package = P;
+        nrl->requirements = req;
+        nrl->trans = nt;
         HierarchyLocations::index(nrl);
         return nrl;
     }
 
-    named_resource_location *HierarchyLocations::make_function_in_exotic(int id, text_stream *name, text_stream *call_name, int x) {
+    named_resource_location *HierarchyLocations::datum(int id, text_stream *name, name_translation nt, location_requirement req) {
         named_resource_location *nrl = CREATE(named_resource_location);
         nrl->access_number = id;
-        nrl->access_name = Str::duplicate(call_name);
-        nrl->function_package_name = Str::duplicate(name);
-        nrl->exotic_package_identifier = x;
-        HierarchyLocations::index(nrl);
-        return nrl;
-    }
-
-    named_resource_location *HierarchyLocations::make_datum(int id, text_stream *name, text_stream *datum_name, package_request *P) {
-        named_resource_location *nrl = CREATE(named_resource_location);
-        nrl->access_number = id;
-        nrl->access_name = Str::duplicate(datum_name);
+        nrl->access_name = Str::duplicate(nt.translate_to);
         nrl->datum_package_name = Str::duplicate(name);
-        nrl->package = P;
-        HierarchyLocations::index(nrl);
-        return nrl;
-    }
-
-    named_resource_location *HierarchyLocations::make_datum_in_exotic(int id, text_stream *name, text_stream *datum_name, int x) {
-        named_resource_location *nrl = CREATE(named_resource_location);
-        nrl->access_number = id;
-        nrl->access_name = Str::duplicate(datum_name);
-        nrl->datum_package_name = Str::duplicate(name);
-        nrl->exotic_package_identifier = x;
-        HierarchyLocations::index(nrl);
-        return nrl;
-    }
-
-    named_resource_location *HierarchyLocations::make_rulebook_within(int id, text_stream *name, inter_symbol *ptype) {
-        named_resource_location *nrl = CREATE(named_resource_location);
-        nrl->access_number = id;
-        nrl->access_name = Str::duplicate(name);
-        nrl->package_type = ptype;
+        nrl->requirements = req;
+        nrl->trans = nt;
         HierarchyLocations::index(nrl);
         return nrl;
     }
@@ -129,7 +144,7 @@
     void HierarchyLocations::index(named_resource_location *nrl) {
         if (nrls_created == FALSE) HierarchyLocations::create_nrls();
         if (nrl->access_number >= 0) nrls_indexed_by_id[nrl->access_number] = nrl;
-        if (nrl->package_type == NULL) {
+        if (nrl->requirements.any_package_of_this_type == NULL) {
             Dictionaries::create(nrls_indexed_by_name, nrl->access_name);
             Dictionaries::write_value(nrls_indexed_by_name, nrl->access_name, (void *) nrl);
         }
@@ -159,83 +174,116 @@
     }
 
     inter_name *HierarchyLocations::nrl_to_iname(named_resource_location *nrl) {
-        if (nrl->package_type) internal_error("NRL accessed inappropriately");
+        if (nrl->requirements.any_package_of_this_type) internal_error("NRL accessed inappropriately");
         if (nrl->equates_to_iname == NULL) {
-            if (nrl->package == NULL) {
-                if (nrl->exotic_package_identifier >= 0)
-                    nrl->package = Hierarchy::exotic_package(nrl->exotic_package_identifier);
+            if (nrl->requirements.this_mundane_package == NULL) {
+                if (nrl->requirements.this_exotic_package >= 0)
+                    nrl->requirements.this_mundane_package = Hierarchy::exotic_package(nrl->requirements.this_exotic_package);
                 else internal_error("package can't be found'");
             }
-
-            if (nrl->package == Hierarchy::template()) {
-                packaging_state save = Packaging::enter(nrl->package);
+            if (nrl->requirements.this_mundane_package == Hierarchy::template()) {
+                packaging_state save = Packaging::enter(nrl->requirements.this_mundane_package);
                 nrl->equates_to_iname = InterNames::one_off(nrl->access_name, Hierarchy::template());
                 nrl->equates_to_iname->symbol = Emit::extern(nrl->access_name, K_value);
                 Packaging::exit(save);
             } else if (Str::len(nrl->function_package_name) > 0) {
                 nrl->equates_to_iname = Packaging::function_text(
-                    InterNames::one_off(nrl->function_package_name, nrl->package),
-                    nrl->package,
+                    InterNames::one_off(nrl->function_package_name, nrl->requirements.this_mundane_package),
+                    nrl->requirements.this_mundane_package,
                     nrl->access_name);
             } else if (Str::len(nrl->datum_package_name) > 0) {
                 nrl->equates_to_iname = Packaging::datum_text(
-                    InterNames::one_off(nrl->datum_package_name, nrl->package),
-                    nrl->package,
+                    InterNames::one_off(nrl->datum_package_name, nrl->requirements.this_mundane_package),
+                    nrl->requirements.this_mundane_package,
                     nrl->access_name);
-            } else if ((nrl->package) && (nrl->equates_to_iname == NULL)) {
-                nrl->equates_to_iname = InterNames::one_off(nrl->access_name, nrl->package);
+            } else if ((nrl->requirements.this_mundane_package) && (nrl->equates_to_iname == NULL)) {
+                nrl->equates_to_iname = InterNames::one_off(nrl->access_name, nrl->requirements.this_mundane_package);
             }
 
             nrl->equates_to_iname = Hierarchy::post_process(nrl->access_number, nrl->equates_to_iname);
-            nrl->package = Packaging::home_of(nrl->equates_to_iname);
+            nrl->requirements.this_mundane_package = Packaging::home_of(nrl->equates_to_iname);
         }
         return nrl->equates_to_iname;
     }
 
+    inter_name *HierarchyLocations::find_in_package(int id, package_request *P, wording W) {
+        if (nrls_created == FALSE) HierarchyLocations::create_nrls();
+        if ((id < 0) || (id >= MAX_HL) || (nrls_indexed_by_id[id] == NULL))
+            internal_error("bad nrl ID");
+        named_resource_location *nrl = nrls_indexed_by_id[id];
+        if (nrl->requirements.any_package_of_this_type == NULL) internal_error("NRL accessed inappropriately");
+        if ((P == NULL) || (P->eventual_type != nrl->requirements.any_package_of_this_type)) internal_error("constant in wrong superpackage");
+        inter_name *iname = NULL;
+        if (Str::len(nrl->function_package_name) > 0) {
+            iname = Packaging::function_text(
+                    InterNames::one_off(nrl->function_package_name, P),
+                    P,
+                    NULL);
+        } else {
+            iname = InterNames::one_off(nrl->access_name, P);
+        }
+        if (!Wordings::empty(W)) InterNames::attach_memo(iname, W);
+        if (nrl->trans.translate_to)
+            InterNames::translate(iname, nrl->trans.translate_to);
+        if (nrl->trans.then_make_unique)
+            Inter::Symbols::set_flag(InterNames::to_symbol(iname), MAKE_NAME_UNIQUE);
+        return iname;
+    }
+
     package_request *HierarchyLocations::package_in_package(int id, package_request *P) {
         if (nrls_created == FALSE) HierarchyLocations::create_nrls();
         if ((id < 0) || (id >= MAX_HL) || (nrls_indexed_by_id[id] == NULL))
             internal_error("bad nrl ID");
         named_resource_location *nrl = nrls_indexed_by_id[id];
-        if (nrl->package_type == NULL) internal_error("NRL accessed inappropriately");
-        if ((P == NULL) || (P->eventual_type != nrl->package_type)) internal_error("subpackage in wrong superpackage");
-        return Packaging::request(InterNames::one_off(nrl->access_name, P), P, nrl->package_type);
+        if (nrl->requirements.any_package_of_this_type == NULL) internal_error("NRL accessed inappropriately");
+        if ((P == NULL) || (P->eventual_type != nrl->requirements.any_package_of_this_type)) internal_error("subpackage in wrong superpackage");
+        return Packaging::request(InterNames::one_off(nrl->access_name, P), P, nrl->requirements.any_package_of_this_type);
     }
 

+

The function HierarchyLocations::blank is used in 27/hr (§1).

+ +

The function HierarchyLocations::local_submodule is used in 27/hr (§1.4, §1.6, §1.8, §1.12, §1.14, §1.16, §1.20, §1.22, §1.24, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.44).

+ +

The function HierarchyLocations::generic_submodule is used in 27/hr (§1.2, §1.4, §1.14, §1.28, §1.36, §1.38).

+ +

The function HierarchyLocations::synoptic_submodule is used in 27/hr (§1.2, §1.4, §1.6, §1.10, §1.12, §1.18, §1.22, §1.26, §1.28, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42).

+ +

The function HierarchyLocations::any_package_of_type is used in 27/hr (§1.4, §1.6, §1.8, §1.20, §1.22, §1.28, §1.30, §1.32, §1.36, §1.40, §1.42).

+ +

The function HierarchyLocations::this_package is used in 27/hr (§1.48, §5).

+ +

The function HierarchyLocations::this_exotic_package is used in 27/hr (§1.46).

+

The function HierarchyLocations::new appears nowhere else.

-

The function HierarchyLocations::make is used in 27/hr (§2.2, §2.4, §2.6, §2.10, §2.12, §2.14, §2.22, §2.26, §2.28, §2.34, §2.36, §2.38, §2.40, §2.42, §2.48, §6).

+

The function HierarchyLocations::con is used in 27/hr (§1.2, §1.4, §1.6, §1.8, §1.10, §1.12, §1.14, §1.20, §1.22, §1.26, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.46, §1.48, §5).

-

The function HierarchyLocations::make_in_exotic is used in 27/hr (§2.46).

+

The function HierarchyLocations::make_as is used in 27/hr (§5).

-

The function HierarchyLocations::make_as is used in 27/hr (§6).

+

The function HierarchyLocations::func is used in 27/hr (§1.4, §1.12, §1.18, §1.22, §1.26, §1.28, §1.36, §1.38, §1.40, §1.42, §1.46).

-

The function HierarchyLocations::make_function is used in 27/hr (§2.4, §2.12, §2.18, §2.22, §2.26, §2.28, §2.36, §2.38, §2.40, §2.42).

- -

The function HierarchyLocations::make_function_in_exotic is used in 27/hr (§2.46).

- -

The function HierarchyLocations::make_datum is used in 27/hr (§2.10).

- -

The function HierarchyLocations::make_datum_in_exotic appears nowhere else.

- -

The function HierarchyLocations::make_rulebook_within is used in 27/hr (§2.4, §2.6).

+

The function HierarchyLocations::datum is used in 27/hr (§1.10).

The function HierarchyLocations::create_nrls appears nowhere else.

The function HierarchyLocations::index appears nowhere else.

-

The function HierarchyLocations::find is used in 27/hr (§6).

+

The function HierarchyLocations::find is used in 27/hr (§5).

-

The function HierarchyLocations::find_by_name is used in 27/hr (§6).

+

The function HierarchyLocations::find_by_name is used in 27/hr (§5).

The function HierarchyLocations::function appears nowhere else.

The function HierarchyLocations::nrl_to_iname appears nowhere else.

-

The function HierarchyLocations::package_in_package is used in 27/hr (§6).

+

The function HierarchyLocations::find_in_package is used in 27/hr (§5).

+ +

The function HierarchyLocations::package_in_package is used in 27/hr (§5).

+ +

The structure location_requirement is accessed in 27/hr and here.

The structure named_resource_location is private to this section.

@@ -248,11 +296,10 @@
     typedef struct hierarchy_attachment_point {
-        int submodule;
+        int hap_id;
         int counter;
         struct inter_symbol *type;
-        struct inter_symbol *super_type;
-        int synoptic_flag;
+        struct location_requirement requirements;
         MEMORY_MANAGEMENT
     } hierarchy_attachment_point;
 
@@ -264,64 +311,37 @@
         for (int i=0; i<MAX_HAP; i++) haps_indexed_by_id[i] = NULL;
     }
 
-    hierarchy_attachment_point *HierarchyLocations::ap(int ap_id, int submodule_id, text_stream *iterated_text, inter_symbol *ptype) {
-        hierarchy_attachment_point *hap = CREATE(hierarchy_attachment_point);
-        hap->submodule = submodule_id;
-        hap->counter = Packaging::register_counter(iterated_text);
-        hap->type = ptype;
-        hap->super_type = NULL;
-        hap->synoptic_flag = FALSE;
+    void HierarchyLocations::index_ap(hierarchy_attachment_point *hap) {
         if (haps_created == FALSE) HierarchyLocations::create_haps();
-        if (ap_id >= 0) haps_indexed_by_id[ap_id] = hap;
+        if (hap->hap_id >= 0) haps_indexed_by_id[hap->hap_id] = hap;
+    }
+
+    hierarchy_attachment_point *HierarchyLocations::ap(int ap_id, location_requirement req, text_stream *iterated_text, text_stream *ptype_name) {
+        hierarchy_attachment_point *hap = CREATE(hierarchy_attachment_point);
+        hap->hap_id = ap_id;
+        hap->requirements = req;
+        hap->counter = Packaging::register_counter(iterated_text);
+        hap->type = HierarchyLocations::ptype(ptype_name);
+        HierarchyLocations::index_ap(hap);
         return hap;
     }
 
-    hierarchy_attachment_point *HierarchyLocations::synoptic_ap(int ap_id, int submodule_id, text_stream *iterated_text, inter_symbol *ptype) {
-        hierarchy_attachment_point *hap = HierarchyLocations::ap(ap_id, submodule_id, iterated_text, ptype);
-        hap->synoptic_flag = TRUE;
-        return hap;
-    }
-
-    hierarchy_attachment_point *HierarchyLocations::ap_within(int ap_id, inter_symbol *sptype, text_stream *iterated_text, inter_symbol *ptype) {
-        hierarchy_attachment_point *hap = HierarchyLocations::ap(ap_id, -1, iterated_text, ptype);
-        hap->super_type = sptype;
-        return hap;
-    }
-
-    package_request *HierarchyLocations::resource_package(compilation_module *C, int hap_id) {
+    package_request *HierarchyLocations::attach_new_package(compilation_module *C, package_request *R, int hap_id) {
         if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL))
             internal_error("invalid HAP request");
         hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id];
-        package_request *R = Packaging::request_resource(C, hap->submodule);
-        if (hap->synoptic_flag) internal_error("subpackage is synoptic");
-        return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type);
-    }
 
-    package_request *HierarchyLocations::package(compilation_module *C, int hap_id) {
-        if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL))
-            internal_error("invalid HAP request");
-        hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id];
-        if (hap->super_type) internal_error("subpackage in top-level submodule");
-        package_request *R = Packaging::request_resource(C, hap->submodule);
-        if (hap->synoptic_flag) internal_error("subpackage is synoptic");
-        return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type);
-    }
+        if (hap->requirements.this_local_submodule)
+            R = Packaging::request_resource(C, hap->requirements.this_local_submodule);
+        else if (hap->requirements.this_mundane_package)
+            R = hap->requirements.this_mundane_package;
+        else if (hap->requirements.this_exotic_package >= 0)
+            R = Hierarchy::exotic_package(hap->requirements.this_exotic_package);
+        else if (hap->requirements.any_package_of_this_type) {
+            if ((R == NULL) || (R->eventual_type != hap->requirements.any_package_of_this_type))
+                internal_error("subpackage in wrong superpackage");
+        }
 
-    package_request *HierarchyLocations::package_within(package_request *R, int hap_id) {
-        if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL))
-            internal_error("invalid HAP request");
-        hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id];
-        if ((R == NULL) || (R->eventual_type != hap->super_type)) internal_error("subpackage in wrong superpackage");
-        if (hap->synoptic_flag) internal_error("subpackage is synoptic");
-        return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type);
-    }
-
-    package_request *HierarchyLocations::synoptic_package(int hap_id) {
-        if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL))
-            internal_error("invalid HAP request");
-        hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id];
-        if (hap->synoptic_flag == FALSE) internal_error("subpackage not synoptic");
-        package_request *R = Packaging::synoptic_resource(hap->submodule);
         return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type);
     }
 
@@ -330,24 +350,42 @@

The function HierarchyLocations::create_haps appears nowhere else.

-

The function HierarchyLocations::ap is used in 27/hr (§2.4, §2.6, §2.8, §2.12, §2.14, §2.16, §2.20, §2.22, §2.24, §2.28, §2.30, §2.32, §2.34, §2.36, §2.38, §2.40, §2.42, §2.44).

+

The function HierarchyLocations::index_ap appears nowhere else.

-

The function HierarchyLocations::synoptic_ap is used in 27/hr (§2.22, §2.32).

+

The function HierarchyLocations::ap is used in 27/hr (§1.4, §1.6, §1.8, §1.12, §1.14, §1.16, §1.20, §1.22, §1.24, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.44).

-

The function HierarchyLocations::ap_within is used in 27/hr (§2.32, §2.40, §2.42).

- -

The function HierarchyLocations::resource_package appears nowhere else.

- -

The function HierarchyLocations::package is used in 27/hr (§6).

- -

The function HierarchyLocations::package_within is used in 27/hr (§6).

- -

The function HierarchyLocations::synoptic_package is used in 27/hr (§6).

+

The function HierarchyLocations::attach_new_package is used in 27/hr (§5).

The structure hierarchy_attachment_point is accessed in 8/ed and here.

+

§3.

+ + +
+    dictionary *ptypes_indexed_by_name = NULL;
+
+    int ptypes_created = FALSE;
+    inter_symbol *HierarchyLocations::ptype(text_stream *name) {
+        if (ptypes_created == FALSE) {
+            ptypes_created = TRUE;
+            ptypes_indexed_by_name = Dictionaries::new(512, FALSE);
+        }
+        if (Dictionaries::find(ptypes_indexed_by_name, name))
+            return (inter_symbol *) Dictionaries::read_value(ptypes_indexed_by_name, name);
+        inter_symbol *new_ptype = Packaging::register_ptype(name, TRUE);
+        Dictionaries::create(ptypes_indexed_by_name, name);
+        Dictionaries::write_value(ptypes_indexed_by_name, name, (void *) new_ptype);
+        return new_ptype;
+    }
+
+
+ +

+ +

The function HierarchyLocations::ptype is used in §1, §2.

+
-
+
diff --git a/docs/core-module/27-hr.html b/docs/core-module/27-hr.html index 877241a06..b1b875c69 100644 --- a/docs/core-module/27-hr.html +++ b/docs/core-module/27-hr.html @@ -12,72 +12,6 @@

§1.

-
-    enum BASICS_SUBMODULE from 0
-    enum ACTIONS_SUBMODULE
-    enum ACTIVITIES_SUBMODULE
-    enum ADJECTIVES_SUBMODULE
-    enum BIBLIOGRAPHIC_SUBMODULE
-    enum CHRONOLOGY_SUBMODULE
-    enum CONJUGATIONS_SUBMODULE
-    enum EQUATIONS_SUBMODULE
-    enum EXTENSIONS_SUBMODULE
-    enum EXTERNAL_FILES_SUBMODULE
-    enum GRAMMAR_SUBMODULE
-    enum IF_SUBMODULE
-    enum INSTANCES_SUBMODULE
-    enum KINDS_SUBMODULE
-    enum LISTING_SUBMODULE
-    enum PHRASES_SUBMODULE
-    enum PROPERTIES_SUBMODULE
-    enum RELATIONS_SUBMODULE
-    enum RULEBOOKS_SUBMODULE
-    enum RULES_SUBMODULE
-    enum TABLES_SUBMODULE
-    enum VARIABLES_SUBMODULE
-
- -
-
-    enum MAX_SUBMODULE
-    text_stream *Hierarchy::submodule_name(int spid) {
-        text_stream *N = NULL;
-        switch (spid) {
-            case BASICS_SUBMODULE: N = I"basics"; break;
-            case ACTIONS_SUBMODULE: N = I"actions"; break;
-            case ACTIVITIES_SUBMODULE: N = I"activities"; break;
-            case ADJECTIVES_SUBMODULE: N = I"adjectives"; break;
-            case BIBLIOGRAPHIC_SUBMODULE: N = I"bibliographic"; break;
-            case CHRONOLOGY_SUBMODULE: N = I"chronology"; break;
-            case CONJUGATIONS_SUBMODULE: N = I"conjugations"; break;
-            case EQUATIONS_SUBMODULE: N = I"equations"; break;
-            case EXTENSIONS_SUBMODULE: N = I"extensions"; break;
-            case EXTERNAL_FILES_SUBMODULE: N = I"external_files"; break;
-            case GRAMMAR_SUBMODULE: N = I"grammar"; break;
-            case IF_SUBMODULE: N = I"interactive_fiction"; break;
-            case INSTANCES_SUBMODULE: N = I"instances"; break;
-            case KINDS_SUBMODULE: N = I"kinds"; break;
-            case LISTING_SUBMODULE: N = I"listing"; break;
-            case PHRASES_SUBMODULE: N = I"phrases"; break;
-            case PROPERTIES_SUBMODULE: N = I"properties"; break;
-            case RELATIONS_SUBMODULE: N = I"relations"; break;
-            case RULEBOOKS_SUBMODULE: N = I"rulebooks"; break;
-            case RULES_SUBMODULE: N = I"rules"; break;
-            case TABLES_SUBMODULE: N = I"tables"; break;
-            case VARIABLES_SUBMODULE: N = I"variables"; break;
-            default: internal_error("nameless resource");
-        }
-        return N;
-    }
-
- -

- -

The function Hierarchy::submodule_name is used in 27/pc (§7.1).

- -

§2.

- -
     enum BLOCK_CONSTANT_PR_COUNTER from 0
     enum BLOCK_PR_COUNTER
@@ -92,7 +26,11 @@
 
+    location_requirement home_for_weak_type_IDs;
+
     void Hierarchy::establish(void) {
+        home_for_weak_type_IDs = HierarchyLocations::blank();
+
         Packaging::register_counter(I"block_constant");
         Packaging::register_counter(I"code_block");
         Packaging::register_counter(I"form");
@@ -104,31 +42,31 @@
         Packaging::register_counter(I"ts_fn");
         Packaging::register_counter(I"task");
 
-        <Establish basics 2.2>;
-        <Establish actions 2.4>;
-        <Establish activities 2.6>;
-        <Establish adjectives 2.8>;
-        <Establish bibliographic 2.10>;
-        <Establish chronology 2.12>;
-        <Establish conjugations 2.14>;
-        <Establish equations 2.16>;
-        <Establish extensions 2.18>;
-        <Establish external files 2.20>;
-        <Establish grammar 2.22>;
-        <Establish instances 2.24>;
-        <Establish int-fiction 2.26>;
-        <Establish kinds 2.28>;
-        <Establish listing 2.30>;
-        <Establish phrases 2.32>;
-        <Establish properties 2.34>;
-        <Establish relations 2.36>;
-        <Establish rulebooks 2.38>;
-        <Establish rules 2.40>;
-        <Establish tables 2.42>;
-        <Establish variables 2.44>;
-        <The rest 2.46>;
+        <Establish basics 1.2>;
+        <Establish actions 1.4>;
+        <Establish activities 1.6>;
+        <Establish adjectives 1.8>;
+        <Establish bibliographic 1.10>;
+        <Establish chronology 1.12>;
+        <Establish conjugations 1.14>;
+        <Establish equations 1.16>;
+        <Establish extensions 1.18>;
+        <Establish external files 1.20>;
+        <Establish grammar 1.22>;
+        <Establish instances 1.24>;
+        <Establish int-fiction 1.26>;
+        <Establish kinds 1.28>;
+        <Establish listing 1.30>;
+        <Establish phrases 1.32>;
+        <Establish properties 1.34>;
+        <Establish relations 1.36>;
+        <Establish rulebooks 1.38>;
+        <Establish rules 1.40>;
+        <Establish tables 1.42>;
+        <Establish variables 1.44>;
+        <The rest 1.46>;
 
-        <Establish template resources 2.48>;
+        <Establish template resources 1.48>;
     }
 
@@ -136,7 +74,7 @@

The function Hierarchy::establish is used in 27/hl (§1).

-

§2.1. Basics.

+

§1.1. Basics.

@@ -173,54 +111,57 @@
     enum MAX_FRAME_SIZE_NEEDED_HL
     enum RNG_SEED_AT_START_OF_PLAY_HL
 
-

§2.2. -<Establish basics 2.2> = +

§1.2. +<Establish basics 1.2> =

-        package_request *generic_basics = Packaging::generic_resource(BASICS_SUBMODULE);
-        HierarchyLocations::make(THESAME_HL, I"##TheSame", generic_basics);
-        HierarchyLocations::make(PLURALFOUND_HL, I"##PluralFound", generic_basics);
-        HierarchyLocations::make(PARENT_HL, I"parent", generic_basics);
-        HierarchyLocations::make(CHILD_HL, I"child", generic_basics);
-        HierarchyLocations::make(SIBLING_HL, I"sibling", generic_basics);
-        HierarchyLocations::make(SELF_HL, I"self", generic_basics);
-        HierarchyLocations::make(THEDARK_HL, I"thedark", generic_basics);
-        HierarchyLocations::make(RESPONSETEXTS_HL, I"ResponseTexts", generic_basics);
-        HierarchyLocations::make(DEBUG_HL, I"DEBUG", generic_basics);
-        HierarchyLocations::make(TARGET_ZCODE_HL, I"TARGET_ZCODE", generic_basics);
-        HierarchyLocations::make(TARGET_GLULX_HL, I"TARGET_GLULX", generic_basics);
-        HierarchyLocations::make(DICT_WORD_SIZE_HL, I"DICT_WORD_SIZE", generic_basics);
-        HierarchyLocations::make(WORDSIZE_HL, I"WORDSIZE", generic_basics);
-        HierarchyLocations::make(NULL_HL, I"NULL", generic_basics);
-        HierarchyLocations::make(WORD_HIGHBIT_HL, I"WORD_HIGHBIT", generic_basics);
-        HierarchyLocations::make(WORD_NEXTTOHIGHBIT_HL, I"WORD_NEXTTOHIGHBIT", generic_basics);
-        HierarchyLocations::make(IMPROBABLE_VALUE_HL, I"IMPROBABLE_VALUE", generic_basics);
-        HierarchyLocations::make(REPARSE_CODE_HL, I"REPARSE_CODE", generic_basics);
-        HierarchyLocations::make(MAX_POSITIVE_NUMBER_HL, I"MAX_POSITIVE_NUMBER", generic_basics);
-        HierarchyLocations::make(MIN_NEGATIVE_NUMBER_HL, I"MIN_NEGATIVE_NUMBER", generic_basics);
-        HierarchyLocations::make(FLOAT_NAN_HL, I"FLOAT_NAN", generic_basics);
-        HierarchyLocations::make(CAP_SHORT_NAME_EXISTS_HL, I"CAP_SHORT_NAME_EXISTS", generic_basics);
-        HierarchyLocations::make(NI_BUILD_COUNT_HL, I"NI_BUILD_COUNT", generic_basics);
-        HierarchyLocations::make(RANKING_TABLE_HL, I"RANKING_TABLE", generic_basics);
-        HierarchyLocations::make(PLUGIN_FILES_HL, I"PLUGIN_FILES", generic_basics);
-        HierarchyLocations::make(MAX_WEAK_ID_HL, I"MAX_WEAK_ID", generic_basics);
-        HierarchyLocations::make(NO_VERB_VERB_DEFINED_HL, I"NO_VERB_VERB_DEFINED", generic_basics);
-        HierarchyLocations::make(NO_TEST_SCENARIOS_HL, I"NO_TEST_SCENARIOS", generic_basics);
-        HierarchyLocations::make(MEMORY_HEAP_SIZE_HL, I"MEMORY_HEAP_SIZE", generic_basics);
 
-        package_request *synoptic_basics = Packaging::synoptic_resource(BASICS_SUBMODULE);
-        HierarchyLocations::make(CCOUNT_QUOTATIONS_HL, I"CCOUNT_QUOTATIONS", synoptic_basics);
-        HierarchyLocations::make(MAX_FRAME_SIZE_NEEDED_HL, I"MAX_FRAME_SIZE_NEEDED", synoptic_basics);
-        HierarchyLocations::make(RNG_SEED_AT_START_OF_PLAY_HL, I"RNG_SEED_AT_START_OF_PLAY", synoptic_basics);
+        submodule_identity *basics = Packaging::register_submodule(I"basics");
+
+        location_requirement generic_basics = HierarchyLocations::generic_submodule(basics);
+        HierarchyLocations::con(THESAME_HL, I"##TheSame", Translation::same(), generic_basics);
+        HierarchyLocations::con(PLURALFOUND_HL, I"##PluralFound", Translation::same(), generic_basics);
+        HierarchyLocations::con(PARENT_HL, I"parent", Translation::same(), generic_basics);
+        HierarchyLocations::con(CHILD_HL, I"child", Translation::same(), generic_basics);
+        HierarchyLocations::con(SIBLING_HL, I"sibling", Translation::same(), generic_basics);
+        HierarchyLocations::con(SELF_HL, I"self", Translation::same(), generic_basics);
+        HierarchyLocations::con(THEDARK_HL, I"thedark", Translation::same(), generic_basics);
+        HierarchyLocations::con(RESPONSETEXTS_HL, I"ResponseTexts", Translation::same(), generic_basics);
+        HierarchyLocations::con(DEBUG_HL, I"DEBUG", Translation::same(), generic_basics);
+        HierarchyLocations::con(TARGET_ZCODE_HL, I"TARGET_ZCODE", Translation::same(), generic_basics);
+        HierarchyLocations::con(TARGET_GLULX_HL, I"TARGET_GLULX", Translation::same(), generic_basics);
+        HierarchyLocations::con(DICT_WORD_SIZE_HL, I"DICT_WORD_SIZE", Translation::same(), generic_basics);
+        HierarchyLocations::con(WORDSIZE_HL, I"WORDSIZE", Translation::same(), generic_basics);
+        HierarchyLocations::con(NULL_HL, I"NULL", Translation::same(), generic_basics);
+        HierarchyLocations::con(WORD_HIGHBIT_HL, I"WORD_HIGHBIT", Translation::same(), generic_basics);
+        HierarchyLocations::con(WORD_NEXTTOHIGHBIT_HL, I"WORD_NEXTTOHIGHBIT", Translation::same(), generic_basics);
+        HierarchyLocations::con(IMPROBABLE_VALUE_HL, I"IMPROBABLE_VALUE", Translation::same(), generic_basics);
+        HierarchyLocations::con(REPARSE_CODE_HL, I"REPARSE_CODE", Translation::same(), generic_basics);
+        HierarchyLocations::con(MAX_POSITIVE_NUMBER_HL, I"MAX_POSITIVE_NUMBER", Translation::same(), generic_basics);
+        HierarchyLocations::con(MIN_NEGATIVE_NUMBER_HL, I"MIN_NEGATIVE_NUMBER", Translation::same(), generic_basics);
+        HierarchyLocations::con(FLOAT_NAN_HL, I"FLOAT_NAN", Translation::same(), generic_basics);
+        HierarchyLocations::con(CAP_SHORT_NAME_EXISTS_HL, I"CAP_SHORT_NAME_EXISTS", Translation::same(), generic_basics);
+        HierarchyLocations::con(NI_BUILD_COUNT_HL, I"NI_BUILD_COUNT", Translation::same(), generic_basics);
+        HierarchyLocations::con(RANKING_TABLE_HL, I"RANKING_TABLE", Translation::same(), generic_basics);
+        HierarchyLocations::con(PLUGIN_FILES_HL, I"PLUGIN_FILES", Translation::same(), generic_basics);
+        HierarchyLocations::con(MAX_WEAK_ID_HL, I"MAX_WEAK_ID", Translation::same(), generic_basics);
+        HierarchyLocations::con(NO_VERB_VERB_DEFINED_HL, I"NO_VERB_VERB_DEFINED", Translation::same(), generic_basics);
+        HierarchyLocations::con(NO_TEST_SCENARIOS_HL, I"NO_TEST_SCENARIOS", Translation::same(), generic_basics);
+        HierarchyLocations::con(MEMORY_HEAP_SIZE_HL, I"MEMORY_HEAP_SIZE", Translation::same(), generic_basics);
+
+        location_requirement synoptic_basics = HierarchyLocations::synoptic_submodule(basics);
+        HierarchyLocations::con(CCOUNT_QUOTATIONS_HL, I"CCOUNT_QUOTATIONS", Translation::same(), synoptic_basics);
+        HierarchyLocations::con(MAX_FRAME_SIZE_NEEDED_HL, I"MAX_FRAME_SIZE_NEEDED", Translation::same(), synoptic_basics);
+        HierarchyLocations::con(RNG_SEED_AT_START_OF_PLAY_HL, I"RNG_SEED_AT_START_OF_PLAY", Translation::same(), synoptic_basics);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.3. Actions.

+

§1.3. Actions.

@@ -237,36 +178,39 @@
     enum DB_ACTION_DETAILS_HL
     enum MISTAKEACTIONSUB_HL
 
-

§2.4. -<Establish actions 2.4> = +

§1.4. +<Establish actions 1.4> =

-        package_request *generic_actions = Packaging::generic_resource(ACTIONS_SUBMODULE);
-        HierarchyLocations::make(MISTAKEACTION_HL, I"##MistakeAction", generic_actions);
+        submodule_identity *actions = Packaging::register_submodule(I"actions");
 
-        inter_symbol *action_ptype = Packaging::register_ptype(I"_action", TRUE);
-        HierarchyLocations::ap(ACTIONS_HAP, ACTIONS_SUBMODULE, I"action", action_ptype);
-            HierarchyLocations::make_rulebook_within(CHECK_RB_HL, I"check_rb", action_ptype);
-            HierarchyLocations::make_rulebook_within(CARRY_OUT_RB_HL, I"carry_out_rb", action_ptype);
-            HierarchyLocations::make_rulebook_within(REPORT_RB_HL, I"report_rb", action_ptype);
+        location_requirement generic_actions = HierarchyLocations::generic_submodule(actions);
+        HierarchyLocations::con(MISTAKEACTION_HL, I"##MistakeAction", Translation::same(), generic_actions);
 
-        package_request *synoptic_actions = Packaging::synoptic_resource(ACTIONS_SUBMODULE);
-        HierarchyLocations::make(ACTIONCODING_HL, I"ActionCoding", synoptic_actions);
-        HierarchyLocations::make(ACTIONDATA_HL, I"ActionData", synoptic_actions);
-        HierarchyLocations::make(ACTIONHAPPENED_HL, I"ActionHappened", synoptic_actions);
-        HierarchyLocations::make(AD_RECORDS_HL, I"AD_RECORDS", synoptic_actions);
-        HierarchyLocations::make(CCOUNT_ACTION_NAME_HL, I"CCOUNT_ACTION_NAME", synoptic_actions);
-        HierarchyLocations::make_function(DB_ACTION_DETAILS_HL, I"DB_Action_Details_fn", I"DB_Action_Details", synoptic_actions);
-        HierarchyLocations::make_function(MISTAKEACTIONSUB_HL, I"MistakeActionSub_fn", I"MistakeActionSub", synoptic_actions);
+        location_requirement local_actions = HierarchyLocations::local_submodule(actions);
+        HierarchyLocations::ap(ACTIONS_HAP, local_actions, I"action", I"_action");
+            location_requirement in_action = HierarchyLocations::any_package_of_type(I"_action");
+            HierarchyLocations::con(CHECK_RB_HL, I"check_rb", Translation::same(), in_action);
+            HierarchyLocations::con(CARRY_OUT_RB_HL, I"carry_out_rb", Translation::same(), in_action);
+            HierarchyLocations::con(REPORT_RB_HL, I"report_rb", Translation::same(), in_action);
+
+        location_requirement synoptic_actions = HierarchyLocations::synoptic_submodule(actions);
+        HierarchyLocations::con(ACTIONCODING_HL, I"ActionCoding", Translation::same(), synoptic_actions);
+        HierarchyLocations::con(ACTIONDATA_HL, I"ActionData", Translation::same(), synoptic_actions);
+        HierarchyLocations::con(ACTIONHAPPENED_HL, I"ActionHappened", Translation::same(), synoptic_actions);
+        HierarchyLocations::con(AD_RECORDS_HL, I"AD_RECORDS", Translation::same(), synoptic_actions);
+        HierarchyLocations::con(CCOUNT_ACTION_NAME_HL, I"CCOUNT_ACTION_NAME", Translation::same(), synoptic_actions);
+        HierarchyLocations::func(DB_ACTION_DETAILS_HL, I"DB_Action_Details_fn", Translation::to(I"DB_Action_Details"), synoptic_actions);
+        HierarchyLocations::func(MISTAKEACTIONSUB_HL, I"MistakeActionSub_fn", Translation::to(I"MistakeActionSub"), synoptic_actions);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.5. Activities.

+

§1.5. Activities.

@@ -280,57 +224,63 @@
     enum ACTIVITY_FOR_RULEBOOKS_HL
     enum ACTIVITY_VAR_CREATORS_HL
 
-

§2.6. -<Establish activities 2.6> = +

§1.6. +<Establish activities 1.6> =

-        inter_symbol *activity_ptype = Packaging::register_ptype(I"_activity", TRUE);
-        HierarchyLocations::ap(ACTIVITIES_HAP, ACTIVITIES_SUBMODULE, I"activity", activity_ptype);
-            HierarchyLocations::make_rulebook_within(BEFORE_RB_HL, I"before_rb", activity_ptype);
-            HierarchyLocations::make_rulebook_within(FOR_RB_HL, I"for_rb", activity_ptype);
-            HierarchyLocations::make_rulebook_within(AFTER_RB_HL, I"after_rb", activity_ptype);
+        submodule_identity *activities = Packaging::register_submodule(I"activities");
 
-        package_request *synoptic_activities = Packaging::synoptic_resource(ACTIVITIES_SUBMODULE);
-        HierarchyLocations::make(ACTIVITY_AFTER_RULEBOOKS_HL, I"Activity_after_rulebooks", synoptic_activities);
-        HierarchyLocations::make(ACTIVITY_ATB_RULEBOOKS_HL, I"Activity_atb_rulebooks", synoptic_activities);
-        HierarchyLocations::make(ACTIVITY_BEFORE_RULEBOOKS_HL, I"Activity_before_rulebooks", synoptic_activities);
-        HierarchyLocations::make(ACTIVITY_FOR_RULEBOOKS_HL, I"Activity_for_rulebooks", synoptic_activities);
-        HierarchyLocations::make(ACTIVITY_VAR_CREATORS_HL, I"activity_var_creators", synoptic_activities);
+        location_requirement local_activities = HierarchyLocations::local_submodule(activities);
+        HierarchyLocations::ap(ACTIVITIES_HAP, local_activities, I"activity", I"_activity");
+            location_requirement in_activity = HierarchyLocations::any_package_of_type(I"_activity");
+            HierarchyLocations::con(BEFORE_RB_HL, I"before_rb", Translation::same(), in_activity);
+            HierarchyLocations::con(FOR_RB_HL, I"for_rb", Translation::same(), in_activity);
+            HierarchyLocations::con(AFTER_RB_HL, I"after_rb", Translation::same(), in_activity);
+
+        location_requirement synoptic_activities = HierarchyLocations::synoptic_submodule(activities);
+        HierarchyLocations::con(ACTIVITY_AFTER_RULEBOOKS_HL, I"Activity_after_rulebooks", Translation::same(), synoptic_activities);
+        HierarchyLocations::con(ACTIVITY_ATB_RULEBOOKS_HL, I"Activity_atb_rulebooks", Translation::same(), synoptic_activities);
+        HierarchyLocations::con(ACTIVITY_BEFORE_RULEBOOKS_HL, I"Activity_before_rulebooks", Translation::same(), synoptic_activities);
+        HierarchyLocations::con(ACTIVITY_FOR_RULEBOOKS_HL, I"Activity_for_rulebooks", Translation::same(), synoptic_activities);
+        HierarchyLocations::con(ACTIVITY_VAR_CREATORS_HL, I"activity_var_creators", Translation::same(), synoptic_activities);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.7. Adjectives.

+

§1.7. Adjectives.

     enum ADJECTIVES_HAP
+    enum ADJECTIVE_HL
     enum ADJECTIVE_MEANINGS_HAP
     enum ADJECTIVE_PHRASES_HAP
 
-

§2.8. -<Establish adjectives 2.8> = +

§1.8. +<Establish adjectives 1.8> =

-        inter_symbol *adjective_ptype = Packaging::register_ptype(I"_adjective", TRUE);
-        HierarchyLocations::ap(ADJECTIVES_HAP, ADJECTIVES_SUBMODULE, I"adjective", adjective_ptype);
-        inter_symbol *adjective_meaning_ptype = Packaging::register_ptype(I"_adjective_meaning", TRUE);
-        HierarchyLocations::ap(ADJECTIVE_MEANINGS_HAP, ADJECTIVES_SUBMODULE, I"adjective_meaning", adjective_meaning_ptype);
-        inter_symbol *adjective_phrase_ptype = Packaging::register_ptype(I"_adjective_phrase", TRUE);
-        HierarchyLocations::ap(ADJECTIVE_PHRASES_HAP, ADJECTIVES_SUBMODULE, I"adjective_phrase", adjective_phrase_ptype);
+        submodule_identity *adjectives = Packaging::register_submodule(I"adjectives");
+
+        location_requirement local_adjectives = HierarchyLocations::local_submodule(adjectives);
+        HierarchyLocations::ap(ADJECTIVES_HAP, local_adjectives, I"adjective", I"_adjective");
+            location_requirement in_adjective = HierarchyLocations::any_package_of_type(I"_adjective");
+            HierarchyLocations::con(ADJECTIVE_HL, I"adjective", Translation::uniqued(), in_adjective);
+        HierarchyLocations::ap(ADJECTIVE_MEANINGS_HAP, local_adjectives, I"adjective_meaning", I"_adjective_meaning");
+        HierarchyLocations::ap(ADJECTIVE_PHRASES_HAP, local_adjectives, I"adjective_phrase", I"_adjective_phrase");
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.9. Bibliographic.

+

§1.9. Bibliographic.

@@ -341,26 +291,28 @@
     enum RELEASE_HL
     enum SERIAL_HL
 
-

§2.10. -<Establish bibliographic 2.10> = +

§1.10. +<Establish bibliographic 1.10> =

-        package_request *synoptic_biblio = Packaging::synoptic_resource(BIBLIOGRAPHIC_SUBMODULE);
-        HierarchyLocations::make(UUID_ARRAY_HL, I"UUID_ARRAY", synoptic_biblio);
-        HierarchyLocations::make_datum(STORY_HL, I"Story_datum", I"Story", synoptic_biblio);
-        HierarchyLocations::make_datum(HEADLINE_HL, I"Headline_datum", I"Headline", synoptic_biblio);
-        HierarchyLocations::make_datum(STORY_AUTHOR_HL, I"Story_Author_datum", I"Story_Author", synoptic_biblio);
-        HierarchyLocations::make_datum(RELEASE_HL, I"Release_datum", I"Release", synoptic_biblio);
-        HierarchyLocations::make_datum(SERIAL_HL, I"Serial_datum", I"Serial", synoptic_biblio);
+        submodule_identity *bibliographic = Packaging::register_submodule(I"bibliographic");
+
+        location_requirement synoptic_biblio = HierarchyLocations::synoptic_submodule(bibliographic);
+        HierarchyLocations::con(UUID_ARRAY_HL, I"UUID_ARRAY", Translation::same(), synoptic_biblio);
+        HierarchyLocations::datum(STORY_HL, I"Story_datum", Translation::to(I"Story"), synoptic_biblio);
+        HierarchyLocations::datum(HEADLINE_HL, I"Headline_datum", Translation::to(I"Headline"), synoptic_biblio);
+        HierarchyLocations::datum(STORY_AUTHOR_HL, I"Story_Author_datum", Translation::to(I"Story_Author"), synoptic_biblio);
+        HierarchyLocations::datum(RELEASE_HL, I"Release_datum", Translation::to(I"Release"), synoptic_biblio);
+        HierarchyLocations::datum(SERIAL_HL, I"Serial_datum", Translation::to(I"Serial"), synoptic_biblio);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.11. Chronology.

+

§1.11. Chronology.

@@ -372,29 +324,31 @@
     enum NO_PAST_TENSE_ACTIONS_HL
     enum TESTSINGLEPASTSTATE_HL
 
-

§2.12. -<Establish chronology 2.12> = +

§1.12. +<Establish chronology 1.12> =

-        inter_symbol *past_action_pattern_ptype = Packaging::register_ptype(I"_past_action_pattern", TRUE);
-        HierarchyLocations::ap(PAST_ACTION_PATTERNS_HAP, CHRONOLOGY_SUBMODULE, I"past_action_pattern", past_action_pattern_ptype);
+        submodule_identity *chronology = Packaging::register_submodule(I"chronology");
 
-        package_request *synoptic_chronology = Packaging::synoptic_resource(CHRONOLOGY_SUBMODULE);
-        HierarchyLocations::make(TIMEDEVENTSTABLE_HL, I"TimedEventsTable", synoptic_chronology);
-        HierarchyLocations::make(TIMEDEVENTTIMESTABLE_HL, I"TimedEventTimesTable", synoptic_chronology);
-        HierarchyLocations::make(PASTACTIONSI6ROUTINES_HL, I"PastActionsI6Routines", synoptic_chronology);
-        HierarchyLocations::make(NO_PAST_TENSE_CONDS_HL, I"NO_PAST_TENSE_CONDS", synoptic_chronology);
-        HierarchyLocations::make(NO_PAST_TENSE_ACTIONS_HL, I"NO_PAST_TENSE_ACTIONS", synoptic_chronology);
-        HierarchyLocations::make_function(TESTSINGLEPASTSTATE_HL, I"test_fn", I"TestSinglePastState", synoptic_chronology);
+        location_requirement local_chronology = HierarchyLocations::local_submodule(chronology);
+        HierarchyLocations::ap(PAST_ACTION_PATTERNS_HAP, local_chronology, I"past_action_pattern", I"_past_action_pattern");
+
+        location_requirement synoptic_chronology = HierarchyLocations::synoptic_submodule(chronology);
+        HierarchyLocations::con(TIMEDEVENTSTABLE_HL, I"TimedEventsTable", Translation::same(), synoptic_chronology);
+        HierarchyLocations::con(TIMEDEVENTTIMESTABLE_HL, I"TimedEventTimesTable", Translation::same(), synoptic_chronology);
+        HierarchyLocations::con(PASTACTIONSI6ROUTINES_HL, I"PastActionsI6Routines", Translation::same(), synoptic_chronology);
+        HierarchyLocations::con(NO_PAST_TENSE_CONDS_HL, I"NO_PAST_TENSE_CONDS", Translation::same(), synoptic_chronology);
+        HierarchyLocations::con(NO_PAST_TENSE_ACTIONS_HL, I"NO_PAST_TENSE_ACTIONS", Translation::same(), synoptic_chronology);
+        HierarchyLocations::func(TESTSINGLEPASTSTATE_HL, I"test_fn", Translation::to(I"TestSinglePastState"), synoptic_chronology);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.13. Conjugations.

+

§1.13. Conjugations.

@@ -405,49 +359,52 @@
     enum MVERBS_HAP
     enum VERBS_HAP
 
-

§2.14. -<Establish conjugations 2.14> = +

§1.14. +<Establish conjugations 1.14> =

-        package_request *generic_conjugations = Packaging::generic_resource(CONJUGATIONS_SUBMODULE);
-        HierarchyLocations::make(CV_MEANING_HL, I"CV_MEANING", generic_conjugations);
-        HierarchyLocations::make(CV_MODAL_HL, I"CV_MODAL", generic_conjugations);
-        HierarchyLocations::make(CV_NEG_HL, I"CV_NEG", generic_conjugations);
-        HierarchyLocations::make(CV_POS_HL, I"CV_POS", generic_conjugations);
+        submodule_identity *conjugations = Packaging::register_submodule(I"conjugations");
 
-        inter_symbol *mverb_ptype = Packaging::register_ptype(I"_modal_verb", TRUE);
-        HierarchyLocations::ap(MVERBS_HAP, CONJUGATIONS_SUBMODULE, I"mverb", mverb_ptype);
-        inter_symbol *verb_ptype = Packaging::register_ptype(I"_verb", TRUE);
-        HierarchyLocations::ap(VERBS_HAP, CONJUGATIONS_SUBMODULE, I"verb", verb_ptype);
+        location_requirement generic_conjugations = HierarchyLocations::generic_submodule(conjugations);
+        HierarchyLocations::con(CV_MEANING_HL, I"CV_MEANING", Translation::same(), generic_conjugations);
+        HierarchyLocations::con(CV_MODAL_HL, I"CV_MODAL", Translation::same(), generic_conjugations);
+        HierarchyLocations::con(CV_NEG_HL, I"CV_NEG", Translation::same(), generic_conjugations);
+        HierarchyLocations::con(CV_POS_HL, I"CV_POS", Translation::same(), generic_conjugations);
+
+        location_requirement local_conjugations = HierarchyLocations::local_submodule(conjugations);
+        HierarchyLocations::ap(MVERBS_HAP, local_conjugations, I"mverb", I"_modal_verb");
+        HierarchyLocations::ap(VERBS_HAP, local_conjugations, I"verb", I"_verb");
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.15. Equations.

+

§1.15. Equations.

     enum EQUATIONS_HAP
 
-

§2.16. -<Establish equations 2.16> = +

§1.16. +<Establish equations 1.16> =

-        inter_symbol *equation_ptype = Packaging::register_ptype(I"_equation", TRUE);
-        HierarchyLocations::ap(EQUATIONS_HAP, EQUATIONS_SUBMODULE, I"equation", equation_ptype);
+        submodule_identity *equations = Packaging::register_submodule(I"equations");
+
+        location_requirement local_equations = HierarchyLocations::local_submodule(equations);
+        HierarchyLocations::ap(EQUATIONS_HAP, local_equations, I"equation", I"_equation");
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.17. Extensions.

+

§1.17. Extensions.

@@ -455,49 +412,60 @@
     enum SHOWFULLEXTENSIONVERSIONS_HL
     enum SHOWONEEXTENSION_HL
 
-

§2.18. -<Establish extensions 2.18> = +

§1.18. +<Establish extensions 1.18> =

-        package_request *synoptic_extensions = Packaging::synoptic_resource(EXTENSIONS_SUBMODULE);
-        HierarchyLocations::make_function(SHOWEXTENSIONVERSIONS_HL, I"showextensionversions_fn", I"ShowExtensionVersions", synoptic_extensions);
-        HierarchyLocations::make_function(SHOWFULLEXTENSIONVERSIONS_HL, I"showfullextensionversions_fn", I"ShowFullExtensionVersions", synoptic_extensions);
-        HierarchyLocations::make_function(SHOWONEEXTENSION_HL, I"showoneextension_fn", I"ShowOneExtension", synoptic_extensions);
+        submodule_identity *extensions = Packaging::register_submodule(I"extensions");
+
+        location_requirement synoptic_extensions = HierarchyLocations::synoptic_submodule(extensions);
+        HierarchyLocations::func(SHOWEXTENSIONVERSIONS_HL, I"showextensionversions_fn", Translation::to(I"ShowExtensionVersions"), synoptic_extensions);
+        HierarchyLocations::func(SHOWFULLEXTENSIONVERSIONS_HL, I"showfullextensionversions_fn", Translation::to(I"ShowFullExtensionVersions"), synoptic_extensions);
+        HierarchyLocations::func(SHOWONEEXTENSION_HL, I"showoneextension_fn", Translation::to(I"ShowOneExtension"), synoptic_extensions);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.19. External files.

+

§1.19. External files.

     enum EXTERNAL_FILES_HAP
+    enum FILE_HL
+    enum IFID_HL
 
-

§2.20. -<Establish external files 2.20> = +

§1.20. +<Establish external files 1.20> =

-        inter_symbol *external_file_ptype = Packaging::register_ptype(I"_external_file", TRUE);
-        HierarchyLocations::ap(EXTERNAL_FILES_HAP, EXTERNAL_FILES_SUBMODULE, I"external_file", external_file_ptype);
+        submodule_identity *external_files = Packaging::register_submodule(I"external_files");
+
+        location_requirement local_external_files = HierarchyLocations::local_submodule(external_files);
+        HierarchyLocations::ap(EXTERNAL_FILES_HAP, local_external_files, I"external_file", I"_external_file");
+            location_requirement in_external_file = HierarchyLocations::any_package_of_type(I"_external_file");
+            HierarchyLocations::con(FILE_HL, I"file", Translation::uniqued(), in_external_file);
+            HierarchyLocations::con(IFID_HL, I"ifid", Translation::uniqued(), in_external_file);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.21. Grammar.

+

§1.21. Grammar.

     enum COND_TOKENS_HAP
     enum CONSULT_TOKENS_HAP
     enum TESTS_HAP
+    enum SCRIPT_HL
+    enum REQUIREMENTS_HL
     enum LOOP_OVER_SCOPES_HAP
     enum MISTAKES_HAP
     enum NAMED_ACTION_PATTERNS_HAP
@@ -525,81 +493,77 @@
     enum COMMAND_PR_COUNTER
     enum COMMANDS_HAP
 
-

§2.22. -<Establish grammar 2.22> = +

§1.22. +<Establish grammar 1.22> =

-        inter_symbol *cond_ptype = Packaging::register_ptype(I"_conditional_token", TRUE);
-        HierarchyLocations::ap(COND_TOKENS_HAP, GRAMMAR_SUBMODULE, I"conditional_token", cond_ptype);
-        inter_symbol *consult_ptype = Packaging::register_ptype(I"_consult_token", TRUE);
-        HierarchyLocations::ap(CONSULT_TOKENS_HAP, GRAMMAR_SUBMODULE, I"consult_token", consult_ptype);
-        inter_symbol *test_ptype = Packaging::register_ptype(I"_test", TRUE);
-        HierarchyLocations::ap(TESTS_HAP, GRAMMAR_SUBMODULE, I"test", test_ptype);
-        inter_symbol *los_ptype = Packaging::register_ptype(I"_loop_over_scope", TRUE);
-        HierarchyLocations::ap(LOOP_OVER_SCOPES_HAP, GRAMMAR_SUBMODULE, I"loop_over_scope", los_ptype);
-        inter_symbol *m_ptype = Packaging::register_ptype(I"_mistake", TRUE);
-        HierarchyLocations::ap(MISTAKES_HAP, GRAMMAR_SUBMODULE, I"mistake", m_ptype);
-        inter_symbol *nap_ptype = Packaging::register_ptype(I"_named_action_pattern", TRUE);
-        HierarchyLocations::ap(NAMED_ACTION_PATTERNS_HAP, GRAMMAR_SUBMODULE, I"named_action_pattern", nap_ptype);
-        inter_symbol *nt_ptype = Packaging::register_ptype(I"_named_token", TRUE);
-        HierarchyLocations::ap(NAMED_TOKENS_HAP, GRAMMAR_SUBMODULE, I"named_token", nt_ptype);
-        inter_symbol *nf_ptype = Packaging::register_ptype(I"_noun_filter", TRUE);
-        HierarchyLocations::ap(NOUN_FILTERS_HAP, GRAMMAR_SUBMODULE, I"noun_filter", nf_ptype);
-        inter_symbol *sf_ptype = Packaging::register_ptype(I"_scope_filter", TRUE);
-        HierarchyLocations::ap(SCOPE_FILTERS_HAP, GRAMMAR_SUBMODULE, I"scope_filter", sf_ptype);
-        inter_symbol *pn_ptype = Packaging::register_ptype(I"_parse_name", TRUE);
-        HierarchyLocations::ap(PARSE_NAMES_HAP, GRAMMAR_SUBMODULE, I"parse_name", pn_ptype);
-        inter_symbol *slash_ptype = Packaging::register_ptype(I"_slash_token", TRUE);
-        HierarchyLocations::ap(SLASH_TOKENS_HAP, GRAMMAR_SUBMODULE, I"slash_token", slash_ptype);
+        submodule_identity *grammar = Packaging::register_submodule(I"grammar");
 
-        package_request *synoptic_grammar = Packaging::synoptic_resource(GRAMMAR_SUBMODULE);
-        HierarchyLocations::make(VERB_DIRECTIVE_CREATURE_HL, I"VERB_DIRECTIVE_CREATURE", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_DIVIDER_HL, I"VERB_DIRECTIVE_DIVIDER", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_HELD_HL, I"VERB_DIRECTIVE_HELD", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_MULTI_HL, I"VERB_DIRECTIVE_MULTI", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_MULTIEXCEPT_HL, I"VERB_DIRECTIVE_MULTIEXCEPT", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_MULTIHELD_HL, I"VERB_DIRECTIVE_MULTIHELD", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_MULTIINSIDE_HL, I"VERB_DIRECTIVE_MULTIINSIDE", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_NOUN_HL, I"VERB_DIRECTIVE_NOUN", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_NUMBER_HL, I"VERB_DIRECTIVE_NUMBER", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_RESULT_HL, I"VERB_DIRECTIVE_RESULT", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_REVERSE_HL, I"VERB_DIRECTIVE_REVERSE", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_SLASH_HL, I"VERB_DIRECTIVE_SLASH", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_SPECIAL_HL, I"VERB_DIRECTIVE_SPECIAL", synoptic_grammar);
-        HierarchyLocations::make(VERB_DIRECTIVE_TOPIC_HL, I"VERB_DIRECTIVE_TOPIC", synoptic_grammar);
-        HierarchyLocations::make_function(TESTSCRIPTSUB_HL, I"action_fn", I"TestScriptSub", synoptic_grammar);
-        HierarchyLocations::make_function(INTERNALTESTCASES_HL, I"run_tests_fn", I"InternalTestCases", synoptic_grammar);
-        inter_symbol *command_ptype = Packaging::register_ptype(I"_command", TRUE);
-        HierarchyLocations::synoptic_ap(COMMANDS_HAP, GRAMMAR_SUBMODULE, I"command", command_ptype);
+        location_requirement local_grammar = HierarchyLocations::local_submodule(grammar);
+        HierarchyLocations::ap(COND_TOKENS_HAP, local_grammar, I"conditional_token", I"_conditional_token");
+        HierarchyLocations::ap(CONSULT_TOKENS_HAP, local_grammar, I"consult_token", I"_consult_token");
+        HierarchyLocations::ap(TESTS_HAP, local_grammar, I"test", I"_test");
+            location_requirement in_test = HierarchyLocations::any_package_of_type(I"_test");
+            HierarchyLocations::con(SCRIPT_HL, I"script", Translation::uniqued(), in_test);
+            HierarchyLocations::con(REQUIREMENTS_HL, I"requirements", Translation::uniqued(), in_test);
+        HierarchyLocations::ap(LOOP_OVER_SCOPES_HAP, local_grammar, I"loop_over_scope", I"_loop_over_scope");
+        HierarchyLocations::ap(MISTAKES_HAP, local_grammar, I"mistake", I"_mistake");
+        HierarchyLocations::ap(NAMED_ACTION_PATTERNS_HAP, local_grammar, I"named_action_pattern", I"_named_action_pattern");
+        HierarchyLocations::ap(NAMED_TOKENS_HAP, local_grammar, I"named_token", I"_named_token");
+        HierarchyLocations::ap(NOUN_FILTERS_HAP, local_grammar, I"noun_filter", I"_noun_filter");
+        HierarchyLocations::ap(SCOPE_FILTERS_HAP, local_grammar, I"scope_filter", I"_scope_filter");
+        HierarchyLocations::ap(PARSE_NAMES_HAP, local_grammar, I"parse_name", I"_parse_name");
+        HierarchyLocations::ap(SLASH_TOKENS_HAP, local_grammar, I"slash_token", I"_slash_token");
+
+        location_requirement synoptic_grammar = HierarchyLocations::synoptic_submodule(grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_CREATURE_HL, I"VERB_DIRECTIVE_CREATURE", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_DIVIDER_HL, I"VERB_DIRECTIVE_DIVIDER", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_HELD_HL, I"VERB_DIRECTIVE_HELD", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_MULTI_HL, I"VERB_DIRECTIVE_MULTI", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_MULTIEXCEPT_HL, I"VERB_DIRECTIVE_MULTIEXCEPT", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_MULTIHELD_HL, I"VERB_DIRECTIVE_MULTIHELD", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_MULTIINSIDE_HL, I"VERB_DIRECTIVE_MULTIINSIDE", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_NOUN_HL, I"VERB_DIRECTIVE_NOUN", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_NUMBER_HL, I"VERB_DIRECTIVE_NUMBER", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_RESULT_HL, I"VERB_DIRECTIVE_RESULT", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_REVERSE_HL, I"VERB_DIRECTIVE_REVERSE", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_SLASH_HL, I"VERB_DIRECTIVE_SLASH", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_SPECIAL_HL, I"VERB_DIRECTIVE_SPECIAL", Translation::same(), synoptic_grammar);
+        HierarchyLocations::con(VERB_DIRECTIVE_TOPIC_HL, I"VERB_DIRECTIVE_TOPIC", Translation::same(), synoptic_grammar);
+        HierarchyLocations::func(TESTSCRIPTSUB_HL, I"action_fn", Translation::to(I"TestScriptSub"), synoptic_grammar);
+        HierarchyLocations::func(INTERNALTESTCASES_HL, I"run_tests_fn", Translation::to(I"InternalTestCases"), synoptic_grammar);
+        HierarchyLocations::ap(COMMANDS_HAP, synoptic_grammar, I"command", I"_command");
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.23. Instances.

+

§1.23. Instances.

     enum INSTANCES_HAP
 
-

§2.24. -<Establish instances 2.24> = +

§1.24. +<Establish instances 1.24> =

-        inter_symbol *instance_ptype = Packaging::register_ptype(I"_instance", TRUE);
-        HierarchyLocations::ap(INSTANCES_HAP, INSTANCES_SUBMODULE, I"instance", instance_ptype);
+        submodule_identity *instances = Packaging::register_submodule(I"instances");
+
+        location_requirement local_instances = HierarchyLocations::local_submodule(instances);
+        HierarchyLocations::ap(INSTANCES_HAP, local_instances, I"instance", I"_instance");
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.25. Interactive Fiction.

+

§1.25. Interactive Fiction.

@@ -616,32 +580,34 @@
     enum START_TIME_INIS_HL
     enum DONE_INIS_HL
 
-

§2.26. -<Establish int-fiction 2.26> = +

§1.26. +<Establish int-fiction 1.26> =

-        package_request *synoptic_IF = Packaging::synoptic_resource(IF_SUBMODULE);
-        HierarchyLocations::make(DEFAULT_SCORING_SETTING_HL, I"DEFAULT_SCORING_SETTING", synoptic_IF);
-        HierarchyLocations::make(INITIAL_MAX_SCORE_HL, I"INITIAL_MAX_SCORE", synoptic_IF);
-        HierarchyLocations::make(NO_DIRECTIONS_HL, I"No_Directions", synoptic_IF);
-        HierarchyLocations::make_function(SHOWSCENESTATUS_HL, I"show_scene_status_fn", I"ShowSceneStatus", synoptic_IF);
-        HierarchyLocations::make_function(DETECTSCENECHANGE_HL, I"detect_scene_change_fn", I"DetectSceneChange", synoptic_IF);
-        HierarchyLocations::make(MAP_STORAGE_HL, I"Map_Storage", synoptic_IF);
-        HierarchyLocations::make(INITIALSITUATION_HL, I"InitialSituation", synoptic_IF);
-        HierarchyLocations::make(PLAYER_OBJECT_INIS_HL, I"PLAYER_OBJECT_INIS", synoptic_IF);
-        HierarchyLocations::make(START_OBJECT_INIS_HL, I"START_OBJECT_INIS", synoptic_IF);
-        HierarchyLocations::make(START_ROOM_INIS_HL, I"START_ROOM_INIS", synoptic_IF);
-        HierarchyLocations::make(START_TIME_INIS_HL, I"START_TIME_INIS", synoptic_IF);
-        HierarchyLocations::make(DONE_INIS_HL, I"DONE_INIS", synoptic_IF);
+        submodule_identity *interactive_fiction = Packaging::register_submodule(I"interactive_fiction");
+
+        location_requirement synoptic_IF = HierarchyLocations::synoptic_submodule(interactive_fiction);
+        HierarchyLocations::con(DEFAULT_SCORING_SETTING_HL, I"DEFAULT_SCORING_SETTING", Translation::same(), synoptic_IF);
+        HierarchyLocations::con(INITIAL_MAX_SCORE_HL, I"INITIAL_MAX_SCORE", Translation::same(), synoptic_IF);
+        HierarchyLocations::con(NO_DIRECTIONS_HL, I"No_Directions", Translation::same(), synoptic_IF);
+        HierarchyLocations::func(SHOWSCENESTATUS_HL, I"show_scene_status_fn", Translation::to(I"ShowSceneStatus"), synoptic_IF);
+        HierarchyLocations::func(DETECTSCENECHANGE_HL, I"detect_scene_change_fn", Translation::to(I"DetectSceneChange"), synoptic_IF);
+        HierarchyLocations::con(MAP_STORAGE_HL, I"Map_Storage", Translation::same(), synoptic_IF);
+        HierarchyLocations::con(INITIALSITUATION_HL, I"InitialSituation", Translation::same(), synoptic_IF);
+        HierarchyLocations::con(PLAYER_OBJECT_INIS_HL, I"PLAYER_OBJECT_INIS", Translation::same(), synoptic_IF);
+        HierarchyLocations::con(START_OBJECT_INIS_HL, I"START_OBJECT_INIS", Translation::same(), synoptic_IF);
+        HierarchyLocations::con(START_ROOM_INIS_HL, I"START_ROOM_INIS", Translation::same(), synoptic_IF);
+        HierarchyLocations::con(START_TIME_INIS_HL, I"START_TIME_INIS", Translation::same(), synoptic_IF);
+        HierarchyLocations::con(DONE_INIS_HL, I"DONE_INIS", Translation::same(), synoptic_IF);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.27. Kinds.

+

§1.27. Kinds.

@@ -651,6 +617,10 @@
     enum K_TYPELESS_INT_HL
     enum K_TYPELESS_STRING_HL
     enum KIND_HAP
+    enum DEFAULT_VALUE_HL
+    enum DECREMENT_FN_HL
+    enum INCREMENT_FN_HL
+    enum RANGER_FN_HL
     enum DEFAULTVALUEOFKOV_HL
     enum DEFAULTVALUEFINDER_HL
     enum PRINTKINDVALUEPAIR_HL
@@ -662,114 +632,136 @@
     enum SHOWMEDETAILS_HL
     enum BASE_KIND_HWM_HL
 
-

§2.28. -<Establish kinds 2.28> = +

§1.28. +<Establish kinds 1.28> =

-        package_request *generic_kinds = Packaging::generic_resource(KINDS_SUBMODULE);
-        HierarchyLocations::make(UNKNOWN_TY_HL, I"UNKNOWN_TY", generic_kinds);
-        HierarchyLocations::make(K_UNCHECKED_HL, I"K_unchecked", generic_kinds);
-        HierarchyLocations::make(K_UNCHECKED_FUNCTION_HL, I"K_unchecked_function", generic_kinds);
-        HierarchyLocations::make(K_TYPELESS_INT_HL, I"K_typeless_int", generic_kinds);
-        HierarchyLocations::make(K_TYPELESS_STRING_HL, I"K_typeless_string", generic_kinds);
+        submodule_identity *kinds = Packaging::register_submodule(I"kinds");
 
-        inter_symbol *kind_ptype = Packaging::register_ptype(I"_kind", TRUE);
-        HierarchyLocations::ap(KIND_HAP, KINDS_SUBMODULE, I"kind", kind_ptype);
+        location_requirement generic_kinds = HierarchyLocations::generic_submodule(kinds);
+        HierarchyLocations::con(UNKNOWN_TY_HL, I"UNKNOWN_TY", Translation::same(), generic_kinds);
+        HierarchyLocations::con(K_UNCHECKED_HL, I"K_unchecked", Translation::same(), generic_kinds);
+        HierarchyLocations::con(K_UNCHECKED_FUNCTION_HL, I"K_unchecked_function", Translation::same(), generic_kinds);
+        HierarchyLocations::con(K_TYPELESS_INT_HL, I"K_typeless_int", Translation::same(), generic_kinds);
+        HierarchyLocations::con(K_TYPELESS_STRING_HL, I"K_typeless_string", Translation::same(), generic_kinds);
 
-        package_request *synoptic_kinds = Packaging::synoptic_resource(KINDS_SUBMODULE);
-        HierarchyLocations::make(BASE_KIND_HWM_HL, I"BASE_KIND_HWM", synoptic_kinds);
-        HierarchyLocations::make_function(DEFAULTVALUEOFKOV_HL, I"defaultvalue_fn", I"DefaultValueOfKOV", synoptic_kinds);
-        HierarchyLocations::make_function(DEFAULTVALUEFINDER_HL, I"defaultvaluefinder_fn", I"DefaultValueFinder", synoptic_kinds);
-        HierarchyLocations::make_function(PRINTKINDVALUEPAIR_HL, I"printkindvaluepair_fn", I"PrintKindValuePair", synoptic_kinds);
-        HierarchyLocations::make_function(KOVCOMPARISONFUNCTION_HL, I"comparison_fn", I"KOVComparisonFunction", synoptic_kinds);
-        HierarchyLocations::make_function(KOVDOMAINSIZE_HL, I"domainsize_fn", I"KOVDomainSize", synoptic_kinds);
-        HierarchyLocations::make_function(KOVISBLOCKVALUE_HL, I"blockvalue_fn", I"KOVIsBlockValue", synoptic_kinds);
-        HierarchyLocations::make_function(I7_KIND_NAME_HL, I"printkindname_fn", I"I7_Kind_Name", synoptic_kinds);
-        HierarchyLocations::make_function(KOVSUPPORTFUNCTION_HL, I"support_fn", I"KOVSupportFunction", synoptic_kinds);
-        HierarchyLocations::make_function(SHOWMEDETAILS_HL, I"showmedetails_fn", I"ShowMeDetails", synoptic_kinds);
+        location_requirement local_kinds = HierarchyLocations::local_submodule(kinds);
+        HierarchyLocations::ap(KIND_HAP, local_kinds, I"kind", I"_kind");
+            location_requirement in_kind = HierarchyLocations::any_package_of_type(I"_kind");
+            HierarchyLocations::con(DEFAULT_VALUE_HL, I"default_value", Translation::uniqued(), in_kind);
+            HierarchyLocations::con(DECREMENT_FN_HL, I"decrement_fn", Translation::uniqued(), in_kind);
+            HierarchyLocations::con(INCREMENT_FN_HL, I"increment_fn", Translation::uniqued(), in_kind);
+            HierarchyLocations::con(RANGER_FN_HL, I"ranger_fn", Translation::uniqued(), in_kind);
+
+        location_requirement synoptic_kinds = HierarchyLocations::synoptic_submodule(kinds);
+        HierarchyLocations::con(BASE_KIND_HWM_HL, I"BASE_KIND_HWM", Translation::same(), synoptic_kinds);
+        HierarchyLocations::func(DEFAULTVALUEOFKOV_HL, I"defaultvalue_fn", Translation::to(I"DefaultValueOfKOV"), synoptic_kinds);
+        HierarchyLocations::func(DEFAULTVALUEFINDER_HL, I"defaultvaluefinder_fn", Translation::to(I"DefaultValueFinder"), synoptic_kinds);
+        HierarchyLocations::func(PRINTKINDVALUEPAIR_HL, I"printkindvaluepair_fn", Translation::to(I"PrintKindValuePair"), synoptic_kinds);
+        HierarchyLocations::func(KOVCOMPARISONFUNCTION_HL, I"comparison_fn", Translation::to(I"KOVComparisonFunction"), synoptic_kinds);
+        HierarchyLocations::func(KOVDOMAINSIZE_HL, I"domainsize_fn", Translation::to(I"KOVDomainSize"), synoptic_kinds);
+        HierarchyLocations::func(KOVISBLOCKVALUE_HL, I"blockvalue_fn", Translation::to(I"KOVIsBlockValue"), synoptic_kinds);
+        HierarchyLocations::func(I7_KIND_NAME_HL, I"printkindname_fn", Translation::to(I"I7_Kind_Name"), synoptic_kinds);
+        HierarchyLocations::func(KOVSUPPORTFUNCTION_HL, I"support_fn", Translation::to(I"KOVSupportFunction"), synoptic_kinds);
+        HierarchyLocations::func(SHOWMEDETAILS_HL, I"showmedetails_fn", Translation::to(I"ShowMeDetails"), synoptic_kinds);
+        home_for_weak_type_IDs = synoptic_kinds;
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.29. Listing.

+

§1.29. Listing.

     enum LISTS_TOGETHER_HAP
+    enum LIST_TOGETHER_ARRAY_HL
 
-

§2.30. -<Establish listing 2.30> = +

§1.30. +<Establish listing 1.30> =

-        inter_symbol *list_together_ptype = Packaging::register_ptype(I"_list_together", TRUE);
-        HierarchyLocations::ap(LISTS_TOGETHER_HAP, LISTING_SUBMODULE, I"list_together", list_together_ptype);
+        submodule_identity *listing = Packaging::register_submodule(I"listing");
+
+        location_requirement local_listing = HierarchyLocations::local_submodule(listing);
+        HierarchyLocations::ap(LISTS_TOGETHER_HAP, local_listing, I"list_together", I"_list_together");
+            location_requirement in_list_together = HierarchyLocations::any_package_of_type(I"_list_together");
+            HierarchyLocations::con(LIST_TOGETHER_ARRAY_HL, I"list_together_array", Translation::uniqued(), in_list_together);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.31. Phrases.

+

§1.31. Phrases.

     enum CLOSURES_HAP
+    enum CLOSURE_DATA_HL
     enum PHRASES_HAP
     enum REQUESTS_HAP
     enum LABEL_STORAGES_HAP
+    enum LABEL_ASSOCIATED_STORAGE_HL
 
-

§2.32. -<Establish phrases 2.32> = +

§1.32. +<Establish phrases 1.32> =

-        inter_symbol *to_phrase_ptype = Packaging::register_ptype(I"_phrase", TRUE);
-        HierarchyLocations::ap(PHRASES_HAP, PHRASES_SUBMODULE, I"phrase", to_phrase_ptype);
-            inter_symbol *closure_ptype = Packaging::register_ptype(I"_closure", TRUE);
-            HierarchyLocations::ap_within(CLOSURES_HAP, to_phrase_ptype, I"closure", closure_ptype);
-            inter_symbol *request_ptype = Packaging::register_ptype(I"_request", TRUE);
-            HierarchyLocations::ap_within(REQUESTS_HAP, to_phrase_ptype, I"request", request_ptype);
+        submodule_identity *phrases = Packaging::register_submodule(I"phrases");
 
-        inter_symbol *label_storage_ptype = Packaging::register_ptype(I"_label_storage", TRUE);
-        HierarchyLocations::synoptic_ap(LABEL_STORAGES_HAP, PHRASES_SUBMODULE, I"label_associated_storage", label_storage_ptype);
+        location_requirement local_phrases = HierarchyLocations::local_submodule(phrases);
+        HierarchyLocations::ap(PHRASES_HAP, local_phrases, I"phrase", I"_to_phrase");
+            location_requirement in_to_phrase = HierarchyLocations::any_package_of_type(I"_to_phrase");
+            HierarchyLocations::ap(CLOSURES_HAP, in_to_phrase, I"closure", I"_closure");
+                location_requirement in_closure = HierarchyLocations::any_package_of_type(I"_closure");
+                HierarchyLocations::con(CLOSURE_DATA_HL, I"closure_data", Translation::uniqued(), in_closure);
+            HierarchyLocations::ap(REQUESTS_HAP, in_to_phrase, I"request", I"_request");
+
+        location_requirement synoptic_phrases = HierarchyLocations::synoptic_submodule(phrases);
+        HierarchyLocations::ap(LABEL_STORAGES_HAP, synoptic_phrases, I"label_storage", I"_label_storage");
+            location_requirement in_label_storage = HierarchyLocations::any_package_of_type(I"_label_storage");
+            HierarchyLocations::con(LABEL_ASSOCIATED_STORAGE_HL, I"label_associated_storage", Translation::uniqued(), in_label_storage);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.33. Properties.

+

§1.33. Properties.

     enum PROPERTIES_HAP
     enum CCOUNT_PROPERTY_HL
 
-

§2.34. -<Establish properties 2.34> = +

§1.34. +<Establish properties 1.34> =

-        inter_symbol *property_ptype = Packaging::register_ptype(I"_property", TRUE);
-        HierarchyLocations::ap(PROPERTIES_HAP, PROPERTIES_SUBMODULE, I"property", property_ptype);
+        submodule_identity *properties = Packaging::register_submodule(I"properties");
 
-        package_request *synoptic_props = Packaging::synoptic_resource(PROPERTIES_SUBMODULE);
-        HierarchyLocations::make(CCOUNT_PROPERTY_HL, I"CCOUNT_PROPERTY", synoptic_props);
+        location_requirement local_properties = HierarchyLocations::local_submodule(properties);
+        HierarchyLocations::ap(PROPERTIES_HAP, local_properties, I"property", I"_property");
+
+        location_requirement synoptic_props = HierarchyLocations::synoptic_submodule(properties);
+        HierarchyLocations::con(CCOUNT_PROPERTY_HL, I"CCOUNT_PROPERTY", Translation::same(), synoptic_props);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.35. Relations.

+

§1.35. Relations.

@@ -791,51 +783,58 @@
     enum TTF_SUM_HL
     enum MEANINGLESS_RR_HL
     enum RELATIONS_HAP
+    enum BITMAP_HL
+    enum ROUTE_CACHE_HL
     enum CREATEDYNAMICRELATIONS_HL
     enum CCOUNT_BINARY_PREDICATE_HL
     enum ITERATERELATIONS_HL
     enum RPROPERTY_HL
 
-

§2.36. -<Establish relations 2.36> = +

§1.36. +<Establish relations 1.36> =

-        package_request *generic_rels = Packaging::generic_resource(RELATIONS_SUBMODULE);
-        HierarchyLocations::make(RELS_ASSERT_FALSE_HL, I"RELS_ASSERT_FALSE", generic_rels);
-        HierarchyLocations::make(RELS_ASSERT_TRUE_HL, I"RELS_ASSERT_TRUE", generic_rels);
-        HierarchyLocations::make(RELS_EQUIVALENCE_HL, I"RELS_EQUIVALENCE", generic_rels);
-        HierarchyLocations::make(RELS_LIST_HL, I"RELS_LIST", generic_rels);
-        HierarchyLocations::make(RELS_LOOKUP_ALL_X_HL, I"RELS_LOOKUP_ALL_X", generic_rels);
-        HierarchyLocations::make(RELS_LOOKUP_ALL_Y_HL, I"RELS_LOOKUP_ALL_Y", generic_rels);
-        HierarchyLocations::make(RELS_LOOKUP_ANY_HL, I"RELS_LOOKUP_ANY", generic_rels);
-        HierarchyLocations::make(RELS_ROUTE_FIND_COUNT_HL, I"RELS_ROUTE_FIND_COUNT", generic_rels);
-        HierarchyLocations::make(RELS_ROUTE_FIND_HL, I"RELS_ROUTE_FIND", generic_rels);
-        HierarchyLocations::make(RELS_SHOW_HL, I"RELS_SHOW", generic_rels);
-        HierarchyLocations::make(RELS_SYMMETRIC_HL, I"RELS_SYMMETRIC", generic_rels);
-        HierarchyLocations::make(RELS_TEST_HL, I"RELS_TEST", generic_rels);
-        HierarchyLocations::make(RELS_X_UNIQUE_HL, I"RELS_X_UNIQUE", generic_rels);
-        HierarchyLocations::make(RELS_Y_UNIQUE_HL, I"RELS_Y_UNIQUE", generic_rels);
-        HierarchyLocations::make(REL_BLOCK_HEADER_HL, I"REL_BLOCK_HEADER", generic_rels);
-        HierarchyLocations::make(TTF_SUM_HL, I"TTF_sum", generic_rels);
-        HierarchyLocations::make(MEANINGLESS_RR_HL, I"MEANINGLESS_RR", generic_rels);
+        submodule_identity *relations = Packaging::register_submodule(I"relations");
 
-        inter_symbol *relation_ptype = Packaging::register_ptype(I"_relation", TRUE);
-        HierarchyLocations::ap(RELATIONS_HAP, RELATIONS_SUBMODULE, I"relation", relation_ptype);
+        location_requirement generic_rels = HierarchyLocations::generic_submodule(relations);
+        HierarchyLocations::con(RELS_ASSERT_FALSE_HL, I"RELS_ASSERT_FALSE", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_ASSERT_TRUE_HL, I"RELS_ASSERT_TRUE", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_EQUIVALENCE_HL, I"RELS_EQUIVALENCE", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_LIST_HL, I"RELS_LIST", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_LOOKUP_ALL_X_HL, I"RELS_LOOKUP_ALL_X", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_LOOKUP_ALL_Y_HL, I"RELS_LOOKUP_ALL_Y", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_LOOKUP_ANY_HL, I"RELS_LOOKUP_ANY", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_ROUTE_FIND_COUNT_HL, I"RELS_ROUTE_FIND_COUNT", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_ROUTE_FIND_HL, I"RELS_ROUTE_FIND", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_SHOW_HL, I"RELS_SHOW", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_SYMMETRIC_HL, I"RELS_SYMMETRIC", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_TEST_HL, I"RELS_TEST", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_X_UNIQUE_HL, I"RELS_X_UNIQUE", Translation::same(), generic_rels);
+        HierarchyLocations::con(RELS_Y_UNIQUE_HL, I"RELS_Y_UNIQUE", Translation::same(), generic_rels);
+        HierarchyLocations::con(REL_BLOCK_HEADER_HL, I"REL_BLOCK_HEADER", Translation::same(), generic_rels);
+        HierarchyLocations::con(TTF_SUM_HL, I"TTF_sum", Translation::same(), generic_rels);
+        HierarchyLocations::con(MEANINGLESS_RR_HL, I"MEANINGLESS_RR", Translation::same(), generic_rels);
 
-        package_request *synoptic_rels = Packaging::synoptic_resource(RELATIONS_SUBMODULE);
-        HierarchyLocations::make_function(CREATEDYNAMICRELATIONS_HL, I"creator_fn", I"CreateDynamicRelations", synoptic_rels);
-        HierarchyLocations::make(CCOUNT_BINARY_PREDICATE_HL, I"CCOUNT_BINARY_PREDICATE", synoptic_rels);
-        HierarchyLocations::make_function(ITERATERELATIONS_HL, I"iterator_fn", I"IterateRelations", synoptic_rels);
-        HierarchyLocations::make_function(RPROPERTY_HL, I"property_fn", I"RProperty", synoptic_rels);
+        location_requirement local_rels = HierarchyLocations::local_submodule(relations);
+        HierarchyLocations::ap(RELATIONS_HAP, local_rels, I"relation", I"_relation");
+                location_requirement in_relation = HierarchyLocations::any_package_of_type(I"_relation");
+                HierarchyLocations::con(BITMAP_HL, I"as_constant", Translation::uniqued(), in_relation);
+                HierarchyLocations::con(ROUTE_CACHE_HL, I"route_cache", Translation::uniqued(), in_relation);
+
+        location_requirement synoptic_rels = HierarchyLocations::synoptic_submodule(relations);
+        HierarchyLocations::func(CREATEDYNAMICRELATIONS_HL, I"creator_fn", Translation::to(I"CreateDynamicRelations"), synoptic_rels);
+        HierarchyLocations::con(CCOUNT_BINARY_PREDICATE_HL, I"CCOUNT_BINARY_PREDICATE", Translation::same(), synoptic_rels);
+        HierarchyLocations::func(ITERATERELATIONS_HL, I"iterator_fn", Translation::to(I"IterateRelations"), synoptic_rels);
+        HierarchyLocations::func(RPROPERTY_HL, I"property_fn", Translation::to(I"RProperty"), synoptic_rels);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.37. Rulebooks.

+

§1.37. Rulebooks.

@@ -848,111 +847,132 @@
     enum RULEBOOKS_ARRAY_HL
     enum RULEBOOKNAMES_HL
 
-

§2.38. -<Establish rulebooks 2.38> = +

§1.38. +<Establish rulebooks 1.38> =

-        package_request *generic_rulebooks = Packaging::generic_resource(RULEBOOKS_SUBMODULE);
-        HierarchyLocations::make_function(EMPTY_RULEBOOK_INAME_HL, I"empty_fn", I"EMPTY_RULEBOOK", generic_rulebooks);
+        submodule_identity *rulebooks = Packaging::register_submodule(I"rulebooks");
 
-        inter_symbol *outcome_ptype = Packaging::register_ptype(I"_outcome", TRUE);
-        HierarchyLocations::ap(OUTCOMES_HAP, RULEBOOKS_SUBMODULE, I"rulebook_outcome", outcome_ptype);
-        inter_symbol *rulebook_ptype = Packaging::register_ptype(I"_rulebook", TRUE);
-        HierarchyLocations::ap(RULEBOOKS_HAP, RULEBOOKS_SUBMODULE, I"rulebook", rulebook_ptype);
+        location_requirement generic_rulebooks = HierarchyLocations::generic_submodule(rulebooks);
+        HierarchyLocations::func(EMPTY_RULEBOOK_INAME_HL, I"empty_fn", Translation::to(I"EMPTY_RULEBOOK"), generic_rulebooks);
 
-        package_request *synoptic_rulebooks = Packaging::synoptic_resource(RULEBOOKS_SUBMODULE);
-        HierarchyLocations::make(NUMBER_RULEBOOKS_CREATED_HL, I"NUMBER_RULEBOOKS_CREATED", synoptic_rulebooks);
-        HierarchyLocations::make(RULEBOOK_VAR_CREATORS_HL, I"rulebook_var_creators", synoptic_rulebooks);
-        HierarchyLocations::make_function(SLOW_LOOKUP_HL, I"slow_lookup_fn", I"MStack_GetRBVarCreator", synoptic_rulebooks);
-        HierarchyLocations::make(RULEBOOKS_ARRAY_HL, I"rulebooks_array", synoptic_rulebooks);
-        HierarchyLocations::make(RULEBOOKNAMES_HL, I"RulebookNames", synoptic_rulebooks);
+        location_requirement local_rulebooks = HierarchyLocations::local_submodule(rulebooks);
+        HierarchyLocations::ap(OUTCOMES_HAP, local_rulebooks, I"rulebook_outcome", I"_outcome");
+        HierarchyLocations::ap(RULEBOOKS_HAP, local_rulebooks, I"rulebook", I"_rulebook");
+
+        location_requirement synoptic_rulebooks = HierarchyLocations::synoptic_submodule(rulebooks);
+        HierarchyLocations::con(NUMBER_RULEBOOKS_CREATED_HL, I"NUMBER_RULEBOOKS_CREATED", Translation::same(), synoptic_rulebooks);
+        HierarchyLocations::con(RULEBOOK_VAR_CREATORS_HL, I"rulebook_var_creators", Translation::same(), synoptic_rulebooks);
+        HierarchyLocations::func(SLOW_LOOKUP_HL, I"slow_lookup_fn", Translation::to(I"MStack_GetRBVarCreator"), synoptic_rulebooks);
+        HierarchyLocations::con(RULEBOOKS_ARRAY_HL, I"rulebooks_array", Translation::same(), synoptic_rulebooks);
+        HierarchyLocations::con(RULEBOOKNAMES_HL, I"RulebookNames", Translation::same(), synoptic_rulebooks);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.39. Rules.

+

§1.39. Rules.

     enum RULES_HAP
+    enum EXTERIOR_RULE_HL
     enum RESPONSES_HAP
+    enum AS_CONSTANT_HL
+    enum AS_BLOCK_CONSTANT_HL
+    enum LAUNCHER_HL
     enum RULEPRINTINGRULE_HL
     enum RESPONSEDIVISIONS_HL
 
-

§2.40. -<Establish rules 2.40> = +

§1.40. +<Establish rules 1.40> =

-        inter_symbol *rule_ptype = Packaging::register_ptype(I"_rule", TRUE);
-        HierarchyLocations::ap(RULES_HAP, RULES_SUBMODULE, I"rule", rule_ptype);
-            inter_symbol *response_ptype = Packaging::register_ptype(I"_response", TRUE);
-            HierarchyLocations::ap_within(RESPONSES_HAP, rule_ptype, I"response", response_ptype);
+        submodule_identity *rules = Packaging::register_submodule(I"rules");
 
-        package_request *synoptic_rules = Packaging::synoptic_resource(RULES_SUBMODULE);
-        HierarchyLocations::make(RESPONSEDIVISIONS_HL, I"ResponseDivisions", synoptic_rules);
-        HierarchyLocations::make_function(RULEPRINTINGRULE_HL, I"print_fn", I"RulePrintingRule", synoptic_rules);
+        location_requirement local_rules = HierarchyLocations::local_submodule(rules);
+        HierarchyLocations::ap(RULES_HAP, local_rules, I"rule", I"_rule");
+            location_requirement in_rule = HierarchyLocations::any_package_of_type(I"_rule");
+            HierarchyLocations::con(EXTERIOR_RULE_HL, I"exterior_rule", Translation::uniqued(), in_rule);
+            HierarchyLocations::ap(RESPONSES_HAP, in_rule, I"response", I"_response");
+                location_requirement in_response = HierarchyLocations::any_package_of_type(I"_response");
+                HierarchyLocations::con(AS_CONSTANT_HL, I"as_constant", Translation::uniqued(), in_response);
+                HierarchyLocations::con(AS_BLOCK_CONSTANT_HL, I"as_block_constant", Translation::uniqued(), in_response);
+                HierarchyLocations::func(LAUNCHER_HL, I"launcher", Translation::uniqued(), in_response);
+
+        location_requirement synoptic_rules = HierarchyLocations::synoptic_submodule(rules);
+        HierarchyLocations::con(RESPONSEDIVISIONS_HL, I"ResponseDivisions", Translation::same(), synoptic_rules);
+        HierarchyLocations::func(RULEPRINTINGRULE_HL, I"print_fn", Translation::to(I"RulePrintingRule"), synoptic_rules);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.41. Tables.

+

§1.41. Tables.

     enum TABLES_HAP
+    enum TABLE_DATA_HL
     enum TABLE_COLUMNS_HAP
+    enum COLUMN_DATA_HL
     enum TC_KOV_HL
     enum TB_BLANKS_HL
 
-

§2.42. -<Establish tables 2.42> = +

§1.42. +<Establish tables 1.42> =

-        inter_symbol *table_ptype = Packaging::register_ptype(I"_table", TRUE);
-        HierarchyLocations::ap(TABLES_HAP, TABLES_SUBMODULE, I"table", table_ptype);
-            inter_symbol *table_column_ptype = Packaging::register_ptype(I"_table_column", TRUE);
-            HierarchyLocations::ap_within(TABLE_COLUMNS_HAP, table_ptype, I"table_column", table_column_ptype);
+        submodule_identity *tables = Packaging::register_submodule(I"tables");
 
-        package_request *synoptic_tables = Packaging::synoptic_resource(TABLES_SUBMODULE);
-        HierarchyLocations::make(TB_BLANKS_HL, I"TB_Blanks", synoptic_tables);
-        HierarchyLocations::make_function(TC_KOV_HL, I"weak_kind_ID_of_column_entry_fn", I"TC_KOV", synoptic_tables);
+        location_requirement local_tables = HierarchyLocations::local_submodule(tables);
+        HierarchyLocations::ap(TABLES_HAP, local_tables, I"table", I"_table");
+            location_requirement in_table = HierarchyLocations::any_package_of_type(I"_table");
+            HierarchyLocations::con(TABLE_DATA_HL, I"table_data", Translation::uniqued(), in_table);
+            HierarchyLocations::ap(TABLE_COLUMNS_HAP, in_table, I"table_column", I"_table_column");
+                location_requirement in_table_column = HierarchyLocations::any_package_of_type(I"_table_column");
+                HierarchyLocations::con(COLUMN_DATA_HL, I"column_data", Translation::uniqued(), in_table_column);
+
+        location_requirement synoptic_tables = HierarchyLocations::synoptic_submodule(tables);
+        HierarchyLocations::con(TB_BLANKS_HL, I"TB_Blanks", Translation::same(), synoptic_tables);
+        HierarchyLocations::func(TC_KOV_HL, I"weak_kind_ID_of_column_entry_fn", Translation::to(I"TC_KOV"), synoptic_tables);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.43. Variables.

+

§1.43. Variables.

     enum VARIABLES_HAP
 
-

§2.44. -<Establish variables 2.44> = +

§1.44. +<Establish variables 1.44> =

-        inter_symbol *variable_ptype = Packaging::register_ptype(I"_variable", TRUE);
-        HierarchyLocations::ap(VARIABLES_HAP, VARIABLES_SUBMODULE, I"variable", variable_ptype);
+        submodule_identity *variables = Packaging::register_submodule(I"variables");
+
+        location_requirement local_variables = HierarchyLocations::local_submodule(variables);
+        HierarchyLocations::ap(VARIABLES_HAP, local_variables, I"variable", I"_variable");
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.45.

+

§1.45.

@@ -980,41 +1000,51 @@
     enum TIME_TOKEN_INNER_HL
     enum TRUTH_STATE_TOKEN_INNER_HL
 
-

§2.46. -<The rest 2.46> = +

§1.46. +<The rest 1.46> =

-        HierarchyLocations::make_in_exotic(OBJECT_HL, I"Object", K_OBJECT_XPACKAGE);
-        HierarchyLocations::make_in_exotic(NOTHING_HL, I"nothing", K_OBJECT_XPACKAGE);
-        HierarchyLocations::make_in_exotic(CAPSHORTNAME_HL, I"cap_short_name", K_OBJECT_XPACKAGE);
+        location_requirement in_K_object = HierarchyLocations::this_exotic_package(K_OBJECT_XPACKAGE);
+        HierarchyLocations::con(OBJECT_HL, I"Object", Translation::same(), in_K_object);
+        HierarchyLocations::con(NOTHING_HL, I"nothing", Translation::same(), in_K_object);
+        HierarchyLocations::con(CAPSHORTNAME_HL, I"cap_short_name", Translation::same(), in_K_object);
 
-        HierarchyLocations::make_function_in_exotic(DECIMAL_TOKEN_INNER_HL, I"gpr_fn", I"DECIMAL_TOKEN_INNER", K_NUMBER_XPACKAGE);
+        location_requirement in_K_number = HierarchyLocations::this_exotic_package(K_NUMBER_XPACKAGE);
+        HierarchyLocations::func(DECIMAL_TOKEN_INNER_HL, I"gpr_fn", Translation::to(I"DECIMAL_TOKEN_INNER"), in_K_number);
 
-        HierarchyLocations::make_function_in_exotic(TIME_TOKEN_INNER_HL, I"gpr_fn", I"TIME_TOKEN_INNER", K_TIME_XPACKAGE);
+        location_requirement in_K_time = HierarchyLocations::this_exotic_package(K_TIME_XPACKAGE);
+        HierarchyLocations::func(TIME_TOKEN_INNER_HL, I"gpr_fn", Translation::to(I"TIME_TOKEN_INNER"), in_K_time);
 
-        HierarchyLocations::make_function_in_exotic(TRUTH_STATE_TOKEN_INNER_HL, I"gpr_fn", I"TRUTH_STATE_TOKEN_INNER", K_TRUTH_STATE_XPACKAGE);
+        location_requirement in_K_truth_state = HierarchyLocations::this_exotic_package(K_TRUTH_STATE_XPACKAGE);
+        HierarchyLocations::func(TRUTH_STATE_TOKEN_INNER_HL, I"gpr_fn", Translation::to(I"TRUTH_STATE_TOKEN_INNER"), in_K_truth_state);
 
-        HierarchyLocations::make_in_exotic(TABLEOFTABLES_HL, I"TableOfTables", K_TABLE_XPACKAGE);
+        location_requirement in_K_table = HierarchyLocations::this_exotic_package(K_TABLE_XPACKAGE);
+        HierarchyLocations::con(TABLEOFTABLES_HL, I"TableOfTables", Translation::same(), in_K_table);
 
-        HierarchyLocations::make_in_exotic(TABLEOFVERBS_HL, I"TableOfVerbs", K_VERB_XPACKAGE);
+        location_requirement in_K_verb = HierarchyLocations::this_exotic_package(K_VERB_XPACKAGE);
+        HierarchyLocations::con(TABLEOFVERBS_HL, I"TableOfVerbs", Translation::same(), in_K_verb);
 
-        HierarchyLocations::make_in_exotic(RESOURCEIDSOFFIGURES_HL, I"ResourceIDsOfFigures", K_FIGURE_NAME_XPACKAGE);
+        location_requirement in_K_figure_name = HierarchyLocations::this_exotic_package(K_FIGURE_NAME_XPACKAGE);
+        HierarchyLocations::con(RESOURCEIDSOFFIGURES_HL, I"ResourceIDsOfFigures", Translation::same(), in_K_figure_name);
 
-        HierarchyLocations::make_in_exotic(RESOURCEIDSOFSOUNDS_HL, I"ResourceIDsOfSounds", K_SOUND_NAME_XPACKAGE);
+        location_requirement in_K_sound_name = HierarchyLocations::this_exotic_package(K_SOUND_NAME_XPACKAGE);
+        HierarchyLocations::con(RESOURCEIDSOFSOUNDS_HL, I"ResourceIDsOfSounds", Translation::same(), in_K_sound_name);
 
-        HierarchyLocations::make_in_exotic(NO_USE_OPTIONS_HL, I"NO_USE_OPTIONS", K_USE_OPTION_XPACKAGE);
-        HierarchyLocations::make_function_in_exotic(TESTUSEOPTION_HL, I"test_fn", I"TestUseOption", K_USE_OPTION_XPACKAGE);
+        location_requirement in_K_use_option = HierarchyLocations::this_exotic_package(K_USE_OPTION_XPACKAGE);
+        HierarchyLocations::con(NO_USE_OPTIONS_HL, I"NO_USE_OPTIONS", Translation::same(), in_K_use_option);
+        HierarchyLocations::func(TESTUSEOPTION_HL, I"test_fn", Translation::to(I"TestUseOption"), in_K_use_option);
 
-        HierarchyLocations::make_function_in_exotic(COMMANDPROMPTTEXT_HL, I"command_prompt_text_fn", I"CommandPromptText", V_COMMAND_PROMPT_XPACKAGE);
+        location_requirement in_V_command_prompt = HierarchyLocations::this_exotic_package(V_COMMAND_PROMPT_XPACKAGE);
+        HierarchyLocations::func(COMMANDPROMPTTEXT_HL, I"command_prompt_text_fn", Translation::to(I"CommandPromptText"), in_V_command_prompt);
 

-

This code is used in §2.

+

This code is used in §1.

-

§2.47.

+

§1.47.

@@ -1252,260 +1282,260 @@
     enum WORDINPROPERTY_HL
     enum WORDLENGTH_HL
 
-

§2.48. -<Establish template resources 2.48> = +

§1.48. +<Establish template resources 1.48> =

-        package_request *template = Hierarchy::template();
-        HierarchyLocations::make(ACT_REQUESTER_HL, I"act_requester", template);
-        HierarchyLocations::make(ACTION_HL, I"action", template);
-        HierarchyLocations::make(ACTIONCURRENTLYHAPPENINGFLAG_HL, I"ActionCurrentlyHappeningFlag", template);
-        HierarchyLocations::make(ACTOR_HL, I"actor", template);
-        HierarchyLocations::make(ACTOR_LOCATION_HL, I"actor_location", template);
-        HierarchyLocations::make(ADJUSTPARAGRAPHPOINT_HL, I"AdjustParagraphPoint", template);
-        HierarchyLocations::make(ALLOWINSHOWME_HL, I"AllowInShowme", template);
-        HierarchyLocations::make(ANIMATE_HL, I"animate", template);
-        HierarchyLocations::make(ARGUMENTTYPEFAILED_HL, I"ArgumentTypeFailed", template);
-        HierarchyLocations::make(ARTICLEDESCRIPTORS_HL, I"ArticleDescriptors", template);
-        HierarchyLocations::make(AUXF_MAGIC_VALUE_HL, I"AUXF_MAGIC_VALUE", template);
-        HierarchyLocations::make(AUXF_STATUS_IS_CLOSED_HL, I"AUXF_STATUS_IS_CLOSED", template);
-        HierarchyLocations::make(BLKVALUECOPY_HL, I"BlkValueCopy", template);
-        HierarchyLocations::make(BLKVALUECOPYAZ_HL, I"BlkValueCopyAZ", template);
-        HierarchyLocations::make(BLKVALUECREATE_HL, I"BlkValueCreate", template);
-        HierarchyLocations::make(BLKVALUECREATEONSTACK_HL, I"BlkValueCreateOnStack", template);
-        HierarchyLocations::make(BLKVALUEERROR_HL, I"BlkValueError", template);
-        HierarchyLocations::make(BLKVALUEFREE_HL, I"BlkValueFree", template);
-        HierarchyLocations::make(BLKVALUEFREEONSTACK_HL, I"BlkValueFreeOnStack", template);
-        HierarchyLocations::make(BLKVALUEWRITE_HL, I"BlkValueWrite", template);
-        HierarchyLocations::make(C_STYLE_HL, I"c_style", template);
-        HierarchyLocations::make(CHECKKINDRETURNED_HL, I"CheckKindReturned", template);
-        HierarchyLocations::make(CLEARPARAGRAPHING_HL, I"ClearParagraphing", template);
-        HierarchyLocations::make(COMPONENT_CHILD_HL, I"component_child", template);
-        HierarchyLocations::make(COMPONENT_PARENT_HL, I"component_parent", template);
-        HierarchyLocations::make(COMPONENT_SIBLING_HL, I"component_sibling", template);
-        HierarchyLocations::make(CONSTANT_PACKED_TEXT_STORAGE_HL, I"CONSTANT_PACKED_TEXT_STORAGE", template);
-        HierarchyLocations::make(CONSTANT_PERISHABLE_TEXT_STORAGE_HL, I"CONSTANT_PERISHABLE_TEXT_STORAGE", template);
-        HierarchyLocations::make(CONSULT_FROM_HL, I"consult_from", template);
-        HierarchyLocations::make(CONSULT_WORDS_HL, I"consult_words", template);
-        HierarchyLocations::make(CONTAINER_HL, I"container", template);
-        HierarchyLocations::make(CUBEROOT_HL, I"CubeRoot", template);
-        HierarchyLocations::make(DA_NAME_HL, I"DA_Name", template);
-        HierarchyLocations::make(DB_RULE_HL, I"DB_Rule", template);
-        HierarchyLocations::make(DEADFLAG_HL, I"deadflag", template);
-        HierarchyLocations::make(DEBUG_RULES_HL, I"debug_rules", template);
-        HierarchyLocations::make(DEBUG_SCENES_HL, I"debug_scenes", template);
-        HierarchyLocations::make(DECIMALNUMBER_HL, I"DecimalNumber", template);
-        HierarchyLocations::make(DEFERRED_CALLING_LIST_HL, I"deferred_calling_list", template);
-        HierarchyLocations::make(DETECTPLURALWORD_HL, I"DetectPluralWord", template);
-        HierarchyLocations::make(DIGITTOVALUE_HL, I"DigitToValue", template);
-        HierarchyLocations::make(DIVIDEPARAGRAPHPOINT_HL, I"DivideParagraphPoint", template);
-        HierarchyLocations::make(DOUBLEHASHSETRELATIONHANDLER_HL, I"DoubleHashSetRelationHandler", template);
-        HierarchyLocations::make(DURINGSCENEMATCHING_HL, I"DuringSceneMatching", template);
-        HierarchyLocations::make(ELEMENTARY_TT_HL, I"ELEMENTARY_TT", template);
-        HierarchyLocations::make(EMPTY_TABLE_HL, I"TheEmptyTable", template);
-        HierarchyLocations::make(EMPTY_TEXT_PACKED_HL, I"EMPTY_TEXT_PACKED", template);
-        HierarchyLocations::make(EMPTY_TEXT_VALUE_HL, I"EMPTY_TEXT_VALUE", template);
-        HierarchyLocations::make(EMPTYRELATIONHANDLER_HL, I"EmptyRelationHandler", template);
-        HierarchyLocations::make(ENGLISH_BIT_HL, I"ENGLISH_BIT", template);
-        HierarchyLocations::make(ETYPE_HL, I"etype", template);
-        HierarchyLocations::make(EXISTSTABLELOOKUPCORR_HL, I"ExistsTableLookUpCorr", template);
-        HierarchyLocations::make(EXISTSTABLELOOKUPENTRY_HL, I"ExistsTableLookUpEntry", template);
-        HierarchyLocations::make(EXISTSTABLEROWCORR_HL, I"ExistsTableRowCorr", template);
-        HierarchyLocations::make(FLOATPARSE_HL, I"FloatParse", template);
-        HierarchyLocations::make(FOLLOWRULEBOOK_HL, I"FollowRulebook", template);
-        HierarchyLocations::make(formal_par0_HL, I"formal_par0", template);
-        HierarchyLocations::make(formal_par1_HL, I"formal_par1", template);
-        HierarchyLocations::make(formal_par2_HL, I"formal_par2", template);
-        HierarchyLocations::make(formal_par3_HL, I"formal_par3", template);
-        HierarchyLocations::make(formal_par4_HL, I"formal_par4", template);
-        HierarchyLocations::make(formal_par5_HL, I"formal_par5", template);
-        HierarchyLocations::make(formal_par6_HL, I"formal_par6", template);
-        HierarchyLocations::make(formal_par7_HL, I"formal_par7", template);
-        HierarchyLocations::make(FORMAL_RV_HL, I"formal_rv", template);
-        HierarchyLocations::make(FOUND_EVERYWHERE_HL, I"FoundEverywhere", template);
-        HierarchyLocations::make(GENERATERANDOMNUMBER_HL, I"GenerateRandomNumber", template);
-        HierarchyLocations::make(GENERICVERBSUB_HL, I"GenericVerbSub", template);
-        HierarchyLocations::make(GETGNAOFOBJECT_HL, I"GetGNAOfObject", template);
-        HierarchyLocations::make(GPR_FAIL_HL, I"GPR_FAIL", template);
-        HierarchyLocations::make(GPR_NUMBER_HL, I"GPR_NUMBER", template);
-        HierarchyLocations::make(GPR_PREPOSITION_HL, I"GPR_PREPOSITION", template);
-        HierarchyLocations::make(GPR_TT_HL, I"GPR_TT", template);
-        HierarchyLocations::make(GPROPERTY_HL, I"GProperty", template);
-        HierarchyLocations::make(HASHLISTRELATIONHANDLER_HL, I"HashListRelationHandler", template);
-        HierarchyLocations::make(I7SFRAME_HL, I"I7SFRAME", template);
-        HierarchyLocations::make(INDENT_BIT_HL, I"INDENT_BIT", template);
-        HierarchyLocations::make(INP1_HL, I"inp1", template);
-        HierarchyLocations::make(INP2_HL, I"inp2", template);
-        HierarchyLocations::make(INTEGERDIVIDE_HL, I"IntegerDivide", template);
-        HierarchyLocations::make(INTEGERREMAINDER_HL, I"IntegerRemainder", template);
-        HierarchyLocations::make(INVENTORY_STAGE_HL, I"inventory_stage", template);
-        HierarchyLocations::make(KEEP_SILENT_HL, I"keep_silent", template);
-        HierarchyLocations::make(KINDATOMIC_HL, I"KindAtomic", template);
-        HierarchyLocations::make(LATEST_RULE_RESULT_HL, I"latest_rule_result", template);
-        HierarchyLocations::make(LIST_ITEM_BASE_HL, I"LIST_ITEM_BASE", template);
-        HierarchyLocations::make(LIST_ITEM_KOV_F_HL, I"LIST_ITEM_KOV_F", template);
-        HierarchyLocations::make(LIST_OF_TY_DESC_HL, I"LIST_OF_TY_Desc", template);
-        HierarchyLocations::make(LIST_OF_TY_GETITEM_HL, I"LIST_OF_TY_GetItem", template);
-        HierarchyLocations::make(LIST_OF_TY_GETLENGTH_HL, I"LIST_OF_TY_GetLength", template);
-        HierarchyLocations::make(LIST_OF_TY_INSERTITEM_HL, I"LIST_OF_TY_InsertItem", template);
-        HierarchyLocations::make(LIST_OF_TY_SAY_HL, I"LIST_OF_TY_Say", template);
-        HierarchyLocations::make(LIST_OF_TY_SETLENGTH_HL, I"LIST_OF_TY_SetLength", template);
-        HierarchyLocations::make(LOCALPARKING_HL, I"LocalParking", template);
-        HierarchyLocations::make(LOCATION_HL, I"location", template);
-        HierarchyLocations::make(LOCATIONOF_HL, I"LocationOf", template);
-        HierarchyLocations::make(LOOPOVERSCOPE_HL, I"LoopOverScope", template);
-        HierarchyLocations::make(LOS_RV_HL, I"los_rv", template);
-        HierarchyLocations::make(MSTACK_HL, I"MStack", template);
-        HierarchyLocations::make(MSTVO_HL, I"MstVO", template);
-        HierarchyLocations::make(MSTVON_HL, I"MstVON", template);
-        HierarchyLocations::make(NAME_HL, I"name", template);
-        HierarchyLocations::make(NEWLINE_BIT_HL, I"NEWLINE_BIT", template);
-        HierarchyLocations::make(NEXTBEST_ETYPE_HL, I"nextbest_etype", template);
-        HierarchyLocations::make(NEXTWORDSTOPPED_HL, I"NextWordStopped", template);
-        HierarchyLocations::make(NOARTICLE_BIT_HL, I"NOARTICLE_BIT", template);
-        HierarchyLocations::make(NOTINCONTEXTPE_HL, I"NOTINCONTEXT_PE", template);
-        HierarchyLocations::make(NOUN_HL, I"noun", template);
-        HierarchyLocations::make(NUMBER_TY_ABS_HL, I"NUMBER_TY_Abs", template);
-        HierarchyLocations::make(NUMBER_TY_TO_REAL_NUMBER_TY_HL, I"NUMBER_TY_to_REAL_NUMBER_TY", template);
-        HierarchyLocations::make(NUMBER_TY_TO_TIME_TY_HL, I"NUMBER_TY_to_TIME_TY", template);
-        HierarchyLocations::make(OTOVRELROUTETO_HL, I"OtoVRelRouteTo", template);
-        HierarchyLocations::make(PACKED_TEXT_STORAGE_HL, I"PACKED_TEXT_STORAGE", template);
-        HierarchyLocations::make(PARACONTENT_HL, I"ParaContent", template);
-        HierarchyLocations::make(PARAMETER_VALUE_HL, I"parameter_value", template);
-        HierarchyLocations::make(PARSED_NUMBER_HL, I"parsed_number", template);
-        HierarchyLocations::make(PARSER_ACTION_HL, I"parser_action", template);
-        HierarchyLocations::make(PARSER_ONE_HL, I"parser_one", template);
-        HierarchyLocations::make(PARSER_TRACE_HL, I"parser_trace", template);
-        HierarchyLocations::make(PARSER_TWO_HL, I"parser_two", template);
-        HierarchyLocations::make(PARSERERROR_HL, I"ParserError", template);
-        HierarchyLocations::make(PARSETOKENSTOPPED_HL, I"ParseTokenStopped", template);
-        HierarchyLocations::make(PAST_CHRONOLOGICAL_RECORD_HL, I"past_chronological_record", template);
-        HierarchyLocations::make(PLACEINSCOPE_HL, I"PlaceInScope", template);
-        HierarchyLocations::make(PLAYER_HL, I"player", template);
-        HierarchyLocations::make(PNTOVP_HL, I"PNToVP", template);
-        HierarchyLocations::make(PRESENT_CHRONOLOGICAL_RECORD_HL, I"present_chronological_record", template);
-        HierarchyLocations::make(PRINTORRUN_HL, I"PrintOrRun", template);
-        HierarchyLocations::make(PRIOR_NAMED_LIST_HL, I"prior_named_list", template);
-        HierarchyLocations::make(PRIOR_NAMED_LIST_GENDER_HL, I"prior_named_list_gender", template);
-        HierarchyLocations::make(PRIOR_NAMED_NOUN_HL, I"prior_named_noun", template);
-        HierarchyLocations::make(PROPERTY_LOOP_SIGN_HL, I"property_loop_sign", template);
-        HierarchyLocations::make(PROPERTY_TO_BE_TOTALLED_HL, I"property_to_be_totalled", template);
-        HierarchyLocations::make(REAL_LOCATION_HL, I"real_location", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_ABS_HL, I"REAL_NUMBER_TY_Abs", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_APPROXIMATE_HL, I"REAL_NUMBER_TY_Approximate", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_COMPARE_HL, I"REAL_NUMBER_TY_Compare", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_CUBE_ROOT_HL, I"REAL_NUMBER_TY_Cube_Root", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_DIVIDE_HL, I"REAL_NUMBER_TY_Divide", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_MINUS_HL, I"REAL_NUMBER_TY_Minus", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_NAN_HL, I"REAL_NUMBER_TY_Nan", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_NEGATE_HL, I"REAL_NUMBER_TY_Negate", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_PLUS_HL, I"REAL_NUMBER_TY_Plus", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_POW_HL, I"REAL_NUMBER_TY_Pow", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_REMAINDER_HL, I"REAL_NUMBER_TY_Remainder", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_ROOT_HL, I"REAL_NUMBER_TY_Root", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_SAY_HL, I"REAL_NUMBER_TY_Say", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_TIMES_HL, I"REAL_NUMBER_TY_Times", template);
-        HierarchyLocations::make(REAL_NUMBER_TY_TO_NUMBER_TY_HL, I"REAL_NUMBER_TY_to_NUMBER_TY", template);
-        HierarchyLocations::make(REASON_THE_ACTION_FAILED_HL, I"reason_the_action_failed", template);
-        HierarchyLocations::make(RELATION_EMPTYEQUIV_HL, I"Relation_EmptyEquiv", template);
-        HierarchyLocations::make(RELATION_EMPTYOTOO_HL, I"Relation_EmptyOtoO", template);
-        HierarchyLocations::make(RELATION_EMPTYVTOV_HL, I"Relation_EmptyVtoV", template);
-        HierarchyLocations::make(RELATION_RSHOWOTOO_HL, I"Relation_RShowOtoO", template);
-        HierarchyLocations::make(RELATION_SHOWEQUIV_HL, I"Relation_ShowEquiv", template);
-        HierarchyLocations::make(RELATION_SHOWOTOO_HL, I"Relation_ShowOtoO", template);
-        HierarchyLocations::make(RELATION_SHOWVTOV_HL, I"Relation_ShowVtoV", template);
-        HierarchyLocations::make(RELATION_TY_EQUIVALENCEADJECTIVE_HL, I"RELATION_TY_EquivalenceAdjective", template);
-        HierarchyLocations::make(RELATION_TY_NAME_HL, I"RELATION_TY_Name", template);
-        HierarchyLocations::make(RELATION_TY_OTOOADJECTIVE_HL, I"RELATION_TY_OToOAdjective", template);
-        HierarchyLocations::make(RELATION_TY_OTOVADJECTIVE_HL, I"RELATION_TY_OToVAdjective", template);
-        HierarchyLocations::make(RELATION_TY_SYMMETRICADJECTIVE_HL, I"RELATION_TY_SymmetricAdjective", template);
-        HierarchyLocations::make(RELATION_TY_VTOOADJECTIVE_HL, I"RELATION_TY_VToOAdjective", template);
-        HierarchyLocations::make(RELATIONTEST_HL, I"RelationTest", template);
-        HierarchyLocations::make(RELFOLLOWVECTOR_HL, I"RelFollowVector", template);
-        HierarchyLocations::make(RELS_EMPTY_HL, I"RELS_EMPTY", template);
-        HierarchyLocations::make(RESPONSEVIAACTIVITY_HL, I"ResponseViaActivity", template);
-        HierarchyLocations::make(RLANY_CAN_GET_X_HL, I"RLANY_CAN_GET_X", template);
-        HierarchyLocations::make(RLANY_CAN_GET_Y_HL, I"RLANY_CAN_GET_Y", template);
-        HierarchyLocations::make(RLANY_GET_X_HL, I"RLANY_GET_X", template);
-        HierarchyLocations::make(RLIST_ALL_X_HL, I"RLIST_ALL_X", template);
-        HierarchyLocations::make(RLIST_ALL_Y_HL, I"RLIST_ALL_Y", template);
-        HierarchyLocations::make(RLNGETF_HL, I"RlnGetF", template);
-        HierarchyLocations::make(ROUNDOFFTIME_HL, I"RoundOffTime", template);
-        HierarchyLocations::make(ROUTINEFILTER_TT_HL, I"ROUTINE_FILTER_TT", template);
-        HierarchyLocations::make(RR_STORAGE_HL, I"RR_STORAGE", template);
-        HierarchyLocations::make(RTP_RELKINDVIOLATION_HL, I"RTP_RELKINDVIOLATION", template);
-        HierarchyLocations::make(RTP_RELMINIMAL_HL, I"RTP_RELMINIMAL", template);
-        HierarchyLocations::make(RULEBOOKFAILS_HL, I"RulebookFails", template);
-        HierarchyLocations::make(RULEBOOKPARBREAK_HL, I"RulebookParBreak", template);
-        HierarchyLocations::make(RULEBOOKSUCCEEDS_HL, I"RulebookSucceeds", template);
-        HierarchyLocations::make(RUNTIMEPROBLEM_HL, I"RunTimeProblem", template);
-        HierarchyLocations::make(SAY__N_HL, I"say__n", template);
-        HierarchyLocations::make(SAY__P_HL, I"say__p", template);
-        HierarchyLocations::make(SAY__PC_HL, I"say__pc", template);
-        HierarchyLocations::make(SCENE_ENDED_HL, I"scene_ended", template);
-        HierarchyLocations::make(SCENE_ENDINGS_HL, I"scene_endings", template);
-        HierarchyLocations::make(SCENE_LATEST_ENDING_HL, I"scene_latest_ending", template);
-        HierarchyLocations::make(SCENE_STARTED_HL, I"scene_started", template);
-        HierarchyLocations::make(SCENE_STATUS_HL, I"scene_status", template);
-        HierarchyLocations::make(SCOPE_STAGE_HL, I"scope_stage", template);
-        HierarchyLocations::make(SCOPE_TT_HL, I"SCOPE_TT", template);
-        HierarchyLocations::make(SECOND_HL, I"second", template);
-        HierarchyLocations::make(SHORT_NAME_HL, I"short_name", template);
-        HierarchyLocations::make(SIGNEDCOMPARE_HL, I"SignedCompare", template);
-        HierarchyLocations::make(SPECIAL_WORD_HL, I"special_word", template);
-        HierarchyLocations::make(SQUAREROOT_HL, I"SquareRoot", template);
-        HierarchyLocations::make(STACKFRAMECREATE_HL, I"StackFrameCreate", template);
-        HierarchyLocations::make(STORED_ACTION_TY_CURRENT_HL, I"STORED_ACTION_TY_Current", template);
-        HierarchyLocations::make(STORED_ACTION_TY_TRY_HL, I"STORED_ACTION_TY_Try", template);
-        HierarchyLocations::make(STORY_TENSE_HL, I"story_tense", template);
-        HierarchyLocations::make(SUPPORTER_HL, I"supporter", template);
-        HierarchyLocations::make(SUPPRESS_SCOPE_LOOPS_HL, I"suppress_scope_loops", template);
-        HierarchyLocations::make(SUPPRESS_TEXT_SUBSTITUTION_HL, I"suppress_text_substitution", template);
-        HierarchyLocations::make(TABLE_NOVALUE_HL, I"TABLE_NOVALUE", template);
-        HierarchyLocations::make(TABLELOOKUPCORR_HL, I"TableLookUpCorr", template);
-        HierarchyLocations::make(TABLELOOKUPENTRY_HL, I"TableLookUpEntry", template);
-        HierarchyLocations::make(TESTACTIONBITMAP_HL, I"TestActionBitmap", template);
-        HierarchyLocations::make(TESTACTIVITY_HL, I"TestActivity", template);
-        HierarchyLocations::make(TESTREGIONALCONTAINMENT_HL, I"TestRegionalContainment", template);
-        HierarchyLocations::make(TESTSCOPE_HL, I"TestScope", template);
-        HierarchyLocations::make(TESTSTART_HL, I"TestStart", template);
-        HierarchyLocations::make(TEXT_TY_COMPARE_HL, I"TEXT_TY_Compare", template);
-        HierarchyLocations::make(TEXT_TY_EXPANDIFPERISHABLE_HL, I"TEXT_TY_ExpandIfPerishable", template);
-        HierarchyLocations::make(TEXT_TY_SAY_HL, I"TEXT_TY_Say", template);
-        HierarchyLocations::make(THE_TIME_HL, I"the_time", template);
-        HierarchyLocations::make(THEEMPTYTABLE_HL, I"TheEmptyTable", template);
-        HierarchyLocations::make(THEN1__WD_HL, I"THEN1__WD", template);
-        HierarchyLocations::make(TIMESACTIONHASBEENHAPPENING_HL, I"TimesActionHasBeenHappening", template);
-        HierarchyLocations::make(TIMESACTIONHASHAPPENED_HL, I"TimesActionHasHappened", template);
-        HierarchyLocations::make(TRYACTION_HL, I"TryAction", template);
-        HierarchyLocations::make(TRYGIVENOBJECT_HL, I"TryGivenObject", template);
-        HierarchyLocations::make(TURNSACTIONHASBEENHAPPENING_HL, I"TurnsActionHasBeenHappening", template);
-        HierarchyLocations::make(UNDERSTAND_AS_MISTAKE_NUMBER_HL, I"understand_as_mistake_number", template);
-        HierarchyLocations::make(UNICODE_TEMP_HL, I"unicode_temp", template);
-        HierarchyLocations::make(VTOORELROUTETO_HL, I"VtoORelRouteTo", template);
-        HierarchyLocations::make(VTOVRELROUTETO_HL, I"VtoVRelRouteTo", template);
-        HierarchyLocations::make(WHEN_SCENE_BEGINS_HL, I"WHEN_SCENE_BEGINS_RB", template);
-        HierarchyLocations::make(WHEN_SCENE_ENDS_HL, I"WHEN_SCENE_ENDS_RB", template);
-        HierarchyLocations::make(WN_HL, I"wn", template);
-        HierarchyLocations::make(WORDADDRESS_HL, I"WordAddress", template);
-        HierarchyLocations::make(WORDINPROPERTY_HL, I"WordInProperty", template);
-        HierarchyLocations::make(WORDLENGTH_HL, I"WordLength", template);
+        location_requirement template = HierarchyLocations::this_package(Hierarchy::template());
+        HierarchyLocations::con(ACT_REQUESTER_HL, I"act_requester", Translation::same(), template);
+        HierarchyLocations::con(ACTION_HL, I"action", Translation::same(), template);
+        HierarchyLocations::con(ACTIONCURRENTLYHAPPENINGFLAG_HL, I"ActionCurrentlyHappeningFlag", Translation::same(), template);
+        HierarchyLocations::con(ACTOR_HL, I"actor", Translation::same(), template);
+        HierarchyLocations::con(ACTOR_LOCATION_HL, I"actor_location", Translation::same(), template);
+        HierarchyLocations::con(ADJUSTPARAGRAPHPOINT_HL, I"AdjustParagraphPoint", Translation::same(), template);
+        HierarchyLocations::con(ALLOWINSHOWME_HL, I"AllowInShowme", Translation::same(), template);
+        HierarchyLocations::con(ANIMATE_HL, I"animate", Translation::same(), template);
+        HierarchyLocations::con(ARGUMENTTYPEFAILED_HL, I"ArgumentTypeFailed", Translation::same(), template);
+        HierarchyLocations::con(ARTICLEDESCRIPTORS_HL, I"ArticleDescriptors", Translation::same(), template);
+        HierarchyLocations::con(AUXF_MAGIC_VALUE_HL, I"AUXF_MAGIC_VALUE", Translation::same(), template);
+        HierarchyLocations::con(AUXF_STATUS_IS_CLOSED_HL, I"AUXF_STATUS_IS_CLOSED", Translation::same(), template);
+        HierarchyLocations::con(BLKVALUECOPY_HL, I"BlkValueCopy", Translation::same(), template);
+        HierarchyLocations::con(BLKVALUECOPYAZ_HL, I"BlkValueCopyAZ", Translation::same(), template);
+        HierarchyLocations::con(BLKVALUECREATE_HL, I"BlkValueCreate", Translation::same(), template);
+        HierarchyLocations::con(BLKVALUECREATEONSTACK_HL, I"BlkValueCreateOnStack", Translation::same(), template);
+        HierarchyLocations::con(BLKVALUEERROR_HL, I"BlkValueError", Translation::same(), template);
+        HierarchyLocations::con(BLKVALUEFREE_HL, I"BlkValueFree", Translation::same(), template);
+        HierarchyLocations::con(BLKVALUEFREEONSTACK_HL, I"BlkValueFreeOnStack", Translation::same(), template);
+        HierarchyLocations::con(BLKVALUEWRITE_HL, I"BlkValueWrite", Translation::same(), template);
+        HierarchyLocations::con(C_STYLE_HL, I"c_style", Translation::same(), template);
+        HierarchyLocations::con(CHECKKINDRETURNED_HL, I"CheckKindReturned", Translation::same(), template);
+        HierarchyLocations::con(CLEARPARAGRAPHING_HL, I"ClearParagraphing", Translation::same(), template);
+        HierarchyLocations::con(COMPONENT_CHILD_HL, I"component_child", Translation::same(), template);
+        HierarchyLocations::con(COMPONENT_PARENT_HL, I"component_parent", Translation::same(), template);
+        HierarchyLocations::con(COMPONENT_SIBLING_HL, I"component_sibling", Translation::same(), template);
+        HierarchyLocations::con(CONSTANT_PACKED_TEXT_STORAGE_HL, I"CONSTANT_PACKED_TEXT_STORAGE", Translation::same(), template);
+        HierarchyLocations::con(CONSTANT_PERISHABLE_TEXT_STORAGE_HL, I"CONSTANT_PERISHABLE_TEXT_STORAGE", Translation::same(), template);
+        HierarchyLocations::con(CONSULT_FROM_HL, I"consult_from", Translation::same(), template);
+        HierarchyLocations::con(CONSULT_WORDS_HL, I"consult_words", Translation::same(), template);
+        HierarchyLocations::con(CONTAINER_HL, I"container", Translation::same(), template);
+        HierarchyLocations::con(CUBEROOT_HL, I"CubeRoot", Translation::same(), template);
+        HierarchyLocations::con(DA_NAME_HL, I"DA_Name", Translation::same(), template);
+        HierarchyLocations::con(DB_RULE_HL, I"DB_Rule", Translation::same(), template);
+        HierarchyLocations::con(DEADFLAG_HL, I"deadflag", Translation::same(), template);
+        HierarchyLocations::con(DEBUG_RULES_HL, I"debug_rules", Translation::same(), template);
+        HierarchyLocations::con(DEBUG_SCENES_HL, I"debug_scenes", Translation::same(), template);
+        HierarchyLocations::con(DECIMALNUMBER_HL, I"DecimalNumber", Translation::same(), template);
+        HierarchyLocations::con(DEFERRED_CALLING_LIST_HL, I"deferred_calling_list", Translation::same(), template);
+        HierarchyLocations::con(DETECTPLURALWORD_HL, I"DetectPluralWord", Translation::same(), template);
+        HierarchyLocations::con(DIGITTOVALUE_HL, I"DigitToValue", Translation::same(), template);
+        HierarchyLocations::con(DIVIDEPARAGRAPHPOINT_HL, I"DivideParagraphPoint", Translation::same(), template);
+        HierarchyLocations::con(DOUBLEHASHSETRELATIONHANDLER_HL, I"DoubleHashSetRelationHandler", Translation::same(), template);
+        HierarchyLocations::con(DURINGSCENEMATCHING_HL, I"DuringSceneMatching", Translation::same(), template);
+        HierarchyLocations::con(ELEMENTARY_TT_HL, I"ELEMENTARY_TT", Translation::same(), template);
+        HierarchyLocations::con(EMPTY_TABLE_HL, I"TheEmptyTable", Translation::same(), template);
+        HierarchyLocations::con(EMPTY_TEXT_PACKED_HL, I"EMPTY_TEXT_PACKED", Translation::same(), template);
+        HierarchyLocations::con(EMPTY_TEXT_VALUE_HL, I"EMPTY_TEXT_VALUE", Translation::same(), template);
+        HierarchyLocations::con(EMPTYRELATIONHANDLER_HL, I"EmptyRelationHandler", Translation::same(), template);
+        HierarchyLocations::con(ENGLISH_BIT_HL, I"ENGLISH_BIT", Translation::same(), template);
+        HierarchyLocations::con(ETYPE_HL, I"etype", Translation::same(), template);
+        HierarchyLocations::con(EXISTSTABLELOOKUPCORR_HL, I"ExistsTableLookUpCorr", Translation::same(), template);
+        HierarchyLocations::con(EXISTSTABLELOOKUPENTRY_HL, I"ExistsTableLookUpEntry", Translation::same(), template);
+        HierarchyLocations::con(EXISTSTABLEROWCORR_HL, I"ExistsTableRowCorr", Translation::same(), template);
+        HierarchyLocations::con(FLOATPARSE_HL, I"FloatParse", Translation::same(), template);
+        HierarchyLocations::con(FOLLOWRULEBOOK_HL, I"FollowRulebook", Translation::same(), template);
+        HierarchyLocations::con(formal_par0_HL, I"formal_par0", Translation::same(), template);
+        HierarchyLocations::con(formal_par1_HL, I"formal_par1", Translation::same(), template);
+        HierarchyLocations::con(formal_par2_HL, I"formal_par2", Translation::same(), template);
+        HierarchyLocations::con(formal_par3_HL, I"formal_par3", Translation::same(), template);
+        HierarchyLocations::con(formal_par4_HL, I"formal_par4", Translation::same(), template);
+        HierarchyLocations::con(formal_par5_HL, I"formal_par5", Translation::same(), template);
+        HierarchyLocations::con(formal_par6_HL, I"formal_par6", Translation::same(), template);
+        HierarchyLocations::con(formal_par7_HL, I"formal_par7", Translation::same(), template);
+        HierarchyLocations::con(FORMAL_RV_HL, I"formal_rv", Translation::same(), template);
+        HierarchyLocations::con(FOUND_EVERYWHERE_HL, I"FoundEverywhere", Translation::same(), template);
+        HierarchyLocations::con(GENERATERANDOMNUMBER_HL, I"GenerateRandomNumber", Translation::same(), template);
+        HierarchyLocations::con(GENERICVERBSUB_HL, I"GenericVerbSub", Translation::same(), template);
+        HierarchyLocations::con(GETGNAOFOBJECT_HL, I"GetGNAOfObject", Translation::same(), template);
+        HierarchyLocations::con(GPR_FAIL_HL, I"GPR_FAIL", Translation::same(), template);
+        HierarchyLocations::con(GPR_NUMBER_HL, I"GPR_NUMBER", Translation::same(), template);
+        HierarchyLocations::con(GPR_PREPOSITION_HL, I"GPR_PREPOSITION", Translation::same(), template);
+        HierarchyLocations::con(GPR_TT_HL, I"GPR_TT", Translation::same(), template);
+        HierarchyLocations::con(GPROPERTY_HL, I"GProperty", Translation::same(), template);
+        HierarchyLocations::con(HASHLISTRELATIONHANDLER_HL, I"HashListRelationHandler", Translation::same(), template);
+        HierarchyLocations::con(I7SFRAME_HL, I"I7SFRAME", Translation::same(), template);
+        HierarchyLocations::con(INDENT_BIT_HL, I"INDENT_BIT", Translation::same(), template);
+        HierarchyLocations::con(INP1_HL, I"inp1", Translation::same(), template);
+        HierarchyLocations::con(INP2_HL, I"inp2", Translation::same(), template);
+        HierarchyLocations::con(INTEGERDIVIDE_HL, I"IntegerDivide", Translation::same(), template);
+        HierarchyLocations::con(INTEGERREMAINDER_HL, I"IntegerRemainder", Translation::same(), template);
+        HierarchyLocations::con(INVENTORY_STAGE_HL, I"inventory_stage", Translation::same(), template);
+        HierarchyLocations::con(KEEP_SILENT_HL, I"keep_silent", Translation::same(), template);
+        HierarchyLocations::con(KINDATOMIC_HL, I"KindAtomic", Translation::same(), template);
+        HierarchyLocations::con(LATEST_RULE_RESULT_HL, I"latest_rule_result", Translation::same(), template);
+        HierarchyLocations::con(LIST_ITEM_BASE_HL, I"LIST_ITEM_BASE", Translation::same(), template);
+        HierarchyLocations::con(LIST_ITEM_KOV_F_HL, I"LIST_ITEM_KOV_F", Translation::same(), template);
+        HierarchyLocations::con(LIST_OF_TY_DESC_HL, I"LIST_OF_TY_Desc", Translation::same(), template);
+        HierarchyLocations::con(LIST_OF_TY_GETITEM_HL, I"LIST_OF_TY_GetItem", Translation::same(), template);
+        HierarchyLocations::con(LIST_OF_TY_GETLENGTH_HL, I"LIST_OF_TY_GetLength", Translation::same(), template);
+        HierarchyLocations::con(LIST_OF_TY_INSERTITEM_HL, I"LIST_OF_TY_InsertItem", Translation::same(), template);
+        HierarchyLocations::con(LIST_OF_TY_SAY_HL, I"LIST_OF_TY_Say", Translation::same(), template);
+        HierarchyLocations::con(LIST_OF_TY_SETLENGTH_HL, I"LIST_OF_TY_SetLength", Translation::same(), template);
+        HierarchyLocations::con(LOCALPARKING_HL, I"LocalParking", Translation::same(), template);
+        HierarchyLocations::con(LOCATION_HL, I"location", Translation::same(), template);
+        HierarchyLocations::con(LOCATIONOF_HL, I"LocationOf", Translation::same(), template);
+        HierarchyLocations::con(LOOPOVERSCOPE_HL, I"LoopOverScope", Translation::same(), template);
+        HierarchyLocations::con(LOS_RV_HL, I"los_rv", Translation::same(), template);
+        HierarchyLocations::con(MSTACK_HL, I"MStack", Translation::same(), template);
+        HierarchyLocations::con(MSTVO_HL, I"MstVO", Translation::same(), template);
+        HierarchyLocations::con(MSTVON_HL, I"MstVON", Translation::same(), template);
+        HierarchyLocations::con(NAME_HL, I"name", Translation::same(), template);
+        HierarchyLocations::con(NEWLINE_BIT_HL, I"NEWLINE_BIT", Translation::same(), template);
+        HierarchyLocations::con(NEXTBEST_ETYPE_HL, I"nextbest_etype", Translation::same(), template);
+        HierarchyLocations::con(NEXTWORDSTOPPED_HL, I"NextWordStopped", Translation::same(), template);
+        HierarchyLocations::con(NOARTICLE_BIT_HL, I"NOARTICLE_BIT", Translation::same(), template);
+        HierarchyLocations::con(NOTINCONTEXTPE_HL, I"NOTINCONTEXT_PE", Translation::same(), template);
+        HierarchyLocations::con(NOUN_HL, I"noun", Translation::same(), template);
+        HierarchyLocations::con(NUMBER_TY_ABS_HL, I"NUMBER_TY_Abs", Translation::same(), template);
+        HierarchyLocations::con(NUMBER_TY_TO_REAL_NUMBER_TY_HL, I"NUMBER_TY_to_REAL_NUMBER_TY", Translation::same(), template);
+        HierarchyLocations::con(NUMBER_TY_TO_TIME_TY_HL, I"NUMBER_TY_to_TIME_TY", Translation::same(), template);
+        HierarchyLocations::con(OTOVRELROUTETO_HL, I"OtoVRelRouteTo", Translation::same(), template);
+        HierarchyLocations::con(PACKED_TEXT_STORAGE_HL, I"PACKED_TEXT_STORAGE", Translation::same(), template);
+        HierarchyLocations::con(PARACONTENT_HL, I"ParaContent", Translation::same(), template);
+        HierarchyLocations::con(PARAMETER_VALUE_HL, I"parameter_value", Translation::same(), template);
+        HierarchyLocations::con(PARSED_NUMBER_HL, I"parsed_number", Translation::same(), template);
+        HierarchyLocations::con(PARSER_ACTION_HL, I"parser_action", Translation::same(), template);
+        HierarchyLocations::con(PARSER_ONE_HL, I"parser_one", Translation::same(), template);
+        HierarchyLocations::con(PARSER_TRACE_HL, I"parser_trace", Translation::same(), template);
+        HierarchyLocations::con(PARSER_TWO_HL, I"parser_two", Translation::same(), template);
+        HierarchyLocations::con(PARSERERROR_HL, I"ParserError", Translation::same(), template);
+        HierarchyLocations::con(PARSETOKENSTOPPED_HL, I"ParseTokenStopped", Translation::same(), template);
+        HierarchyLocations::con(PAST_CHRONOLOGICAL_RECORD_HL, I"past_chronological_record", Translation::same(), template);
+        HierarchyLocations::con(PLACEINSCOPE_HL, I"PlaceInScope", Translation::same(), template);
+        HierarchyLocations::con(PLAYER_HL, I"player", Translation::same(), template);
+        HierarchyLocations::con(PNTOVP_HL, I"PNToVP", Translation::same(), template);
+        HierarchyLocations::con(PRESENT_CHRONOLOGICAL_RECORD_HL, I"present_chronological_record", Translation::same(), template);
+        HierarchyLocations::con(PRINTORRUN_HL, I"PrintOrRun", Translation::same(), template);
+        HierarchyLocations::con(PRIOR_NAMED_LIST_HL, I"prior_named_list", Translation::same(), template);
+        HierarchyLocations::con(PRIOR_NAMED_LIST_GENDER_HL, I"prior_named_list_gender", Translation::same(), template);
+        HierarchyLocations::con(PRIOR_NAMED_NOUN_HL, I"prior_named_noun", Translation::same(), template);
+        HierarchyLocations::con(PROPERTY_LOOP_SIGN_HL, I"property_loop_sign", Translation::same(), template);
+        HierarchyLocations::con(PROPERTY_TO_BE_TOTALLED_HL, I"property_to_be_totalled", Translation::same(), template);
+        HierarchyLocations::con(REAL_LOCATION_HL, I"real_location", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_ABS_HL, I"REAL_NUMBER_TY_Abs", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_APPROXIMATE_HL, I"REAL_NUMBER_TY_Approximate", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_COMPARE_HL, I"REAL_NUMBER_TY_Compare", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_CUBE_ROOT_HL, I"REAL_NUMBER_TY_Cube_Root", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_DIVIDE_HL, I"REAL_NUMBER_TY_Divide", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_MINUS_HL, I"REAL_NUMBER_TY_Minus", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_NAN_HL, I"REAL_NUMBER_TY_Nan", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_NEGATE_HL, I"REAL_NUMBER_TY_Negate", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_PLUS_HL, I"REAL_NUMBER_TY_Plus", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_POW_HL, I"REAL_NUMBER_TY_Pow", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_REMAINDER_HL, I"REAL_NUMBER_TY_Remainder", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_ROOT_HL, I"REAL_NUMBER_TY_Root", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_SAY_HL, I"REAL_NUMBER_TY_Say", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_TIMES_HL, I"REAL_NUMBER_TY_Times", Translation::same(), template);
+        HierarchyLocations::con(REAL_NUMBER_TY_TO_NUMBER_TY_HL, I"REAL_NUMBER_TY_to_NUMBER_TY", Translation::same(), template);
+        HierarchyLocations::con(REASON_THE_ACTION_FAILED_HL, I"reason_the_action_failed", Translation::same(), template);
+        HierarchyLocations::con(RELATION_EMPTYEQUIV_HL, I"Relation_EmptyEquiv", Translation::same(), template);
+        HierarchyLocations::con(RELATION_EMPTYOTOO_HL, I"Relation_EmptyOtoO", Translation::same(), template);
+        HierarchyLocations::con(RELATION_EMPTYVTOV_HL, I"Relation_EmptyVtoV", Translation::same(), template);
+        HierarchyLocations::con(RELATION_RSHOWOTOO_HL, I"Relation_RShowOtoO", Translation::same(), template);
+        HierarchyLocations::con(RELATION_SHOWEQUIV_HL, I"Relation_ShowEquiv", Translation::same(), template);
+        HierarchyLocations::con(RELATION_SHOWOTOO_HL, I"Relation_ShowOtoO", Translation::same(), template);
+        HierarchyLocations::con(RELATION_SHOWVTOV_HL, I"Relation_ShowVtoV", Translation::same(), template);
+        HierarchyLocations::con(RELATION_TY_EQUIVALENCEADJECTIVE_HL, I"RELATION_TY_EquivalenceAdjective", Translation::same(), template);
+        HierarchyLocations::con(RELATION_TY_NAME_HL, I"RELATION_TY_Name", Translation::same(), template);
+        HierarchyLocations::con(RELATION_TY_OTOOADJECTIVE_HL, I"RELATION_TY_OToOAdjective", Translation::same(), template);
+        HierarchyLocations::con(RELATION_TY_OTOVADJECTIVE_HL, I"RELATION_TY_OToVAdjective", Translation::same(), template);
+        HierarchyLocations::con(RELATION_TY_SYMMETRICADJECTIVE_HL, I"RELATION_TY_SymmetricAdjective", Translation::same(), template);
+        HierarchyLocations::con(RELATION_TY_VTOOADJECTIVE_HL, I"RELATION_TY_VToOAdjective", Translation::same(), template);
+        HierarchyLocations::con(RELATIONTEST_HL, I"RelationTest", Translation::same(), template);
+        HierarchyLocations::con(RELFOLLOWVECTOR_HL, I"RelFollowVector", Translation::same(), template);
+        HierarchyLocations::con(RELS_EMPTY_HL, I"RELS_EMPTY", Translation::same(), template);
+        HierarchyLocations::con(RESPONSEVIAACTIVITY_HL, I"ResponseViaActivity", Translation::same(), template);
+        HierarchyLocations::con(RLANY_CAN_GET_X_HL, I"RLANY_CAN_GET_X", Translation::same(), template);
+        HierarchyLocations::con(RLANY_CAN_GET_Y_HL, I"RLANY_CAN_GET_Y", Translation::same(), template);
+        HierarchyLocations::con(RLANY_GET_X_HL, I"RLANY_GET_X", Translation::same(), template);
+        HierarchyLocations::con(RLIST_ALL_X_HL, I"RLIST_ALL_X", Translation::same(), template);
+        HierarchyLocations::con(RLIST_ALL_Y_HL, I"RLIST_ALL_Y", Translation::same(), template);
+        HierarchyLocations::con(RLNGETF_HL, I"RlnGetF", Translation::same(), template);
+        HierarchyLocations::con(ROUNDOFFTIME_HL, I"RoundOffTime", Translation::same(), template);
+        HierarchyLocations::con(ROUTINEFILTER_TT_HL, I"ROUTINE_FILTER_TT", Translation::same(), template);
+        HierarchyLocations::con(RR_STORAGE_HL, I"RR_STORAGE", Translation::same(), template);
+        HierarchyLocations::con(RTP_RELKINDVIOLATION_HL, I"RTP_RELKINDVIOLATION", Translation::same(), template);
+        HierarchyLocations::con(RTP_RELMINIMAL_HL, I"RTP_RELMINIMAL", Translation::same(), template);
+        HierarchyLocations::con(RULEBOOKFAILS_HL, I"RulebookFails", Translation::same(), template);
+        HierarchyLocations::con(RULEBOOKPARBREAK_HL, I"RulebookParBreak", Translation::same(), template);
+        HierarchyLocations::con(RULEBOOKSUCCEEDS_HL, I"RulebookSucceeds", Translation::same(), template);
+        HierarchyLocations::con(RUNTIMEPROBLEM_HL, I"RunTimeProblem", Translation::same(), template);
+        HierarchyLocations::con(SAY__N_HL, I"say__n", Translation::same(), template);
+        HierarchyLocations::con(SAY__P_HL, I"say__p", Translation::same(), template);
+        HierarchyLocations::con(SAY__PC_HL, I"say__pc", Translation::same(), template);
+        HierarchyLocations::con(SCENE_ENDED_HL, I"scene_ended", Translation::same(), template);
+        HierarchyLocations::con(SCENE_ENDINGS_HL, I"scene_endings", Translation::same(), template);
+        HierarchyLocations::con(SCENE_LATEST_ENDING_HL, I"scene_latest_ending", Translation::same(), template);
+        HierarchyLocations::con(SCENE_STARTED_HL, I"scene_started", Translation::same(), template);
+        HierarchyLocations::con(SCENE_STATUS_HL, I"scene_status", Translation::same(), template);
+        HierarchyLocations::con(SCOPE_STAGE_HL, I"scope_stage", Translation::same(), template);
+        HierarchyLocations::con(SCOPE_TT_HL, I"SCOPE_TT", Translation::same(), template);
+        HierarchyLocations::con(SECOND_HL, I"second", Translation::same(), template);
+        HierarchyLocations::con(SHORT_NAME_HL, I"short_name", Translation::same(), template);
+        HierarchyLocations::con(SIGNEDCOMPARE_HL, I"SignedCompare", Translation::same(), template);
+        HierarchyLocations::con(SPECIAL_WORD_HL, I"special_word", Translation::same(), template);
+        HierarchyLocations::con(SQUAREROOT_HL, I"SquareRoot", Translation::same(), template);
+        HierarchyLocations::con(STACKFRAMECREATE_HL, I"StackFrameCreate", Translation::same(), template);
+        HierarchyLocations::con(STORED_ACTION_TY_CURRENT_HL, I"STORED_ACTION_TY_Current", Translation::same(), template);
+        HierarchyLocations::con(STORED_ACTION_TY_TRY_HL, I"STORED_ACTION_TY_Try", Translation::same(), template);
+        HierarchyLocations::con(STORY_TENSE_HL, I"story_tense", Translation::same(), template);
+        HierarchyLocations::con(SUPPORTER_HL, I"supporter", Translation::same(), template);
+        HierarchyLocations::con(SUPPRESS_SCOPE_LOOPS_HL, I"suppress_scope_loops", Translation::same(), template);
+        HierarchyLocations::con(SUPPRESS_TEXT_SUBSTITUTION_HL, I"suppress_text_substitution", Translation::same(), template);
+        HierarchyLocations::con(TABLE_NOVALUE_HL, I"TABLE_NOVALUE", Translation::same(), template);
+        HierarchyLocations::con(TABLELOOKUPCORR_HL, I"TableLookUpCorr", Translation::same(), template);
+        HierarchyLocations::con(TABLELOOKUPENTRY_HL, I"TableLookUpEntry", Translation::same(), template);
+        HierarchyLocations::con(TESTACTIONBITMAP_HL, I"TestActionBitmap", Translation::same(), template);
+        HierarchyLocations::con(TESTACTIVITY_HL, I"TestActivity", Translation::same(), template);
+        HierarchyLocations::con(TESTREGIONALCONTAINMENT_HL, I"TestRegionalContainment", Translation::same(), template);
+        HierarchyLocations::con(TESTSCOPE_HL, I"TestScope", Translation::same(), template);
+        HierarchyLocations::con(TESTSTART_HL, I"TestStart", Translation::same(), template);
+        HierarchyLocations::con(TEXT_TY_COMPARE_HL, I"TEXT_TY_Compare", Translation::same(), template);
+        HierarchyLocations::con(TEXT_TY_EXPANDIFPERISHABLE_HL, I"TEXT_TY_ExpandIfPerishable", Translation::same(), template);
+        HierarchyLocations::con(TEXT_TY_SAY_HL, I"TEXT_TY_Say", Translation::same(), template);
+        HierarchyLocations::con(THE_TIME_HL, I"the_time", Translation::same(), template);
+        HierarchyLocations::con(THEEMPTYTABLE_HL, I"TheEmptyTable", Translation::same(), template);
+        HierarchyLocations::con(THEN1__WD_HL, I"THEN1__WD", Translation::same(), template);
+        HierarchyLocations::con(TIMESACTIONHASBEENHAPPENING_HL, I"TimesActionHasBeenHappening", Translation::same(), template);
+        HierarchyLocations::con(TIMESACTIONHASHAPPENED_HL, I"TimesActionHasHappened", Translation::same(), template);
+        HierarchyLocations::con(TRYACTION_HL, I"TryAction", Translation::same(), template);
+        HierarchyLocations::con(TRYGIVENOBJECT_HL, I"TryGivenObject", Translation::same(), template);
+        HierarchyLocations::con(TURNSACTIONHASBEENHAPPENING_HL, I"TurnsActionHasBeenHappening", Translation::same(), template);
+        HierarchyLocations::con(UNDERSTAND_AS_MISTAKE_NUMBER_HL, I"understand_as_mistake_number", Translation::same(), template);
+        HierarchyLocations::con(UNICODE_TEMP_HL, I"unicode_temp", Translation::same(), template);
+        HierarchyLocations::con(VTOORELROUTETO_HL, I"VtoORelRouteTo", Translation::same(), template);
+        HierarchyLocations::con(VTOVRELROUTETO_HL, I"VtoVRelRouteTo", Translation::same(), template);
+        HierarchyLocations::con(WHEN_SCENE_BEGINS_HL, I"WHEN_SCENE_BEGINS_RB", Translation::same(), template);
+        HierarchyLocations::con(WHEN_SCENE_ENDS_HL, I"WHEN_SCENE_ENDS_RB", Translation::same(), template);
+        HierarchyLocations::con(WN_HL, I"wn", Translation::same(), template);
+        HierarchyLocations::con(WORDADDRESS_HL, I"WordAddress", Translation::same(), template);
+        HierarchyLocations::con(WORDINPROPERTY_HL, I"WordInProperty", Translation::same(), template);
+        HierarchyLocations::con(WORDLENGTH_HL, I"WordLength", Translation::same(), template);
 

-

This code is used in §2.

+

This code is used in §1.

-

§3.

+

§2.

     enum MAX_HL
     enum MAX_HAP
 
-

§4.

+

§3.

@@ -1530,9 +1560,9 @@
 
 

-

The function Hierarchy::exotic_package is used in 27/hl (§1).

+

The function Hierarchy::exotic_package is used in 27/hl (§1, §2).

-

§5.

+

§4.

@@ -1569,7 +1599,7 @@
 
 

The function Hierarchy::post_process is used in 27/hl (§1).

-

§6.

+

§5.

@@ -1585,7 +1615,7 @@
         if (Str::len(name) == 0) internal_error("empty extern");
         inter_name *try = HierarchyLocations::find_by_name(name);
         if (try == NULL) {
-            HierarchyLocations::make(-1, name, Hierarchy::template());
+            HierarchyLocations::con(-1, name, Translation::same(), HierarchyLocations::this_package(Hierarchy::template()));
             try = HierarchyLocations::find_by_name(name);
         }
         return try;
@@ -1617,27 +1647,35 @@
     }
 
     package_request *Hierarchy::package(compilation_module *C, int hap_id) {
-        return HierarchyLocations::package(C, hap_id);
+        return HierarchyLocations::attach_new_package(C, NULL, hap_id);
     }
 
     package_request *Hierarchy::synoptic_package(int hap_id) {
-        return HierarchyLocations::synoptic_package(hap_id);
+        return HierarchyLocations::attach_new_package(NULL, NULL, hap_id);
     }
 
     package_request *Hierarchy::local_package(int hap_id) {
-        return HierarchyLocations::package(Modules::find(current_sentence), hap_id);
+        return HierarchyLocations::attach_new_package(Modules::find(current_sentence), NULL, hap_id);
     }
 
     package_request *Hierarchy::package_within(int hap_id, package_request *super) {
-        return HierarchyLocations::package_within(super, hap_id);
+        return HierarchyLocations::attach_new_package(NULL, super, hap_id);
     }
 
-    package_request *Hierarchy::package_in_package(int id, package_request *P) {
+    inter_name *Hierarchy::make_iname_in(int id, package_request *P) {
+        return HierarchyLocations::find_in_package(id, P, EMPTY_WORDING);
+    }
+
+    inter_name *Hierarchy::make_iname_with_memo(int id, package_request *P, wording W) {
+        return HierarchyLocations::find_in_package(id, P, W);
+    }
+
+    package_request *Hierarchy::make_package_in(int id, package_request *P) {
         return HierarchyLocations::package_in_package(id, P);
     }
 
     package_request *Hierarchy::home_for_weak_type_IDs(void) {
-        return Packaging::synoptic_resource(KINDS_SUBMODULE);
+        return home_for_weak_type_IDs.this_mundane_package;
     }
 
@@ -1653,7 +1691,7 @@

The function Hierarchy::resources is used in 27/ei (§3), 27/pc (§7).

-

The function Hierarchy::template is used in §2.48, 15/ep (§4), 27/ei (§3), 27/hl (§1).

+

The function Hierarchy::template is used in §1.48, 15/ep (§4), 27/ei (§3), 27/hl (§1).

The function Hierarchy::package is used in 5/nv (§16), 6/bp (§31), 15/pr (§27), 15/ma (§11.3), 22/ph (§11), 22/tp (§5).

@@ -1663,7 +1701,11 @@

The function Hierarchy::package_within is used in 17/rs (§5), 19/tc (§9), 22/pav (§7), 22/tp (§7).

-

The function Hierarchy::package_in_package is used in 21/ac (§6).

+

The function Hierarchy::make_iname_in is used in 6/rlt (§20, §20.3), 13/rsfk (§13.1.1), 17/rs (§5, §6.1), 19/tc (§9), 19/tb (§9), 21/rl (§9), 22/pav (§7), 26/lt (§3), 26/jl (§3), 26/ts (§9.1).

+ +

The function Hierarchy::make_iname_with_memo appears nowhere else.

+ +

The function Hierarchy::make_package_in is used in 21/ac (§6).

The function Hierarchy::home_for_weak_type_IDs appears nowhere else.

diff --git a/docs/core-module/27-in.html b/docs/core-module/27-in.html index 0bdc0f1ec..da84b9e60 100644 --- a/docs/core-module/27-in.html +++ b/docs/core-module/27-in.html @@ -338,11 +338,11 @@

The function InterNames::new_in_space is used in §4.

-

The function InterNames::one_off is used in 5/un (§1), 6/bp (§32), 6/rlt (§9, §9.13, §20, §20.3), 12/cdp (§5), 13/rsfk (§13.1.1, §15), 15/pr (§27), 15/ma (§11.3), 17/tl (§14.2), 17/rs (§5, §6.1), 19/tc (§9), 19/tb (§9), 20/eq (§10.1), 21/rl (§9, §19), 21/rl2 (§10, §14), 21/fao (§10), 21/ac (§8), 22/ph (§11), 22/pu (§6), 22/pav (§7, §9), 22/tp (§7), 24/ch (§3), 26/lt (§3), 26/jl (§3), 26/rt (§4), 26/ts (§9.1), 27/pc (§7, §7.1, §8), 27/hl (§1), 27/hr (§6).

+

The function InterNames::one_off is used in 5/un (§1), 6/bp (§32), 6/rlt (§9, §9.13), 12/cdp (§5), 13/rsfk (§15), 15/pr (§27), 15/ma (§11.3), 17/tl (§14.2), 20/eq (§10.1), 21/rl (§9, §19), 21/rl2 (§10, §14), 21/fao (§10), 21/ac (§8), 22/ph (§11), 22/pu (§6), 22/pav (§9), 22/tp (§7), 24/ch (§3), 26/lt (§3), 26/rt (§4), 27/pc (§7, §7.1, §8), 27/hl (§1), 27/hr (§5).

-

The function InterNames::attach_memo is used in §4, 5/un (§1), 5/nv (§16), 13/rsfk (§13.1.1), 15/pr (§27), 15/ep (§4), 15/vp (§3), 19/tb (§20), 21/fao (§10), 21/ac (§6).

+

The function InterNames::attach_memo is used in §4, 5/un (§1), 5/nv (§16), 13/rsfk (§13.1.1), 15/pr (§27), 15/ep (§4), 15/vp (§3), 19/tb (§20), 21/fao (§10), 21/ac (§6), 27/hl (§1).

-

The function InterNames::to_symbol is used in §5, 4/am (§6, §43), 5/lp (§19, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1), 5/un (§1), 5/ins (§14), 5/nv (§12), 6/bp (§32, §33), 6/rlt (§9, §9.13, §15, §15.1.2, §15.1.3, §15.2.1, §15.2.5.1, §15.2.6, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §20, §20.3, §29.5, §29.6), 6/nv (§17, §18.2), 12/dtd (§4, §7.1.2, §11, §17, §27), 12/cdp (§2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §5), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.11, §1.12), 13/rsfk (§5, §7, §9, §12, §13.1.1, §15, §19, §20, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6), 14/lv (§14.3, §14.4, §14.5), 14/cfs (§7), 15/pr (§21, §22.1, §27), 15/ma (§11.3), 17/tl (§7, §10.2.1, §13, §14.2), 17/ts (§5, §7, §8), 17/rs (§5, §6.1, §6.2, §7.2), 18/lc (§11), 19/tc (§8, §9), 19/tb (§9, §20), 20/eq (§10.1, §48), 21/rl (§9, §11.2, §22, §22.1), 21/rb (§24.1.3.1), 21/rl2 (§10, §14), 21/fao (§10), 21/sv (§3.2), 21/ac (§8, §14), 22/prcd (§10, §10.1.1.1), 22/pav (§7, §9, §9.2), 24/lv (§41), 24/ch (§4), 25/ci (§3.2.3.6), 25/ciac (§2), 25/cii (§3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8, §3.5.8.1), 25/cp (§6), 26/lt (§3), 26/jl (§3), 26/rt (§4, §4.1.2, §4.1.3, §4.1.4), 26/iti (§9), 26/ts (§9.1, §10, §12), 27/is (§32), 27/ei (§3, §4, §5), 27/pc (§8), 27/hl (§1), 27/hr (§6).

+

The function InterNames::to_symbol is used in §5, 4/am (§6, §43), 5/lp (§19, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1), 5/un (§1), 5/ins (§14), 5/nv (§12), 6/bp (§32, §33), 6/rlt (§9, §9.13, §15, §15.1.2, §15.1.3, §15.2.1, §15.2.5.1, §15.2.6, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §29.5, §29.6), 6/nv (§17, §18.2), 12/dtd (§4, §7.1.2, §11, §17, §27), 12/cdp (§2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §5), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.11, §1.12), 13/rsfk (§5, §7, §9, §12, §13.1.1, §15, §19, §20, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6), 14/lv (§14.3, §14.4, §14.5), 14/cfs (§7), 15/pr (§21, §22.1, §27), 15/ma (§11.3), 17/tl (§7, §10.2.1, §13, §14.2), 17/ts (§5, §7, §8), 17/rs (§6.1, §6.2, §7.2), 18/lc (§11), 19/tc (§8), 19/tb (§20), 20/eq (§10.1, §48), 21/rl (§9, §11.2, §22, §22.1), 21/rb (§24.1.3.1), 21/rl2 (§10, §14), 21/fao (§10), 21/sv (§3.2), 21/ac (§8, §14), 22/prcd (§10, §10.1.1.1), 22/pav (§9, §9.2), 24/lv (§41), 24/ch (§4), 25/ci (§3.2.3.6), 25/ciac (§2), 25/cii (§3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8, §3.5.8.1), 25/cp (§6), 26/rt (§4, §4.1.2, §4.1.3, §4.1.4), 26/iti (§9), 26/ts (§10, §12), 27/is (§32), 27/ei (§3, §4, §5), 27/pc (§8), 27/hl (§1), 27/hr (§5).

The function InterNames::to_text is used in 15/vp (§3).

@@ -599,7 +599,7 @@

The function InterNames::template_weak_ID_name appears nowhere else.

-

The function InterNames::translate is used in 5/un (§1), 13/rsfk (§26).

+

The function InterNames::translate is used in 5/un (§1), 13/rsfk (§26), 27/hl (§1).

§5.

diff --git a/docs/core-module/27-pc.html b/docs/core-module/27-pc.html index 2220e0eab..a0a584c37 100644 --- a/docs/core-module/27-pc.html +++ b/docs/core-module/27-pc.html @@ -64,21 +64,21 @@ struct inter_package *actual_package; struct package_request *parent_request; struct inter_reading_state write_position; - struct linked_list *counters; of subpackage_request_counter + struct linked_list *counters; of submodule_request_counter MEMORY_MANAGEMENT } package_request; - typedef struct subpackage_request_counter { + typedef struct submodule_request_counter { int counter_id; int counter_value; MEMORY_MANAGEMENT - } subpackage_request_counter; + } submodule_request_counter;

The structure package_request is accessed in 26/iti, 27/ei, 27/hl and here.

-

The structure subpackage_request_counter is private to this section.

+

The structure submodule_request_counter is private to this section.

§4.

@@ -112,7 +112,7 @@

-

The function Packaging::request is used in §7, §7.1, §8, 27/hl (§1, §2), 27/hr (§6).

+

The function Packaging::request is used in §7, §7.1, §8, 27/hl (§1, §2), 27/hr (§5).

The function Packaging::log is used in 1/cm (§5, §6.6).

@@ -155,9 +155,9 @@

The function Packaging::stateless is used in 15/epv (§2).

-

The function Packaging::home_of is used in 12/cdp (§5), 27/hl (§1), 27/hr (§4).

+

The function Packaging::home_of is used in 12/cdp (§5), 27/hl (§1), 27/hr (§3).

-

The function Packaging::enter_home_of is used in 6/bp (§42), 6/rlt (§14, §15.1, §20, §20.3), 6/nv (§18), 12/cdp (§2.1.1), 13/kak (§5), 13/rsfk (§16.2, §26), 15/pr (§27), 15/epv (§1.1.2), 17/tl (§14.1, §14.2), 17/ts (§11), 17/rs (§7.3), 18/lc (§12.1), 19/rsft (§1.1.1.1, §1.1.1.1.1, §1.2, §1.3), 21/rl2 (§14, §20), 21/fao (§10), 21/ac (§6, §8, §14), 22/cs (§8), 22/pav (§8.1), 22/tp2 (§4), 24/ch (§6, §8), 26/vm (§8), 26/uo (§21), 26/lt (§4.1), 26/jl (§6), 26/rt (§1), 26/iti (§10), 26/pl (§12), 26/ts (§10), 27/ei (§3, §4), 27/hr (§5).

+

The function Packaging::enter_home_of is used in 6/bp (§42), 6/rlt (§14, §15.1, §20, §20.3), 6/nv (§18), 12/cdp (§2.1.1), 13/kak (§5), 13/rsfk (§16.2, §26), 15/pr (§27), 15/epv (§1.1.2), 17/tl (§14.1, §14.2), 17/ts (§11), 17/rs (§7.3), 18/lc (§12.1), 19/rsft (§1.1.1.1, §1.1.1.1.1, §1.2, §1.3), 21/rl2 (§14, §20), 21/fao (§10), 21/ac (§6, §8, §14), 22/cs (§8), 22/pav (§8.1), 22/tp2 (§4), 24/ch (§6, §8), 26/vm (§8), 26/uo (§21), 26/lt (§4.1), 26/jl (§6), 26/rt (§1), 26/iti (§10), 26/pl (§12), 26/ts (§10), 27/ei (§3, §4), 27/hr (§4).

The function Packaging::enter_current_enclosure is used in 13/rsfk (§4), 17/tl (§16), 17/ts (§8.1), 18/lc (§11).

@@ -238,7 +238,7 @@

The function Packaging::enter is used in §5, 4/am (§34.2), 5/ins (§34), 5/nv (§16), 13/rsfk (§16.1, §26), 15/epv (§2), 16/ic (§10), 17/rs (§6.1, §7.1), 21/rl (§9), 21/rl2 (§20), 22/ph (§12), 27/ei (§3, §4), 27/hl (§1).

-

The function Packaging::exit is used in 5/ins (§34), 5/nv (§16), 6/bp (§42), 6/rlt (§14, §15.1, §20, §20.3), 6/nv (§18), 12/cdp (§2.1.1), 13/kak (§5), 13/rsfk (§4, §16.1, §16.2, §26), 15/pr (§27), 15/epv (§1.1.2, §2), 16/ic (§10), 17/tl (§14.1, §14.2, §16), 17/ts (§8.1, §11), 17/rs (§6.1, §7.1, §7.3), 18/lc (§11, §12.1), 19/rsft (§1.1.1.1, §1.1.1.1.1, §1.2, §1.3), 21/rl (§9), 21/rl2 (§14, §20), 21/fao (§10), 21/ac (§6, §8, §14), 22/cs (§8), 22/ph (§12), 22/pav (§8.1), 22/tp2 (§4), 24/ch (§6, §8), 26/vm (§8), 26/uo (§21), 26/lt (§4.1), 26/jl (§6), 26/rt (§4), 26/iti (§10), 26/pl (§12), 26/ts (§10), 27/ei (§3, §4), 27/hl (§1), 27/hr (§5).

+

The function Packaging::exit is used in 5/ins (§34), 5/nv (§16), 6/bp (§42), 6/rlt (§14, §15.1, §20, §20.3), 6/nv (§18), 12/cdp (§2.1.1), 13/kak (§5), 13/rsfk (§4, §16.1, §16.2, §26), 15/pr (§27), 15/epv (§1.1.2, §2), 16/ic (§10), 17/tl (§14.1, §14.2, §16), 17/ts (§8.1, §11), 17/rs (§6.1, §7.1, §7.3), 18/lc (§11, §12.1), 19/rsft (§1.1.1.1, §1.1.1.1.1, §1.2, §1.3), 21/rl (§9), 21/rl2 (§14, §20), 21/fao (§10), 21/ac (§6, §8, §14), 22/cs (§8), 22/ph (§12), 22/pav (§8.1), 22/tp2 (§4), 24/ch (§6, §8), 26/vm (§8), 26/uo (§21), 26/lt (§4.1), 26/jl (§6), 26/rt (§4), 26/iti (§10), 26/pl (§12), 26/ts (§10), 27/ei (§3, §4), 27/hl (§1), 27/hr (§4).

The function Packaging::incarnate is used in 21/rl (§9), 27/ei (§3).

@@ -266,28 +266,46 @@ return synoptic_pr; } - typedef struct subpackage_requests { - struct package_request *subs[MAX_SUBMODULE]; - } subpackage_requests; + typedef struct submodule_identity { + struct text_stream *submodule_name; + MEMORY_MANAGEMENT + } submodule_identity; - package_request *Packaging::resources_for_new_submodule(text_stream *name, subpackage_requests *SR) { + submodule_identity *Packaging::register_submodule(text_stream *name) { + submodule_identity *sid = CREATE(submodule_identity); + sid->submodule_name = Str::duplicate(name); + return sid; + } + + + typedef struct submodule_request { + struct submodule_identity *which_submodule; + struct package_request *where_found; + MEMORY_MANAGEMENT + } submodule_request; + + typedef struct submodule_requests { + struct linked_list *submodules; of submodule_identity + } submodule_requests; + + package_request *Packaging::resources_for_new_submodule(text_stream *name, submodule_requests *SR) { inter_name *package_iname = InterNames::one_off(name, Hierarchy::resources()); package_request *P = Packaging::request(package_iname, Hierarchy::resources(), module_ptype); - Packaging::initialise_subpackages(SR); + Packaging::initialise_submodules(SR); return P; } - void Packaging::initialise_subpackages(subpackage_requests *SR) { - for (int i=0; i<MAX_SUBMODULE; i++) SR->subs[i] = NULL; + void Packaging::initialise_submodules(submodule_requests *SR) { + SR->submodules = NEW_LINKED_LIST(submodule_request); } int generic_subpackages_initialised = FALSE; - subpackage_requests generic_subpackages; + submodule_requests generic_subpackages; int synoptic_subpackages_initialised = FALSE; - subpackage_requests synoptic_subpackages; + submodule_requests synoptic_subpackages; - package_request *Packaging::request_resource(compilation_module *C, int ix) { - subpackage_requests *SR = NULL; + package_request *Packaging::request_resource(compilation_module *C, submodule_identity *sid) { + submodule_requests *SR = NULL; package_request *parent = NULL; if (C) { SR = Modules::subpackages(C); @@ -295,7 +313,7 @@ } else { if (generic_subpackages_initialised == FALSE) { generic_subpackages_initialised = TRUE; - Packaging::initialise_subpackages(&generic_subpackages); + Packaging::initialise_submodules(&generic_subpackages); } SR = &generic_subpackages; parent = Packaging::request_generic(); @@ -303,26 +321,26 @@ <Handle the resource request 7.1>; } - package_request *Packaging::local_resource(int ix) { - return Packaging::request_resource(Modules::find(current_sentence), ix); + package_request *Packaging::local_resource(submodule_identity *sid) { + return Packaging::request_resource(Modules::find(current_sentence), sid); } - package_request *Packaging::generic_resource(int ix) { + package_request *Packaging::generic_resource(submodule_identity *sid) { if (generic_subpackages_initialised == FALSE) { generic_subpackages_initialised = TRUE; - Packaging::initialise_subpackages(&generic_subpackages); + Packaging::initialise_submodules(&generic_subpackages); } - subpackage_requests *SR = &generic_subpackages; + submodule_requests *SR = &generic_subpackages; package_request *parent = Packaging::request_generic(); <Handle the resource request 7.1>; } - package_request *Packaging::synoptic_resource(int ix) { + package_request *Packaging::synoptic_resource(submodule_identity *sid) { if (synoptic_subpackages_initialised == FALSE) { synoptic_subpackages_initialised = TRUE; - Packaging::initialise_subpackages(&synoptic_subpackages); + Packaging::initialise_submodules(&synoptic_subpackages); } - subpackage_requests *SR = &synoptic_subpackages; + submodule_requests *SR = &synoptic_subpackages; package_request *parent = Packaging::request_synoptic(); <Handle the resource request 7.1>; } @@ -334,19 +352,25 @@

The function Packaging::request_synoptic appears nowhere else.

+

The function Packaging::register_submodule is used in 27/hr (§1.2, §1.4, §1.6, §1.8, §1.10, §1.12, §1.14, §1.16, §1.18, §1.20, §1.22, §1.24, §1.26, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.44).

+

The function Packaging::resources_for_new_submodule is used in 27/cm (§2).

-

The function Packaging::initialise_subpackages appears nowhere else.

+

The function Packaging::initialise_submodules appears nowhere else.

The function Packaging::request_resource is used in 27/hl (§2).

The function Packaging::local_resource appears nowhere else.

-

The function Packaging::generic_resource is used in 27/hr (§2.2, §2.4, §2.14, §2.28, §2.36, §2.38).

+

The function Packaging::generic_resource is used in 27/hl (§1).

-

The function Packaging::synoptic_resource is used in 27/hl (§2), 27/hr (§2.2, §2.4, §2.6, §2.10, §2.12, §2.18, §2.22, §2.26, §2.28, §2.34, §2.36, §2.38, §2.40, §2.42, §6).

+

The function Packaging::synoptic_resource is used in 27/hl (§1).

-

The structure subpackage_requests is private to this section.

+

The structure submodule_identity is private to this section.

+ +

The structure submodule_request is private to this section.

+ +

The structure submodule_requests is private to this section.

§7.1. <Handle the resource request 7.1> = @@ -354,12 +378,16 @@

-        if (SR->subs[ix] == NULL) {
-            text_stream *N = Hierarchy::submodule_name(ix);
-            inter_name *iname = InterNames::one_off(N, parent);
-            SR->subs[ix] = Packaging::request(iname, parent, plain_ptype);
-        }
-        return SR->subs[ix];
+        submodule_request *sr;
+        LOOP_OVER_LINKED_LIST(sr, submodule_request, SR->submodules)
+            if (sid == sr->which_submodule)
+                return sr->where_found;
+        inter_name *iname = InterNames::one_off(sid->submodule_name, parent);
+        sr = CREATE(submodule_request);
+        sr->which_submodule = sid;
+        sr->where_found = Packaging::request(iname, parent, plain_ptype);
+        ADD_TO_LINKED_LIST(sr, submodule_request, SR->submodules);
+        return sr->where_found;
 

@@ -393,19 +421,19 @@ if (R == NULL) internal_error("no request"); if ((what_for < 0) || (what_for >= no_pr_counters_registered)) internal_error("out of range"); if (R->counters == NULL) - R->counters = NEW_LINKED_LIST(subpackage_request_counter); + R->counters = NEW_LINKED_LIST(submodule_request_counter); int N = -1; - subpackage_request_counter *src; - LOOP_OVER_LINKED_LIST(src, subpackage_request_counter, R->counters) + submodule_request_counter *src; + LOOP_OVER_LINKED_LIST(src, submodule_request_counter, R->counters) if (src->counter_id == what_for) { N = ++(src->counter_value); break; } if (N < 0) { - subpackage_request_counter *src = CREATE(subpackage_request_counter); + submodule_request_counter *src = CREATE(submodule_request_counter); src->counter_id = what_for; src->counter_value = 1; N = 1; - ADD_TO_LINKED_LIST(src, subpackage_request_counter, R->counters); + ADD_TO_LINKED_LIST(src, submodule_request_counter, R->counters); } TEMPORARY_TEXT(P); WRITE_TO(P, "%S_%d", pr_counter_names[what_for], N); @@ -466,13 +494,13 @@

-

The function Packaging::register_counter is used in 27/hl (§2), 27/hr (§2).

+

The function Packaging::register_counter is used in 27/hl (§2), 27/hr (§1).

-

The function Packaging::register_ptype is used in 27/hr (§2.4, §2.6, §2.8, §2.12, §2.14, §2.16, §2.20, §2.22, §2.24, §2.28, §2.30, §2.32, §2.34, §2.36, §2.38, §2.40, §2.42, §2.44).

+

The function Packaging::register_ptype is used in 27/hl (§3).

The function Packaging::supply_iname is used in 4/am (§6), 6/rlt (§15.1.2), 12/dtd (§4), 13/rsfk (§19), 17/tl (§7, §10.2.1, §14.2), 17/ts (§5), 18/lc (§11), 27/ei (§4), 27/hl (§2).

-

The function Packaging::function is used in 6/bp (§32), 6/rlt (§9, §9.13), 12/dtd (§4), 13/rsfk (§15), 15/ma (§11.3), 17/tl (§14.2), 17/ts (§5), 17/rs (§6.1), 20/eq (§10.1), 21/rl (§19), 21/rl2 (§10, §14), 21/ac (§8), 22/ph (§11), 22/pu (§6), 22/pav (§9), 22/tp (§7), 24/ch (§3), 26/lt (§3), 27/hl (§1).

+

The function Packaging::function is used in 6/bp (§32), 6/rlt (§9, §9.13), 12/dtd (§4), 13/rsfk (§15), 15/ma (§11.3), 17/tl (§14.2), 17/ts (§5), 20/eq (§10.1), 21/rl (§19), 21/rl2 (§10, §14), 21/ac (§8), 22/ph (§11), 22/pu (§6), 22/pav (§9), 22/tp (§7), 24/ch (§3), 26/lt (§3), 27/hl (§1).

The function Packaging::function_text is used in 21/rl (§9), 27/hl (§1).

@@ -485,7 +513,7 @@

The function Packaging::houseed_in_function is used in 26/rt (§4), 27/ei (§4).


-
+
diff --git a/docs/core-module/27-tr.html b/docs/core-module/27-tr.html new file mode 100644 index 000000000..54478db30 --- /dev/null +++ b/docs/core-module/27-tr.html @@ -0,0 +1,67 @@ + + + + 27/pc + + + + + + + +

§1.

+ + +
+    typedef struct name_translation {
+        struct text_stream *translate_to;
+        int then_make_unique;
+    } name_translation;
+
+    name_translation Translation::same(void) {
+        name_translation nt;
+        nt.translate_to = NULL;
+        nt.then_make_unique = FALSE;
+        return nt;
+    }
+
+    name_translation Translation::uniqued(void) {
+        name_translation nt;
+        nt.translate_to = NULL;
+        nt.then_make_unique = TRUE;
+        return nt;
+    }
+
+    name_translation Translation::to(text_stream *S) {
+        name_translation nt;
+        nt.translate_to = S;
+        nt.then_make_unique = FALSE;
+        return nt;
+    }
+
+    name_translation Translation::to_uniqued(text_stream *S) {
+        name_translation nt;
+        nt.translate_to = S;
+        nt.then_make_unique = TRUE;
+        return nt;
+    }
+
+ +

+ +

The function Translation::same is used in 27/hl (§1), 27/hr (§1.2, §1.4, §1.6, §1.10, §1.12, §1.14, §1.22, §1.26, §1.28, §1.34, §1.36, §1.38, §1.40, §1.42, §1.46, §1.48, §5).

+ +

The function Translation::uniqued is used in 27/hr (§1.8, §1.20, §1.22, §1.28, §1.30, §1.32, §1.36, §1.40, §1.42).

+ +

The function Translation::to is used in 27/hr (§1.4, §1.10, §1.12, §1.18, §1.22, §1.26, §1.28, §1.36, §1.38, §1.40, §1.42, §1.46).

+ +

The function Translation::to_uniqued appears nowhere else.

+ +

The structure name_translation is accessed in 27/hl and here.

+ +
+
+ + + + diff --git a/docs/core-module/5-nv.html b/docs/core-module/5-nv.html index be2a2b304..59da0b902 100644 --- a/docs/core-module/5-nv.html +++ b/docs/core-module/5-nv.html @@ -628,7 +628,7 @@ there's very little to say.

-

The function NonlocalVariables::iname is used in §12, 26/rt (§4.1.2, §4.1.4), 26/iti (§9), 27/hr (§4).

+

The function NonlocalVariables::iname is used in §12, 26/rt (§4.1.2, §4.1.4), 26/iti (§9), 27/hr (§3).

The function NonlocalVariables::SUBJ_compile_all is used in 16/is (§30).

diff --git a/docs/core-module/6-rlt.html b/docs/core-module/6-rlt.html index 6c3cbecb1..8f80a7e99 100644 --- a/docs/core-module/6-rlt.html +++ b/docs/core-module/6-rlt.html @@ -2459,8 +2459,7 @@ logical properties of the two terms of the BP being defined. <Allocate a zeroed-out memory cache for relations with fast route-finding 20.3>; package_request *P = BinaryPredicates::package(bp); - bp->v2v_bitmap_iname = InterNames::one_off(I"bitmap", P); - Inter::Symbols::set_flag(InterNames::to_symbol(bp->v2v_bitmap_iname), MAKE_NAME_UNIQUE); + bp->v2v_bitmap_iname = Hierarchy::make_iname_in(BITMAP_HL, P); packaging_state save = Packaging::enter_home_of(bp->v2v_bitmap_iname); Emit::named_array_begin(bp->v2v_bitmap_iname, K_value); <Compile header information in the V-to-V structure 20.2>; @@ -2575,8 +2574,7 @@ logical properties of the two terms of the BP being defined.
             package_request *P = BinaryPredicates::package(bp);
-            inter_name *iname = InterNames::one_off(I"route_cache", P);
-            Inter::Symbols::set_flag(InterNames::to_symbol(iname), MAKE_NAME_UNIQUE);
+            inter_name *iname = Hierarchy::make_iname_in(ROUTE_CACHE_HL, P);
             packaging_state save = Packaging::enter_home_of(iname);
             kind *left_kind = BinaryPredicates::term_kind(bp, 0);
             kind *right_kind = BinaryPredicates::term_kind(bp, 1);
diff --git a/docs/core-module/index.html b/docs/core-module/index.html
index f680e5661..344ad9fe7 100644
--- a/docs/core-module/index.html
+++ b/docs/core-module/index.html
@@ -819,6 +819,10 @@
 						

Packaging -

+
  • +

    Translation - +

    +
  • Hierarchy Locations -

    diff --git a/docs/core-test/1-pc.html b/docs/core-test/1-pc.html index dfc3d9808..aa2cfdf78 100644 --- a/docs/core-test/1-pc.html +++ b/docs/core-test/1-pc.html @@ -36,7 +36,7 @@ but on others it's compiled into the body of an application. So:

    -

    The function main is used in 2/pt (§52), 2/pl2 (§3.1), 2/pck (§2), 3/rst (§6), 4/am (§26.1), 8/ef (§26), 8/ed2 (§3.2), 10/varc (§14), 19/tb (§27, §27.1, §27.1.3, §29), 21/rl2 (§23), 26/uo (§11.1), 27/hr (§6), 2/lnk (§1), 2/res (§1), 3/cg (§1), 2/hf (§6).

    +

    The function main is used in 2/pt (§52), 2/pl2 (§3.1), 2/pck (§2), 3/rst (§6), 4/am (§26.1), 8/ef (§26), 8/ed2 (§3.2), 10/varc (§14), 19/tb (§27, §27.1, §27.1.3, §29), 21/rl2 (§23), 26/uo (§11.1), 27/hr (§5), 2/lnk (§1), 2/res (§1), 3/cg (§1), 2/hf (§6).

    §3. As a matter of policy, no module is allowed to start or stop the foundation module, not even the mighty core; so we take care of that with one more diff --git a/docs/if-module/4-act.html b/docs/if-module/4-act.html index 2457a5c85..62c8310e3 100644 --- a/docs/if-module/4-act.html +++ b/docs/if-module/4-act.html @@ -369,7 +369,7 @@ make that explicit: for instance, "taking" becomes "the taking action". Feeds::feed_text_expanding_strings(L"check"); Feeds::feed_wording(an->present_name); wording W = Feeds::end(id); - package_request *CR = Hierarchy::package_in_package(CHECK_RB_HL, an->an_package); + package_request *CR = Hierarchy::make_package_in(CHECK_RB_HL, an->an_package); an->check_rules = Rulebooks::new_automatic(W, K_action_name, NO_OUTCOME, TRUE, FALSE, FALSE, CR); @@ -379,7 +379,7 @@ make that explicit: for instance, "taking" becomes "the taking action". Feeds::feed_text_expanding_strings(L"carry out"); Feeds::feed_wording(an->present_name); W = Feeds::end(id); - package_request *OR = Hierarchy::package_in_package(CARRY_OUT_RB_HL, an->an_package); + package_request *OR = Hierarchy::make_package_in(CARRY_OUT_RB_HL, an->an_package); an->carry_out_rules = Rulebooks::new_automatic(W, K_action_name, NO_OUTCOME, TRUE, FALSE, FALSE, OR); @@ -389,7 +389,7 @@ make that explicit: for instance, "taking" becomes "the taking action". Feeds::feed_text_expanding_strings(L"report"); Feeds::feed_wording(an->present_name); W = Feeds::end(id); - package_request *RR = Hierarchy::package_in_package(REPORT_RB_HL, an->an_package); + package_request *RR = Hierarchy::make_package_in(REPORT_RB_HL, an->an_package); an->report_rules = Rulebooks::new_automatic(W, K_action_name, NO_OUTCOME, TRUE, FALSE, FALSE, RR); diff --git a/docs/inform7/1-mn.html b/docs/inform7/1-mn.html index 60ac78067..98b896fa6 100644 --- a/docs/inform7/1-mn.html +++ b/docs/inform7/1-mn.html @@ -43,7 +43,7 @@ when they want I7 to run.

    -

    The function main is used in 2/pt (§52), 2/pl2 (§3.1), 2/pck (§2), 3/rst (§6), 4/am (§26.1), 8/ef (§26), 8/ed2 (§3.2), 10/varc (§14), 19/tb (§27, §27.1, §27.1.3, §29), 21/rl2 (§23), 26/uo (§11.1), 27/hr (§6), 2/lnk (§1), 2/res (§1), 3/cg (§1), 3/sm (§36, §36.1, §38), 3/em2 (§24), 4/ap (§2), 2/hf (§6).

    +

    The function main is used in 2/pt (§52), 2/pl2 (§3.1), 2/pck (§2), 3/rst (§6), 4/am (§26.1), 8/ef (§26), 8/ed2 (§3.2), 10/varc (§14), 19/tb (§27, §27.1, §27.1.3, §29), 21/rl2 (§23), 26/uo (§11.1), 27/hr (§5), 2/lnk (§1), 2/res (§1), 3/cg (§1), 3/sm (§36, §36.1, §38), 3/em2 (§24), 4/ap (§2), 2/hf (§6).

    §3. Either way, that brings us here. All our modules have to be started up and shut down, so we take care of that with one more intermediary. These modules diff --git a/docs/kinds-module/2-uk.html b/docs/kinds-module/2-uk.html index e4c56ab4b..53a8d94cc 100644 --- a/docs/kinds-module/2-uk.html +++ b/docs/kinds-module/2-uk.html @@ -745,36 +745,21 @@ in some human-readable format. if (K == NULL) internal_error("null kind has no inc routine"); if (K->construct->inc_iname) return K->construct->inc_iname; package_request *R = Kinds::RunTime::package(K); - K->construct->inc_iname = - Packaging::function( - InterNames::one_off(I"increment_fn", R), - R, - NULL); - Inter::Symbols::set_flag(InterNames::to_symbol(K->construct->inc_iname), MAKE_NAME_UNIQUE); + K->construct->inc_iname = Hierarchy::make_iname_in(DECREMENT_FN_HL, R); return K->construct->inc_iname; } inter_name *Kinds::Behaviour::get_dec_iname(kind *K) { if (K == NULL) internal_error("null kind has no dec routine"); if (K->construct->dec_iname) return K->construct->dec_iname; package_request *R = Kinds::RunTime::package(K); - K->construct->dec_iname = - Packaging::function( - InterNames::one_off(I"decrement_fn", R), - R, - NULL); - Inter::Symbols::set_flag(InterNames::to_symbol(K->construct->dec_iname), MAKE_NAME_UNIQUE); + K->construct->dec_iname = Hierarchy::make_iname_in(INCREMENT_FN_HL, R); return K->construct->dec_iname; } inter_name *Kinds::Behaviour::get_ranger_iname(kind *K) { if (K == NULL) internal_error("null kind has no inc routine"); if (K->construct->ranger_iname) return K->construct->ranger_iname; package_request *R = Kinds::RunTime::package(K); - K->construct->ranger_iname = - Packaging::function( - InterNames::one_off(I"ranger_fn", R), - R, - NULL); - Inter::Symbols::set_flag(InterNames::to_symbol(K->construct->ranger_iname), MAKE_NAME_UNIQUE); + K->construct->ranger_iname = Hierarchy::make_iname_in(RANGER_FN_HL, R); return K->construct->ranger_iname; } inter_name *Kinds::Behaviour::get_name_of_printing_rule_ACTIONS(kind *K) { diff --git a/docs/linguistics-module/3-adj.html b/docs/linguistics-module/3-adj.html index 997dd86d4..57c067b4f 100644 --- a/docs/linguistics-module/3-adj.html +++ b/docs/linguistics-module/3-adj.html @@ -102,8 +102,7 @@ distinct from its meaning, and this is it. #endif #ifdef CORE_MODULE aph->aph_package = Hierarchy::package(Modules::current(), ADJECTIVES_HAP); - aph->aph_iname = InterNames::one_off(I"adjective", aph->aph_package); - Inter::Symbols::set_flag(InterNames::to_symbol(aph->aph_iname), MAKE_NAME_UNIQUE); + aph->aph_iname = Hierarchy::make_iname_in(ADJECTIVE_HL, aph->aph_package); #endif if ((nl == NULL) && (Wordings::nonempty(W))) { #ifdef ADJECTIVE_NAME_VETTING diff --git a/docs/multimedia-module/2-ef.html b/docs/multimedia-module/2-ef.html index c6305e3f6..77af0ab13 100644 --- a/docs/multimedia-module/2-ef.html +++ b/docs/multimedia-module/2-ef.html @@ -331,12 +331,8 @@ letters or digits, with the first being a letter. exf->IFID_of_owner = Str::duplicate(ifid_of_file); package_request *P = Hierarchy::local_package(EXTERNAL_FILES_HAP); - exf->exf_iname = InterNames::one_off(I"file", P); - InterNames::attach_memo(exf->exf_iname, exf->name); - Inter::Symbols::set_flag(InterNames::to_symbol(exf->exf_iname), MAKE_NAME_UNIQUE); - exf->IFID_array_iname = InterNames::one_off(I"ifid", P); - InterNames::attach_memo(exf->IFID_array_iname, exf->name); - Inter::Symbols::set_flag(InterNames::to_symbol(exf->IFID_array_iname), MAKE_NAME_UNIQUE); + exf->exf_iname = Hierarchy::make_iname_with_memo(FILE_HL, P, exf->name); + exf->IFID_array_iname = Hierarchy::make_iname_with_memo(IFID_HL, P, exf->name); LOGIF(FIGURE_CREATIONS, "Created external file <%W> = filename '%N'\n", F, exf->unextended_filename); diff --git a/inform7/core-module/Chapter 1/Core Module.w b/inform7/core-module/Chapter 1/Core Module.w index c7b15c2f7..7a5286194 100644 --- a/inform7/core-module/Chapter 1/Core Module.w +++ b/inform7/core-module/Chapter 1/Core Module.w @@ -110,7 +110,9 @@ We need to itemise the structures we'll want to allocate: @e package_request_MT @e named_resource_location_MT @e hierarchy_attachment_point_MT -@e subpackage_request_counter_MT +@e submodule_request_counter_MT +@e submodule_identity_MT +@e submodule_request_MT @ Deep breath, then: the following macros define several hundred functions. @@ -193,7 +195,9 @@ ALLOCATE_INDIVIDUALLY(inter_schema_token) ALLOCATE_INDIVIDUALLY(package_request) ALLOCATE_INDIVIDUALLY(named_resource_location) ALLOCATE_INDIVIDUALLY(hierarchy_attachment_point) -ALLOCATE_INDIVIDUALLY(subpackage_request_counter) +ALLOCATE_INDIVIDUALLY(submodule_request_counter) +ALLOCATE_INDIVIDUALLY(submodule_identity) +ALLOCATE_INDIVIDUALLY(submodule_request) @ So much for the managed structures: now for the unmanaged structures. diff --git a/inform7/core-module/Chapter 13/Runtime Support for Kinds.w b/inform7/core-module/Chapter 13/Runtime Support for Kinds.w index 9fac9727c..afd8d9a73 100644 --- a/inform7/core-module/Chapter 13/Runtime Support for Kinds.w +++ b/inform7/core-module/Chapter 13/Runtime Support for Kinds.w @@ -587,8 +587,7 @@ compile under Inform 6. DISCARD_TEXT(TEMP); InterNames::attach_memo(rks->rks_iname, W); InterNames::to_symbol(rks->rks_iname); - rks->rks_dv_iname = InterNames::one_off(I"default_value", PR); - Inter::Symbols::set_flag(InterNames::to_symbol(rks->rks_dv_iname), MAKE_NAME_UNIQUE); + rks->rks_dv_iname = Hierarchy::make_iname_in(DEFAULT_VALUE_HL, PR); @ It's convenient to combine this system with one which constructs default values for kinds, since both involve tracking constructions uniquely. diff --git a/inform7/core-module/Chapter 17/Responses.w b/inform7/core-module/Chapter 17/Responses.w index c1a30d370..8836aeecd 100644 --- a/inform7/core-module/Chapter 17/Responses.w +++ b/inform7/core-module/Chapter 17/Responses.w @@ -72,10 +72,8 @@ response_message *Strings::response_cue(value_holster *VH, rule *owner, int mark resp->via_I6 = via_I6; resp->via_I6_routine_compiled = FALSE; resp->resp_package = Hierarchy::package_within(RESPONSES_HAP, Rules::package(resp->responding_rule)); - resp->resp_iname = InterNames::one_off(I"launcher", resp->resp_package); - Inter::Symbols::set_flag(InterNames::to_symbol(resp->resp_iname), MAKE_NAME_UNIQUE); - resp->constant_iname = InterNames::one_off(I"as_constant", resp->resp_package); - Inter::Symbols::set_flag(InterNames::to_symbol(resp->constant_iname), MAKE_NAME_UNIQUE); + resp->resp_iname = Hierarchy::make_iname_in(AS_BLOCK_CONSTANT_HL, resp->resp_package); + resp->constant_iname = Hierarchy::make_iname_in(AS_CONSTANT_HL, resp->resp_package); if (VH) { if (Holsters::data_acceptable(VH)) { Emit::val_iname(K_value, Strings::response_launcher_iname(resp)); @@ -107,9 +105,7 @@ a call to an activity based on that value: @ = package_request *R = resp->resp_package; - inter_name *launcher = - Packaging::function(InterNames::one_off(I"launcher_fn", R), R, NULL); - Inter::Symbols::set_flag(InterNames::to_symbol(launcher), MAKE_NAME_UNIQUE); + inter_name *launcher = Hierarchy::make_iname_in(LAUNCHER_HL, R); packaging_state save = Routines::begin(launcher); diff --git a/inform7/core-module/Chapter 19/Table Columns.w b/inform7/core-module/Chapter 19/Table Columns.w index b108dccd7..849f2aebc 100644 --- a/inform7/core-module/Chapter 19/Table Columns.w +++ b/inform7/core-module/Chapter 19/Table Columns.w @@ -205,9 +205,7 @@ table_column_usage Tables::Columns::add_to_table(wording W, table *t) { tcu.observed_kind_cell = NULL; package_request *R = Hierarchy::package_within(TABLE_COLUMNS_HAP, t->table_package); - - tcu.tcu_iname = InterNames::one_off(I"column_data", R); - Inter::Symbols::set_flag(InterNames::to_symbol(tcu.tcu_iname), MAKE_NAME_UNIQUE); + tcu.tcu_iname = Hierarchy::make_iname_in(COLUMN_DATA_HL, R); return tcu; } diff --git a/inform7/core-module/Chapter 19/Tables.w b/inform7/core-module/Chapter 19/Tables.w index dc55263a6..8a702d169 100644 --- a/inform7/core-module/Chapter 19/Tables.w +++ b/inform7/core-module/Chapter 19/Tables.w @@ -142,8 +142,7 @@ table *Tables::new_table_structure(void) { t->amendment_of = NULL; t->has_been_amended = FALSE; t->table_package = Hierarchy::local_package(TABLES_HAP); - t->table_identifier = InterNames::one_off(I"data", t->table_package); - Inter::Symbols::set_flag(InterNames::to_symbol(t->table_identifier), MAKE_NAME_UNIQUE); + t->table_identifier = Hierarchy::make_iname_in(TABLE_DATA_HL, t->table_package); t->approximate_array_space_needed = 0; t->disable_block_constant_correction = FALSE; t->no_columns = 0; diff --git a/inform7/core-module/Chapter 21/Activities.w b/inform7/core-module/Chapter 21/Activities.w index ff90a5dab..7c30b2c4e 100644 --- a/inform7/core-module/Chapter 21/Activities.w +++ b/inform7/core-module/Chapter 21/Activities.w @@ -222,7 +222,7 @@ activity *Activities::new(kind *creation_kind, wording W) { Feeds::feed_text_expanding_strings(L"before"); Feeds::feed_wording(av->name); wording SW = Feeds::end(id); - package_request *BR = Hierarchy::package_in_package(BEFORE_RB_HL, av->av_package); + package_request *BR = Hierarchy::make_package_in(BEFORE_RB_HL, av->av_package); av->before_rules = Rulebooks::new_automatic(SW, av->activity_on_what_kind, NO_OUTCOME, FALSE, future_action_flag, TRUE, BR); @@ -230,7 +230,7 @@ activity *Activities::new(kind *creation_kind, wording W) { Feeds::feed_text_expanding_strings(L"for"); Feeds::feed_wording(av->name); SW = Feeds::end(id); - package_request *FR = Hierarchy::package_in_package(FOR_RB_HL, av->av_package); + package_request *FR = Hierarchy::make_package_in(FOR_RB_HL, av->av_package); av->for_rules = Rulebooks::new_automatic(SW, av->activity_on_what_kind, SUCCESS_OUTCOME, FALSE, future_action_flag, TRUE, FR); @@ -238,7 +238,7 @@ activity *Activities::new(kind *creation_kind, wording W) { Feeds::feed_text_expanding_strings(L"after"); Feeds::feed_wording(av->name); SW = Feeds::end(id); - package_request *AR = Hierarchy::package_in_package(AFTER_RB_HL, av->av_package); + package_request *AR = Hierarchy::make_package_in(AFTER_RB_HL, av->av_package); av->after_rules = Rulebooks::new_automatic(SW, av->activity_on_what_kind, NO_OUTCOME, FALSE, future_action_flag, TRUE, AR); diff --git a/inform7/core-module/Chapter 21/Rules.w b/inform7/core-module/Chapter 21/Rules.w index 0ba023556..1cb5f59cd 100644 --- a/inform7/core-module/Chapter 21/Rules.w +++ b/inform7/core-module/Chapter 21/Rules.w @@ -203,8 +203,7 @@ void Rules::set_I7_definition(rule *R, phrase *ph) { void Rules::set_I6_definition(rule *R, wchar_t *identifier) { TEMPORARY_TEXT(XT); WRITE_TO(XT, "%w", identifier); - R->rule_extern_iname = InterNames::one_off(I"exterior_rule", R->rule_package); - Inter::Symbols::set_flag(InterNames::to_symbol(R->rule_extern_iname), MAKE_NAME_UNIQUE); + R->rule_extern_iname = Hierarchy::make_iname_in(EXTERIOR_RULE_HL, R->rule_package); inter_name *xiname = Hierarchy::find_by_name(XT); packaging_state save = Packaging::enter(R->rule_package); diff --git a/inform7/core-module/Chapter 22/Phrases as Values.w b/inform7/core-module/Chapter 22/Phrases as Values.w index bc5bed1a3..e2a9ebf26 100644 --- a/inform7/core-module/Chapter 22/Phrases as Values.w +++ b/inform7/core-module/Chapter 22/Phrases as Values.w @@ -105,9 +105,8 @@ inter_name *Phrases::Constants::iname(constant_phrase *cphr) { if (cphr->cphr_iname == NULL) { phrase *ph = Phrases::Constants::as_phrase(cphr); if (ph == NULL) internal_error("cannot reconstruct phrase from cphr"); - package_request *closure_package = Hierarchy::package_within(CLOSURES_HAP, ph->requests_package); - cphr->cphr_iname = InterNames::one_off(I"closure_data", closure_package); - Inter::Symbols::set_flag(InterNames::to_symbol(cphr->cphr_iname), MAKE_NAME_UNIQUE); + package_request *P = Hierarchy::package_within(CLOSURES_HAP, ph->requests_package); + cphr->cphr_iname = Hierarchy::make_iname_in(CLOSURE_DATA_HL, P); } return cphr->cphr_iname; } diff --git a/inform7/core-module/Chapter 26/Jump Labels.w b/inform7/core-module/Chapter 26/Jump Labels.w index 9ddb06b30..4e4b626e8 100644 --- a/inform7/core-module/Chapter 26/Jump Labels.w +++ b/inform7/core-module/Chapter 26/Jump Labels.w @@ -49,8 +49,7 @@ label_namespace *JumpLabels::new_namespace(text_stream *name, compilation_module lns->label_base_iname = InterNames::label_base_name(lns->label_prefix); package_request *PR2 = Hierarchy::synoptic_package(LABEL_STORAGES_HAP); - lns->label_storage_iname = InterNames::one_off(I"label_associated_storage", PR2); - Inter::Symbols::set_flag(InterNames::to_symbol(lns->label_storage_iname), MAKE_NAME_UNIQUE); + lns->label_storage_iname = Hierarchy::make_iname_in(LABEL_ASSOCIATED_STORAGE_HL, PR2); lns->label_counter = 0; lns->allocate_storage = 0; diff --git a/inform7/core-module/Chapter 26/List Together.w b/inform7/core-module/Chapter 26/List Together.w index 516d0d724..381eee5d7 100644 --- a/inform7/core-module/Chapter 26/List Together.w +++ b/inform7/core-module/Chapter 26/List Together.w @@ -35,8 +35,7 @@ inter_name *ListTogether::new(int include_articles) { InterNames::one_off(I"list_together_fn", PR), PR, InterNames::new(LIST_TOGETHER_ROUTINE_INAMEF)); - ltr->ltr_array_iname = InterNames::one_off(I"list_together_array", PR); - Inter::Symbols::set_flag(InterNames::to_symbol(ltr->ltr_array_iname), MAKE_NAME_UNIQUE); + ltr->ltr_array_iname = Hierarchy::make_iname_in(LIST_TOGETHER_ARRAY_HL, PR); ltr->articles_bit = include_articles; return ltr->ltr_array_iname; diff --git a/inform7/core-module/Chapter 26/Test Scripts.w b/inform7/core-module/Chapter 26/Test Scripts.w index 2549ce100..7a654fc38 100644 --- a/inform7/core-module/Chapter 26/Test Scripts.w +++ b/inform7/core-module/Chapter 26/Test Scripts.w @@ -238,10 +238,8 @@ void PL::Parsing::TestScripts::new_test_text(parse_node *PN) { test->text_of_script = Str::new(); package_request *P = Hierarchy::local_package(TESTS_HAP); - test->text_iname = InterNames::one_off(I"script", P); - test->req_iname = InterNames::one_off(I"requirements", P); - Inter::Symbols::set_flag(InterNames::to_symbol(test->text_iname), MAKE_NAME_UNIQUE); - Inter::Symbols::set_flag(InterNames::to_symbol(test->req_iname), MAKE_NAME_UNIQUE); + test->text_iname = Hierarchy::make_iname_in(SCRIPT_HL, P); + test->req_iname = Hierarchy::make_iname_in(REQUIREMENTS_HL, P); ts_being_parsed = test; (ParseTree::get_text(PN->next->next)); diff --git a/inform7/core-module/Chapter 27/Compilation Modules.w b/inform7/core-module/Chapter 27/Compilation Modules.w index 95074ec73..e2fa6fde2 100644 --- a/inform7/core-module/Chapter 27/Compilation Modules.w +++ b/inform7/core-module/Chapter 27/Compilation Modules.w @@ -4,7 +4,7 @@ typedef struct compilation_module { struct inter_namespace *namespace; struct package_request *resources; - struct subpackage_requests subpackages; + struct submodule_requests subpackages; struct parse_node *hanging_from; MEMORY_MANAGEMENT } compilation_module; @@ -74,7 +74,7 @@ compilation_module *Modules::new(parse_node *from) { return C; } -subpackage_requests *Modules::subpackages(compilation_module *C) { +submodule_requests *Modules::subpackages(compilation_module *C) { if (C == NULL) internal_error("no module"); return &(C->subpackages); } diff --git a/inform7/core-module/Chapter 27/Hierarchy Locations.w b/inform7/core-module/Chapter 27/Hierarchy Locations.w index 157ec1975..632d1399d 100644 --- a/inform7/core-module/Chapter 27/Hierarchy Locations.w +++ b/inform7/core-module/Chapter 27/Hierarchy Locations.w @@ -3,15 +3,66 @@ @ = +typedef struct location_requirement { + struct submodule_identity *this_local_submodule; + struct package_request *this_mundane_package; + int this_exotic_package; + struct inter_symbol *any_package_of_this_type; +} location_requirement; + +location_requirement HierarchyLocations::blank(void) { + location_requirement req; + req.this_local_submodule = NULL; + req.this_mundane_package = NULL; + req.this_exotic_package = -1; + req.any_package_of_this_type = NULL; + return req; +} + +location_requirement HierarchyLocations::local_submodule(submodule_identity *sid) { + location_requirement req = HierarchyLocations::blank(); + req.this_local_submodule = sid; + return req; +} + +location_requirement HierarchyLocations::generic_submodule(submodule_identity *sid) { + location_requirement req = HierarchyLocations::blank(); + req.this_mundane_package = Packaging::generic_resource(sid); + return req; +} + +location_requirement HierarchyLocations::synoptic_submodule(submodule_identity *sid) { + location_requirement req = HierarchyLocations::blank(); + req.this_mundane_package = Packaging::synoptic_resource(sid); + return req; +} + +location_requirement HierarchyLocations::any_package_of_type(text_stream *ptype_name) { + location_requirement req = HierarchyLocations::blank(); + req.any_package_of_this_type = HierarchyLocations::ptype(ptype_name); + return req; +} + +location_requirement HierarchyLocations::this_package(package_request *P) { + location_requirement req = HierarchyLocations::blank(); + req.this_mundane_package = P; + return req; +} + +location_requirement HierarchyLocations::this_exotic_package(int N) { + location_requirement req = HierarchyLocations::blank(); + req.this_exotic_package = N; + return req; +} + typedef struct named_resource_location { int access_number; struct text_stream *access_name; struct text_stream *function_package_name; struct text_stream *datum_package_name; - struct package_request *package; - struct inter_symbol *package_type; - int exotic_package_identifier; + struct location_requirement requirements; struct inter_name *equates_to_iname; + struct name_translation trans; MEMORY_MANAGEMENT } named_resource_location; @@ -21,27 +72,18 @@ named_resource_location *HierarchyLocations::new(void) { nrl->access_name = NULL; nrl->function_package_name = NULL; nrl->datum_package_name = NULL; - nrl->package = NULL; - nrl->package_type = NULL; nrl->equates_to_iname = NULL; - nrl->exotic_package_identifier = -1; + nrl->trans = Translation::same(); + nrl->requirements = HierarchyLocations::blank(); return nrl; } -named_resource_location *HierarchyLocations::make(int id, text_stream *name, package_request *P) { +named_resource_location *HierarchyLocations::con(int id, text_stream *name, name_translation nt, location_requirement req) { named_resource_location *nrl = HierarchyLocations::new(); nrl->access_number = id; nrl->access_name = Str::duplicate(name); - nrl->package = P; - HierarchyLocations::index(nrl); - return nrl; -} - -named_resource_location *HierarchyLocations::make_in_exotic(int id, text_stream *name, int x) { - named_resource_location *nrl = HierarchyLocations::new(); - nrl->access_number = id; - nrl->access_name = Str::duplicate(name); - nrl->exotic_package_identifier = x; + nrl->requirements = req; + nrl->trans = nt; HierarchyLocations::index(nrl); return nrl; } @@ -50,57 +92,30 @@ named_resource_location *HierarchyLocations::make_as(int id, text_stream *name, named_resource_location *nrl = HierarchyLocations::new(); nrl->access_number = id; nrl->access_name = Str::duplicate(name); - nrl->package = iname->eventual_owner; + nrl->requirements = HierarchyLocations::this_package(iname->eventual_owner); nrl->equates_to_iname = iname; HierarchyLocations::index(nrl); return nrl; } -named_resource_location *HierarchyLocations::make_function(int id, text_stream *name, text_stream *call_name, package_request *P) { +named_resource_location *HierarchyLocations::func(int id, text_stream *name, name_translation nt, location_requirement req) { named_resource_location *nrl = CREATE(named_resource_location); nrl->access_number = id; - nrl->access_name = Str::duplicate(call_name); + nrl->access_name = Str::duplicate(nt.translate_to); nrl->function_package_name = Str::duplicate(name); - nrl->package = P; + nrl->requirements = req; + nrl->trans = nt; HierarchyLocations::index(nrl); return nrl; } -named_resource_location *HierarchyLocations::make_function_in_exotic(int id, text_stream *name, text_stream *call_name, int x) { +named_resource_location *HierarchyLocations::datum(int id, text_stream *name, name_translation nt, location_requirement req) { named_resource_location *nrl = CREATE(named_resource_location); nrl->access_number = id; - nrl->access_name = Str::duplicate(call_name); - nrl->function_package_name = Str::duplicate(name); - nrl->exotic_package_identifier = x; - HierarchyLocations::index(nrl); - return nrl; -} - -named_resource_location *HierarchyLocations::make_datum(int id, text_stream *name, text_stream *datum_name, package_request *P) { - named_resource_location *nrl = CREATE(named_resource_location); - nrl->access_number = id; - nrl->access_name = Str::duplicate(datum_name); + nrl->access_name = Str::duplicate(nt.translate_to); nrl->datum_package_name = Str::duplicate(name); - nrl->package = P; - HierarchyLocations::index(nrl); - return nrl; -} - -named_resource_location *HierarchyLocations::make_datum_in_exotic(int id, text_stream *name, text_stream *datum_name, int x) { - named_resource_location *nrl = CREATE(named_resource_location); - nrl->access_number = id; - nrl->access_name = Str::duplicate(datum_name); - nrl->datum_package_name = Str::duplicate(name); - nrl->exotic_package_identifier = x; - HierarchyLocations::index(nrl); - return nrl; -} - -named_resource_location *HierarchyLocations::make_rulebook_within(int id, text_stream *name, inter_symbol *ptype) { - named_resource_location *nrl = CREATE(named_resource_location); - nrl->access_number = id; - nrl->access_name = Str::duplicate(name); - nrl->package_type = ptype; + nrl->requirements = req; + nrl->trans = nt; HierarchyLocations::index(nrl); return nrl; } @@ -119,7 +134,7 @@ void HierarchyLocations::create_nrls(void) { void HierarchyLocations::index(named_resource_location *nrl) { if (nrls_created == FALSE) HierarchyLocations::create_nrls(); if (nrl->access_number >= 0) nrls_indexed_by_id[nrl->access_number] = nrl; - if (nrl->package_type == NULL) { + if (nrl->requirements.any_package_of_this_type == NULL) { Dictionaries::create(nrls_indexed_by_name, nrl->access_name); Dictionaries::write_value(nrls_indexed_by_name, nrl->access_name, (void *) nrl); } @@ -149,47 +164,70 @@ inter_name *HierarchyLocations::function(package_request *R, text_stream *name, } inter_name *HierarchyLocations::nrl_to_iname(named_resource_location *nrl) { - if (nrl->package_type) internal_error("NRL accessed inappropriately"); + if (nrl->requirements.any_package_of_this_type) internal_error("NRL accessed inappropriately"); if (nrl->equates_to_iname == NULL) { - if (nrl->package == NULL) { - if (nrl->exotic_package_identifier >= 0) - nrl->package = Hierarchy::exotic_package(nrl->exotic_package_identifier); + if (nrl->requirements.this_mundane_package == NULL) { + if (nrl->requirements.this_exotic_package >= 0) + nrl->requirements.this_mundane_package = Hierarchy::exotic_package(nrl->requirements.this_exotic_package); else internal_error("package can't be found'"); } - - if (nrl->package == Hierarchy::template()) { - packaging_state save = Packaging::enter(nrl->package); + if (nrl->requirements.this_mundane_package == Hierarchy::template()) { + packaging_state save = Packaging::enter(nrl->requirements.this_mundane_package); nrl->equates_to_iname = InterNames::one_off(nrl->access_name, Hierarchy::template()); nrl->equates_to_iname->symbol = Emit::extern(nrl->access_name, K_value); Packaging::exit(save); } else if (Str::len(nrl->function_package_name) > 0) { nrl->equates_to_iname = Packaging::function_text( - InterNames::one_off(nrl->function_package_name, nrl->package), - nrl->package, + InterNames::one_off(nrl->function_package_name, nrl->requirements.this_mundane_package), + nrl->requirements.this_mundane_package, nrl->access_name); } else if (Str::len(nrl->datum_package_name) > 0) { nrl->equates_to_iname = Packaging::datum_text( - InterNames::one_off(nrl->datum_package_name, nrl->package), - nrl->package, + InterNames::one_off(nrl->datum_package_name, nrl->requirements.this_mundane_package), + nrl->requirements.this_mundane_package, nrl->access_name); - } else if ((nrl->package) && (nrl->equates_to_iname == NULL)) { - nrl->equates_to_iname = InterNames::one_off(nrl->access_name, nrl->package); + } else if ((nrl->requirements.this_mundane_package) && (nrl->equates_to_iname == NULL)) { + nrl->equates_to_iname = InterNames::one_off(nrl->access_name, nrl->requirements.this_mundane_package); } nrl->equates_to_iname = Hierarchy::post_process(nrl->access_number, nrl->equates_to_iname); - nrl->package = Packaging::home_of(nrl->equates_to_iname); + nrl->requirements.this_mundane_package = Packaging::home_of(nrl->equates_to_iname); } return nrl->equates_to_iname; } +inter_name *HierarchyLocations::find_in_package(int id, package_request *P, wording W) { + if (nrls_created == FALSE) HierarchyLocations::create_nrls(); + if ((id < 0) || (id >= MAX_HL) || (nrls_indexed_by_id[id] == NULL)) + internal_error("bad nrl ID"); + named_resource_location *nrl = nrls_indexed_by_id[id]; + if (nrl->requirements.any_package_of_this_type == NULL) internal_error("NRL accessed inappropriately"); + if ((P == NULL) || (P->eventual_type != nrl->requirements.any_package_of_this_type)) internal_error("constant in wrong superpackage"); + inter_name *iname = NULL; + if (Str::len(nrl->function_package_name) > 0) { + iname = Packaging::function_text( + InterNames::one_off(nrl->function_package_name, P), + P, + NULL); + } else { + iname = InterNames::one_off(nrl->access_name, P); + } + if (!Wordings::empty(W)) InterNames::attach_memo(iname, W); + if (nrl->trans.translate_to) + InterNames::translate(iname, nrl->trans.translate_to); + if (nrl->trans.then_make_unique) + Inter::Symbols::set_flag(InterNames::to_symbol(iname), MAKE_NAME_UNIQUE); + return iname; +} + package_request *HierarchyLocations::package_in_package(int id, package_request *P) { if (nrls_created == FALSE) HierarchyLocations::create_nrls(); if ((id < 0) || (id >= MAX_HL) || (nrls_indexed_by_id[id] == NULL)) internal_error("bad nrl ID"); named_resource_location *nrl = nrls_indexed_by_id[id]; - if (nrl->package_type == NULL) internal_error("NRL accessed inappropriately"); - if ((P == NULL) || (P->eventual_type != nrl->package_type)) internal_error("subpackage in wrong superpackage"); - return Packaging::request(InterNames::one_off(nrl->access_name, P), P, nrl->package_type); + if (nrl->requirements.any_package_of_this_type == NULL) internal_error("NRL accessed inappropriately"); + if ((P == NULL) || (P->eventual_type != nrl->requirements.any_package_of_this_type)) internal_error("subpackage in wrong superpackage"); + return Packaging::request(InterNames::one_off(nrl->access_name, P), P, nrl->requirements.any_package_of_this_type); } @ @@ -198,11 +236,10 @@ package_request *HierarchyLocations::package_in_package(int id, package_request = typedef struct hierarchy_attachment_point { - int submodule; + int hap_id; int counter; struct inter_symbol *type; - struct inter_symbol *super_type; - int synoptic_flag; + struct location_requirement requirements; MEMORY_MANAGEMENT } hierarchy_attachment_point; @@ -214,63 +251,56 @@ void HierarchyLocations::create_haps(void) { for (int i=0; isubmodule = submodule_id; - hap->counter = Packaging::register_counter(iterated_text); - hap->type = ptype; - hap->super_type = NULL; - hap->synoptic_flag = FALSE; +void HierarchyLocations::index_ap(hierarchy_attachment_point *hap) { if (haps_created == FALSE) HierarchyLocations::create_haps(); - if (ap_id >= 0) haps_indexed_by_id[ap_id] = hap; + if (hap->hap_id >= 0) haps_indexed_by_id[hap->hap_id] = hap; +} + +hierarchy_attachment_point *HierarchyLocations::ap(int ap_id, location_requirement req, text_stream *iterated_text, text_stream *ptype_name) { + hierarchy_attachment_point *hap = CREATE(hierarchy_attachment_point); + hap->hap_id = ap_id; + hap->requirements = req; + hap->counter = Packaging::register_counter(iterated_text); + hap->type = HierarchyLocations::ptype(ptype_name); + HierarchyLocations::index_ap(hap); return hap; } -hierarchy_attachment_point *HierarchyLocations::synoptic_ap(int ap_id, int submodule_id, text_stream *iterated_text, inter_symbol *ptype) { - hierarchy_attachment_point *hap = HierarchyLocations::ap(ap_id, submodule_id, iterated_text, ptype); - hap->synoptic_flag = TRUE; - return hap; -} - -hierarchy_attachment_point *HierarchyLocations::ap_within(int ap_id, inter_symbol *sptype, text_stream *iterated_text, inter_symbol *ptype) { - hierarchy_attachment_point *hap = HierarchyLocations::ap(ap_id, -1, iterated_text, ptype); - hap->super_type = sptype; - return hap; -} - -package_request *HierarchyLocations::resource_package(compilation_module *C, int hap_id) { +package_request *HierarchyLocations::attach_new_package(compilation_module *C, package_request *R, int hap_id) { if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL)) internal_error("invalid HAP request"); hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id]; - package_request *R = Packaging::request_resource(C, hap->submodule); - if (hap->synoptic_flag) internal_error("subpackage is synoptic"); + + if (hap->requirements.this_local_submodule) + R = Packaging::request_resource(C, hap->requirements.this_local_submodule); + else if (hap->requirements.this_mundane_package) + R = hap->requirements.this_mundane_package; + else if (hap->requirements.this_exotic_package >= 0) + R = Hierarchy::exotic_package(hap->requirements.this_exotic_package); + else if (hap->requirements.any_package_of_this_type) { + if ((R == NULL) || (R->eventual_type != hap->requirements.any_package_of_this_type)) + internal_error("subpackage in wrong superpackage"); + } + return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type); } -package_request *HierarchyLocations::package(compilation_module *C, int hap_id) { - if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL)) - internal_error("invalid HAP request"); - hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id]; - if (hap->super_type) internal_error("subpackage in top-level submodule"); - package_request *R = Packaging::request_resource(C, hap->submodule); - if (hap->synoptic_flag) internal_error("subpackage is synoptic"); - return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type); +@ + += +dictionary *ptypes_indexed_by_name = NULL; + +int ptypes_created = FALSE; +inter_symbol *HierarchyLocations::ptype(text_stream *name) { + if (ptypes_created == FALSE) { + ptypes_created = TRUE; + ptypes_indexed_by_name = Dictionaries::new(512, FALSE); + } + if (Dictionaries::find(ptypes_indexed_by_name, name)) + return (inter_symbol *) Dictionaries::read_value(ptypes_indexed_by_name, name); + inter_symbol *new_ptype = Packaging::register_ptype(name, TRUE); + Dictionaries::create(ptypes_indexed_by_name, name); + Dictionaries::write_value(ptypes_indexed_by_name, name, (void *) new_ptype); + return new_ptype; } -package_request *HierarchyLocations::package_within(package_request *R, int hap_id) { - if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL)) - internal_error("invalid HAP request"); - hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id]; - if ((R == NULL) || (R->eventual_type != hap->super_type)) internal_error("subpackage in wrong superpackage"); - if (hap->synoptic_flag) internal_error("subpackage is synoptic"); - return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type); -} - -package_request *HierarchyLocations::synoptic_package(int hap_id) { - if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL)) - internal_error("invalid HAP request"); - hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id]; - if (hap->synoptic_flag == FALSE) internal_error("subpackage not synoptic"); - package_request *R = Packaging::synoptic_resource(hap->submodule); - return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type); -} diff --git a/inform7/core-module/Chapter 27/Hierarchy.w b/inform7/core-module/Chapter 27/Hierarchy.w index 98b1c502d..a2b07c8a9 100644 --- a/inform7/core-module/Chapter 27/Hierarchy.w +++ b/inform7/core-module/Chapter 27/Hierarchy.w @@ -2,64 +2,6 @@ @ -@e BASICS_SUBMODULE from 0 -@e ACTIONS_SUBMODULE -@e ACTIVITIES_SUBMODULE -@e ADJECTIVES_SUBMODULE -@e BIBLIOGRAPHIC_SUBMODULE -@e CHRONOLOGY_SUBMODULE -@e CONJUGATIONS_SUBMODULE -@e EQUATIONS_SUBMODULE -@e EXTENSIONS_SUBMODULE -@e EXTERNAL_FILES_SUBMODULE -@e GRAMMAR_SUBMODULE -@e IF_SUBMODULE -@e INSTANCES_SUBMODULE -@e KINDS_SUBMODULE -@e LISTING_SUBMODULE -@e PHRASES_SUBMODULE -@e PROPERTIES_SUBMODULE -@e RELATIONS_SUBMODULE -@e RULEBOOKS_SUBMODULE -@e RULES_SUBMODULE -@e TABLES_SUBMODULE -@e VARIABLES_SUBMODULE - -@e MAX_SUBMODULE - -= -text_stream *Hierarchy::submodule_name(int spid) { - text_stream *N = NULL; - switch (spid) { - case BASICS_SUBMODULE: N = I"basics"; break; - case ACTIONS_SUBMODULE: N = I"actions"; break; - case ACTIVITIES_SUBMODULE: N = I"activities"; break; - case ADJECTIVES_SUBMODULE: N = I"adjectives"; break; - case BIBLIOGRAPHIC_SUBMODULE: N = I"bibliographic"; break; - case CHRONOLOGY_SUBMODULE: N = I"chronology"; break; - case CONJUGATIONS_SUBMODULE: N = I"conjugations"; break; - case EQUATIONS_SUBMODULE: N = I"equations"; break; - case EXTENSIONS_SUBMODULE: N = I"extensions"; break; - case EXTERNAL_FILES_SUBMODULE: N = I"external_files"; break; - case GRAMMAR_SUBMODULE: N = I"grammar"; break; - case IF_SUBMODULE: N = I"interactive_fiction"; break; - case INSTANCES_SUBMODULE: N = I"instances"; break; - case KINDS_SUBMODULE: N = I"kinds"; break; - case LISTING_SUBMODULE: N = I"listing"; break; - case PHRASES_SUBMODULE: N = I"phrases"; break; - case PROPERTIES_SUBMODULE: N = I"properties"; break; - case RELATIONS_SUBMODULE: N = I"relations"; break; - case RULEBOOKS_SUBMODULE: N = I"rulebooks"; break; - case RULES_SUBMODULE: N = I"rules"; break; - case TABLES_SUBMODULE: N = I"tables"; break; - case VARIABLES_SUBMODULE: N = I"variables"; break; - default: internal_error("nameless resource"); - } - return N; -} - -@ - @e BLOCK_CONSTANT_PR_COUNTER from 0 @e BLOCK_PR_COUNTER @e FORM_PR_COUNTER @@ -72,7 +14,11 @@ text_stream *Hierarchy::submodule_name(int spid) { @e TASK_PR_COUNTER = +location_requirement home_for_weak_type_IDs; + void Hierarchy::establish(void) { + home_for_weak_type_IDs = HierarchyLocations::blank(); + Packaging::register_counter(I"block_constant"); Packaging::register_counter(I"code_block"); Packaging::register_counter(I"form"); @@ -148,41 +94,44 @@ void Hierarchy::establish(void) { @e RNG_SEED_AT_START_OF_PLAY_HL @ = - package_request *generic_basics = Packaging::generic_resource(BASICS_SUBMODULE); - HierarchyLocations::make(THESAME_HL, I"##TheSame", generic_basics); - HierarchyLocations::make(PLURALFOUND_HL, I"##PluralFound", generic_basics); - HierarchyLocations::make(PARENT_HL, I"parent", generic_basics); - HierarchyLocations::make(CHILD_HL, I"child", generic_basics); - HierarchyLocations::make(SIBLING_HL, I"sibling", generic_basics); - HierarchyLocations::make(SELF_HL, I"self", generic_basics); - HierarchyLocations::make(THEDARK_HL, I"thedark", generic_basics); - HierarchyLocations::make(RESPONSETEXTS_HL, I"ResponseTexts", generic_basics); - HierarchyLocations::make(DEBUG_HL, I"DEBUG", generic_basics); - HierarchyLocations::make(TARGET_ZCODE_HL, I"TARGET_ZCODE", generic_basics); - HierarchyLocations::make(TARGET_GLULX_HL, I"TARGET_GLULX", generic_basics); - HierarchyLocations::make(DICT_WORD_SIZE_HL, I"DICT_WORD_SIZE", generic_basics); - HierarchyLocations::make(WORDSIZE_HL, I"WORDSIZE", generic_basics); - HierarchyLocations::make(NULL_HL, I"NULL", generic_basics); - HierarchyLocations::make(WORD_HIGHBIT_HL, I"WORD_HIGHBIT", generic_basics); - HierarchyLocations::make(WORD_NEXTTOHIGHBIT_HL, I"WORD_NEXTTOHIGHBIT", generic_basics); - HierarchyLocations::make(IMPROBABLE_VALUE_HL, I"IMPROBABLE_VALUE", generic_basics); - HierarchyLocations::make(REPARSE_CODE_HL, I"REPARSE_CODE", generic_basics); - HierarchyLocations::make(MAX_POSITIVE_NUMBER_HL, I"MAX_POSITIVE_NUMBER", generic_basics); - HierarchyLocations::make(MIN_NEGATIVE_NUMBER_HL, I"MIN_NEGATIVE_NUMBER", generic_basics); - HierarchyLocations::make(FLOAT_NAN_HL, I"FLOAT_NAN", generic_basics); - HierarchyLocations::make(CAP_SHORT_NAME_EXISTS_HL, I"CAP_SHORT_NAME_EXISTS", generic_basics); - HierarchyLocations::make(NI_BUILD_COUNT_HL, I"NI_BUILD_COUNT", generic_basics); - HierarchyLocations::make(RANKING_TABLE_HL, I"RANKING_TABLE", generic_basics); - HierarchyLocations::make(PLUGIN_FILES_HL, I"PLUGIN_FILES", generic_basics); - HierarchyLocations::make(MAX_WEAK_ID_HL, I"MAX_WEAK_ID", generic_basics); - HierarchyLocations::make(NO_VERB_VERB_DEFINED_HL, I"NO_VERB_VERB_DEFINED", generic_basics); - HierarchyLocations::make(NO_TEST_SCENARIOS_HL, I"NO_TEST_SCENARIOS", generic_basics); - HierarchyLocations::make(MEMORY_HEAP_SIZE_HL, I"MEMORY_HEAP_SIZE", generic_basics); - package_request *synoptic_basics = Packaging::synoptic_resource(BASICS_SUBMODULE); - HierarchyLocations::make(CCOUNT_QUOTATIONS_HL, I"CCOUNT_QUOTATIONS", synoptic_basics); - HierarchyLocations::make(MAX_FRAME_SIZE_NEEDED_HL, I"MAX_FRAME_SIZE_NEEDED", synoptic_basics); - HierarchyLocations::make(RNG_SEED_AT_START_OF_PLAY_HL, I"RNG_SEED_AT_START_OF_PLAY", synoptic_basics); + submodule_identity *basics = Packaging::register_submodule(I"basics"); + + location_requirement generic_basics = HierarchyLocations::generic_submodule(basics); + HierarchyLocations::con(THESAME_HL, I"##TheSame", Translation::same(), generic_basics); + HierarchyLocations::con(PLURALFOUND_HL, I"##PluralFound", Translation::same(), generic_basics); + HierarchyLocations::con(PARENT_HL, I"parent", Translation::same(), generic_basics); + HierarchyLocations::con(CHILD_HL, I"child", Translation::same(), generic_basics); + HierarchyLocations::con(SIBLING_HL, I"sibling", Translation::same(), generic_basics); + HierarchyLocations::con(SELF_HL, I"self", Translation::same(), generic_basics); + HierarchyLocations::con(THEDARK_HL, I"thedark", Translation::same(), generic_basics); + HierarchyLocations::con(RESPONSETEXTS_HL, I"ResponseTexts", Translation::same(), generic_basics); + HierarchyLocations::con(DEBUG_HL, I"DEBUG", Translation::same(), generic_basics); + HierarchyLocations::con(TARGET_ZCODE_HL, I"TARGET_ZCODE", Translation::same(), generic_basics); + HierarchyLocations::con(TARGET_GLULX_HL, I"TARGET_GLULX", Translation::same(), generic_basics); + HierarchyLocations::con(DICT_WORD_SIZE_HL, I"DICT_WORD_SIZE", Translation::same(), generic_basics); + HierarchyLocations::con(WORDSIZE_HL, I"WORDSIZE", Translation::same(), generic_basics); + HierarchyLocations::con(NULL_HL, I"NULL", Translation::same(), generic_basics); + HierarchyLocations::con(WORD_HIGHBIT_HL, I"WORD_HIGHBIT", Translation::same(), generic_basics); + HierarchyLocations::con(WORD_NEXTTOHIGHBIT_HL, I"WORD_NEXTTOHIGHBIT", Translation::same(), generic_basics); + HierarchyLocations::con(IMPROBABLE_VALUE_HL, I"IMPROBABLE_VALUE", Translation::same(), generic_basics); + HierarchyLocations::con(REPARSE_CODE_HL, I"REPARSE_CODE", Translation::same(), generic_basics); + HierarchyLocations::con(MAX_POSITIVE_NUMBER_HL, I"MAX_POSITIVE_NUMBER", Translation::same(), generic_basics); + HierarchyLocations::con(MIN_NEGATIVE_NUMBER_HL, I"MIN_NEGATIVE_NUMBER", Translation::same(), generic_basics); + HierarchyLocations::con(FLOAT_NAN_HL, I"FLOAT_NAN", Translation::same(), generic_basics); + HierarchyLocations::con(CAP_SHORT_NAME_EXISTS_HL, I"CAP_SHORT_NAME_EXISTS", Translation::same(), generic_basics); + HierarchyLocations::con(NI_BUILD_COUNT_HL, I"NI_BUILD_COUNT", Translation::same(), generic_basics); + HierarchyLocations::con(RANKING_TABLE_HL, I"RANKING_TABLE", Translation::same(), generic_basics); + HierarchyLocations::con(PLUGIN_FILES_HL, I"PLUGIN_FILES", Translation::same(), generic_basics); + HierarchyLocations::con(MAX_WEAK_ID_HL, I"MAX_WEAK_ID", Translation::same(), generic_basics); + HierarchyLocations::con(NO_VERB_VERB_DEFINED_HL, I"NO_VERB_VERB_DEFINED", Translation::same(), generic_basics); + HierarchyLocations::con(NO_TEST_SCENARIOS_HL, I"NO_TEST_SCENARIOS", Translation::same(), generic_basics); + HierarchyLocations::con(MEMORY_HEAP_SIZE_HL, I"MEMORY_HEAP_SIZE", Translation::same(), generic_basics); + + location_requirement synoptic_basics = HierarchyLocations::synoptic_submodule(basics); + HierarchyLocations::con(CCOUNT_QUOTATIONS_HL, I"CCOUNT_QUOTATIONS", Translation::same(), synoptic_basics); + HierarchyLocations::con(MAX_FRAME_SIZE_NEEDED_HL, I"MAX_FRAME_SIZE_NEEDED", Translation::same(), synoptic_basics); + HierarchyLocations::con(RNG_SEED_AT_START_OF_PLAY_HL, I"RNG_SEED_AT_START_OF_PLAY", Translation::same(), synoptic_basics); @h Actions. @@ -202,23 +151,26 @@ void Hierarchy::establish(void) { @e MISTAKEACTIONSUB_HL @ = - package_request *generic_actions = Packaging::generic_resource(ACTIONS_SUBMODULE); - HierarchyLocations::make(MISTAKEACTION_HL, I"##MistakeAction", generic_actions); + submodule_identity *actions = Packaging::register_submodule(I"actions"); - inter_symbol *action_ptype = Packaging::register_ptype(I"_action", TRUE); - HierarchyLocations::ap(ACTIONS_HAP, ACTIONS_SUBMODULE, I"action", action_ptype); - HierarchyLocations::make_rulebook_within(CHECK_RB_HL, I"check_rb", action_ptype); - HierarchyLocations::make_rulebook_within(CARRY_OUT_RB_HL, I"carry_out_rb", action_ptype); - HierarchyLocations::make_rulebook_within(REPORT_RB_HL, I"report_rb", action_ptype); + location_requirement generic_actions = HierarchyLocations::generic_submodule(actions); + HierarchyLocations::con(MISTAKEACTION_HL, I"##MistakeAction", Translation::same(), generic_actions); - package_request *synoptic_actions = Packaging::synoptic_resource(ACTIONS_SUBMODULE); - HierarchyLocations::make(ACTIONCODING_HL, I"ActionCoding", synoptic_actions); - HierarchyLocations::make(ACTIONDATA_HL, I"ActionData", synoptic_actions); - HierarchyLocations::make(ACTIONHAPPENED_HL, I"ActionHappened", synoptic_actions); - HierarchyLocations::make(AD_RECORDS_HL, I"AD_RECORDS", synoptic_actions); - HierarchyLocations::make(CCOUNT_ACTION_NAME_HL, I"CCOUNT_ACTION_NAME", synoptic_actions); - HierarchyLocations::make_function(DB_ACTION_DETAILS_HL, I"DB_Action_Details_fn", I"DB_Action_Details", synoptic_actions); - HierarchyLocations::make_function(MISTAKEACTIONSUB_HL, I"MistakeActionSub_fn", I"MistakeActionSub", synoptic_actions); + location_requirement local_actions = HierarchyLocations::local_submodule(actions); + HierarchyLocations::ap(ACTIONS_HAP, local_actions, I"action", I"_action"); + location_requirement in_action = HierarchyLocations::any_package_of_type(I"_action"); + HierarchyLocations::con(CHECK_RB_HL, I"check_rb", Translation::same(), in_action); + HierarchyLocations::con(CARRY_OUT_RB_HL, I"carry_out_rb", Translation::same(), in_action); + HierarchyLocations::con(REPORT_RB_HL, I"report_rb", Translation::same(), in_action); + + location_requirement synoptic_actions = HierarchyLocations::synoptic_submodule(actions); + HierarchyLocations::con(ACTIONCODING_HL, I"ActionCoding", Translation::same(), synoptic_actions); + HierarchyLocations::con(ACTIONDATA_HL, I"ActionData", Translation::same(), synoptic_actions); + HierarchyLocations::con(ACTIONHAPPENED_HL, I"ActionHappened", Translation::same(), synoptic_actions); + HierarchyLocations::con(AD_RECORDS_HL, I"AD_RECORDS", Translation::same(), synoptic_actions); + HierarchyLocations::con(CCOUNT_ACTION_NAME_HL, I"CCOUNT_ACTION_NAME", Translation::same(), synoptic_actions); + HierarchyLocations::func(DB_ACTION_DETAILS_HL, I"DB_Action_Details_fn", Translation::to(I"DB_Action_Details"), synoptic_actions); + HierarchyLocations::func(MISTAKEACTIONSUB_HL, I"MistakeActionSub_fn", Translation::to(I"MistakeActionSub"), synoptic_actions); @h Activities. @@ -234,32 +186,38 @@ void Hierarchy::establish(void) { @e ACTIVITY_VAR_CREATORS_HL @ = - inter_symbol *activity_ptype = Packaging::register_ptype(I"_activity", TRUE); - HierarchyLocations::ap(ACTIVITIES_HAP, ACTIVITIES_SUBMODULE, I"activity", activity_ptype); - HierarchyLocations::make_rulebook_within(BEFORE_RB_HL, I"before_rb", activity_ptype); - HierarchyLocations::make_rulebook_within(FOR_RB_HL, I"for_rb", activity_ptype); - HierarchyLocations::make_rulebook_within(AFTER_RB_HL, I"after_rb", activity_ptype); + submodule_identity *activities = Packaging::register_submodule(I"activities"); - package_request *synoptic_activities = Packaging::synoptic_resource(ACTIVITIES_SUBMODULE); - HierarchyLocations::make(ACTIVITY_AFTER_RULEBOOKS_HL, I"Activity_after_rulebooks", synoptic_activities); - HierarchyLocations::make(ACTIVITY_ATB_RULEBOOKS_HL, I"Activity_atb_rulebooks", synoptic_activities); - HierarchyLocations::make(ACTIVITY_BEFORE_RULEBOOKS_HL, I"Activity_before_rulebooks", synoptic_activities); - HierarchyLocations::make(ACTIVITY_FOR_RULEBOOKS_HL, I"Activity_for_rulebooks", synoptic_activities); - HierarchyLocations::make(ACTIVITY_VAR_CREATORS_HL, I"activity_var_creators", synoptic_activities); + location_requirement local_activities = HierarchyLocations::local_submodule(activities); + HierarchyLocations::ap(ACTIVITIES_HAP, local_activities, I"activity", I"_activity"); + location_requirement in_activity = HierarchyLocations::any_package_of_type(I"_activity"); + HierarchyLocations::con(BEFORE_RB_HL, I"before_rb", Translation::same(), in_activity); + HierarchyLocations::con(FOR_RB_HL, I"for_rb", Translation::same(), in_activity); + HierarchyLocations::con(AFTER_RB_HL, I"after_rb", Translation::same(), in_activity); + + location_requirement synoptic_activities = HierarchyLocations::synoptic_submodule(activities); + HierarchyLocations::con(ACTIVITY_AFTER_RULEBOOKS_HL, I"Activity_after_rulebooks", Translation::same(), synoptic_activities); + HierarchyLocations::con(ACTIVITY_ATB_RULEBOOKS_HL, I"Activity_atb_rulebooks", Translation::same(), synoptic_activities); + HierarchyLocations::con(ACTIVITY_BEFORE_RULEBOOKS_HL, I"Activity_before_rulebooks", Translation::same(), synoptic_activities); + HierarchyLocations::con(ACTIVITY_FOR_RULEBOOKS_HL, I"Activity_for_rulebooks", Translation::same(), synoptic_activities); + HierarchyLocations::con(ACTIVITY_VAR_CREATORS_HL, I"activity_var_creators", Translation::same(), synoptic_activities); @h Adjectives. @e ADJECTIVES_HAP +@e ADJECTIVE_HL @e ADJECTIVE_MEANINGS_HAP @e ADJECTIVE_PHRASES_HAP @ = - inter_symbol *adjective_ptype = Packaging::register_ptype(I"_adjective", TRUE); - HierarchyLocations::ap(ADJECTIVES_HAP, ADJECTIVES_SUBMODULE, I"adjective", adjective_ptype); - inter_symbol *adjective_meaning_ptype = Packaging::register_ptype(I"_adjective_meaning", TRUE); - HierarchyLocations::ap(ADJECTIVE_MEANINGS_HAP, ADJECTIVES_SUBMODULE, I"adjective_meaning", adjective_meaning_ptype); - inter_symbol *adjective_phrase_ptype = Packaging::register_ptype(I"_adjective_phrase", TRUE); - HierarchyLocations::ap(ADJECTIVE_PHRASES_HAP, ADJECTIVES_SUBMODULE, I"adjective_phrase", adjective_phrase_ptype); + submodule_identity *adjectives = Packaging::register_submodule(I"adjectives"); + + location_requirement local_adjectives = HierarchyLocations::local_submodule(adjectives); + HierarchyLocations::ap(ADJECTIVES_HAP, local_adjectives, I"adjective", I"_adjective"); + location_requirement in_adjective = HierarchyLocations::any_package_of_type(I"_adjective"); + HierarchyLocations::con(ADJECTIVE_HL, I"adjective", Translation::uniqued(), in_adjective); + HierarchyLocations::ap(ADJECTIVE_MEANINGS_HAP, local_adjectives, I"adjective_meaning", I"_adjective_meaning"); + HierarchyLocations::ap(ADJECTIVE_PHRASES_HAP, local_adjectives, I"adjective_phrase", I"_adjective_phrase"); @h Bibliographic. @@ -271,13 +229,15 @@ void Hierarchy::establish(void) { @e SERIAL_HL @ = - package_request *synoptic_biblio = Packaging::synoptic_resource(BIBLIOGRAPHIC_SUBMODULE); - HierarchyLocations::make(UUID_ARRAY_HL, I"UUID_ARRAY", synoptic_biblio); - HierarchyLocations::make_datum(STORY_HL, I"Story_datum", I"Story", synoptic_biblio); - HierarchyLocations::make_datum(HEADLINE_HL, I"Headline_datum", I"Headline", synoptic_biblio); - HierarchyLocations::make_datum(STORY_AUTHOR_HL, I"Story_Author_datum", I"Story_Author", synoptic_biblio); - HierarchyLocations::make_datum(RELEASE_HL, I"Release_datum", I"Release", synoptic_biblio); - HierarchyLocations::make_datum(SERIAL_HL, I"Serial_datum", I"Serial", synoptic_biblio); + submodule_identity *bibliographic = Packaging::register_submodule(I"bibliographic"); + + location_requirement synoptic_biblio = HierarchyLocations::synoptic_submodule(bibliographic); + HierarchyLocations::con(UUID_ARRAY_HL, I"UUID_ARRAY", Translation::same(), synoptic_biblio); + HierarchyLocations::datum(STORY_HL, I"Story_datum", Translation::to(I"Story"), synoptic_biblio); + HierarchyLocations::datum(HEADLINE_HL, I"Headline_datum", Translation::to(I"Headline"), synoptic_biblio); + HierarchyLocations::datum(STORY_AUTHOR_HL, I"Story_Author_datum", Translation::to(I"Story_Author"), synoptic_biblio); + HierarchyLocations::datum(RELEASE_HL, I"Release_datum", Translation::to(I"Release"), synoptic_biblio); + HierarchyLocations::datum(SERIAL_HL, I"Serial_datum", Translation::to(I"Serial"), synoptic_biblio); @h Chronology. @@ -291,16 +251,18 @@ void Hierarchy::establish(void) { @e TESTSINGLEPASTSTATE_HL @ = - inter_symbol *past_action_pattern_ptype = Packaging::register_ptype(I"_past_action_pattern", TRUE); - HierarchyLocations::ap(PAST_ACTION_PATTERNS_HAP, CHRONOLOGY_SUBMODULE, I"past_action_pattern", past_action_pattern_ptype); + submodule_identity *chronology = Packaging::register_submodule(I"chronology"); - package_request *synoptic_chronology = Packaging::synoptic_resource(CHRONOLOGY_SUBMODULE); - HierarchyLocations::make(TIMEDEVENTSTABLE_HL, I"TimedEventsTable", synoptic_chronology); - HierarchyLocations::make(TIMEDEVENTTIMESTABLE_HL, I"TimedEventTimesTable", synoptic_chronology); - HierarchyLocations::make(PASTACTIONSI6ROUTINES_HL, I"PastActionsI6Routines", synoptic_chronology); - HierarchyLocations::make(NO_PAST_TENSE_CONDS_HL, I"NO_PAST_TENSE_CONDS", synoptic_chronology); - HierarchyLocations::make(NO_PAST_TENSE_ACTIONS_HL, I"NO_PAST_TENSE_ACTIONS", synoptic_chronology); - HierarchyLocations::make_function(TESTSINGLEPASTSTATE_HL, I"test_fn", I"TestSinglePastState", synoptic_chronology); + location_requirement local_chronology = HierarchyLocations::local_submodule(chronology); + HierarchyLocations::ap(PAST_ACTION_PATTERNS_HAP, local_chronology, I"past_action_pattern", I"_past_action_pattern"); + + location_requirement synoptic_chronology = HierarchyLocations::synoptic_submodule(chronology); + HierarchyLocations::con(TIMEDEVENTSTABLE_HL, I"TimedEventsTable", Translation::same(), synoptic_chronology); + HierarchyLocations::con(TIMEDEVENTTIMESTABLE_HL, I"TimedEventTimesTable", Translation::same(), synoptic_chronology); + HierarchyLocations::con(PASTACTIONSI6ROUTINES_HL, I"PastActionsI6Routines", Translation::same(), synoptic_chronology); + HierarchyLocations::con(NO_PAST_TENSE_CONDS_HL, I"NO_PAST_TENSE_CONDS", Translation::same(), synoptic_chronology); + HierarchyLocations::con(NO_PAST_TENSE_ACTIONS_HL, I"NO_PAST_TENSE_ACTIONS", Translation::same(), synoptic_chronology); + HierarchyLocations::func(TESTSINGLEPASTSTATE_HL, I"test_fn", Translation::to(I"TestSinglePastState"), synoptic_chronology); @h Conjugations. @@ -313,24 +275,27 @@ void Hierarchy::establish(void) { @e VERBS_HAP @ = - package_request *generic_conjugations = Packaging::generic_resource(CONJUGATIONS_SUBMODULE); - HierarchyLocations::make(CV_MEANING_HL, I"CV_MEANING", generic_conjugations); - HierarchyLocations::make(CV_MODAL_HL, I"CV_MODAL", generic_conjugations); - HierarchyLocations::make(CV_NEG_HL, I"CV_NEG", generic_conjugations); - HierarchyLocations::make(CV_POS_HL, I"CV_POS", generic_conjugations); + submodule_identity *conjugations = Packaging::register_submodule(I"conjugations"); - inter_symbol *mverb_ptype = Packaging::register_ptype(I"_modal_verb", TRUE); - HierarchyLocations::ap(MVERBS_HAP, CONJUGATIONS_SUBMODULE, I"mverb", mverb_ptype); - inter_symbol *verb_ptype = Packaging::register_ptype(I"_verb", TRUE); - HierarchyLocations::ap(VERBS_HAP, CONJUGATIONS_SUBMODULE, I"verb", verb_ptype); + location_requirement generic_conjugations = HierarchyLocations::generic_submodule(conjugations); + HierarchyLocations::con(CV_MEANING_HL, I"CV_MEANING", Translation::same(), generic_conjugations); + HierarchyLocations::con(CV_MODAL_HL, I"CV_MODAL", Translation::same(), generic_conjugations); + HierarchyLocations::con(CV_NEG_HL, I"CV_NEG", Translation::same(), generic_conjugations); + HierarchyLocations::con(CV_POS_HL, I"CV_POS", Translation::same(), generic_conjugations); + + location_requirement local_conjugations = HierarchyLocations::local_submodule(conjugations); + HierarchyLocations::ap(MVERBS_HAP, local_conjugations, I"mverb", I"_modal_verb"); + HierarchyLocations::ap(VERBS_HAP, local_conjugations, I"verb", I"_verb"); @h Equations. @e EQUATIONS_HAP @ = - inter_symbol *equation_ptype = Packaging::register_ptype(I"_equation", TRUE); - HierarchyLocations::ap(EQUATIONS_HAP, EQUATIONS_SUBMODULE, I"equation", equation_ptype); + submodule_identity *equations = Packaging::register_submodule(I"equations"); + + location_requirement local_equations = HierarchyLocations::local_submodule(equations); + HierarchyLocations::ap(EQUATIONS_HAP, local_equations, I"equation", I"_equation"); @h Extensions. @@ -339,24 +304,35 @@ void Hierarchy::establish(void) { @e SHOWONEEXTENSION_HL @ = - package_request *synoptic_extensions = Packaging::synoptic_resource(EXTENSIONS_SUBMODULE); - HierarchyLocations::make_function(SHOWEXTENSIONVERSIONS_HL, I"showextensionversions_fn", I"ShowExtensionVersions", synoptic_extensions); - HierarchyLocations::make_function(SHOWFULLEXTENSIONVERSIONS_HL, I"showfullextensionversions_fn", I"ShowFullExtensionVersions", synoptic_extensions); - HierarchyLocations::make_function(SHOWONEEXTENSION_HL, I"showoneextension_fn", I"ShowOneExtension", synoptic_extensions); + submodule_identity *extensions = Packaging::register_submodule(I"extensions"); + + location_requirement synoptic_extensions = HierarchyLocations::synoptic_submodule(extensions); + HierarchyLocations::func(SHOWEXTENSIONVERSIONS_HL, I"showextensionversions_fn", Translation::to(I"ShowExtensionVersions"), synoptic_extensions); + HierarchyLocations::func(SHOWFULLEXTENSIONVERSIONS_HL, I"showfullextensionversions_fn", Translation::to(I"ShowFullExtensionVersions"), synoptic_extensions); + HierarchyLocations::func(SHOWONEEXTENSION_HL, I"showoneextension_fn", Translation::to(I"ShowOneExtension"), synoptic_extensions); @h External files. @e EXTERNAL_FILES_HAP +@e FILE_HL +@e IFID_HL @ = - inter_symbol *external_file_ptype = Packaging::register_ptype(I"_external_file", TRUE); - HierarchyLocations::ap(EXTERNAL_FILES_HAP, EXTERNAL_FILES_SUBMODULE, I"external_file", external_file_ptype); + submodule_identity *external_files = Packaging::register_submodule(I"external_files"); + + location_requirement local_external_files = HierarchyLocations::local_submodule(external_files); + HierarchyLocations::ap(EXTERNAL_FILES_HAP, local_external_files, I"external_file", I"_external_file"); + location_requirement in_external_file = HierarchyLocations::any_package_of_type(I"_external_file"); + HierarchyLocations::con(FILE_HL, I"file", Translation::uniqued(), in_external_file); + HierarchyLocations::con(IFID_HL, I"ifid", Translation::uniqued(), in_external_file); @h Grammar. @e COND_TOKENS_HAP @e CONSULT_TOKENS_HAP @e TESTS_HAP +@e SCRIPT_HL +@e REQUIREMENTS_HL @e LOOP_OVER_SCOPES_HAP @e MISTAKES_HAP @e NAMED_ACTION_PATTERNS_HAP @@ -386,56 +362,52 @@ void Hierarchy::establish(void) { @e COMMANDS_HAP @ = - inter_symbol *cond_ptype = Packaging::register_ptype(I"_conditional_token", TRUE); - HierarchyLocations::ap(COND_TOKENS_HAP, GRAMMAR_SUBMODULE, I"conditional_token", cond_ptype); - inter_symbol *consult_ptype = Packaging::register_ptype(I"_consult_token", TRUE); - HierarchyLocations::ap(CONSULT_TOKENS_HAP, GRAMMAR_SUBMODULE, I"consult_token", consult_ptype); - inter_symbol *test_ptype = Packaging::register_ptype(I"_test", TRUE); - HierarchyLocations::ap(TESTS_HAP, GRAMMAR_SUBMODULE, I"test", test_ptype); - inter_symbol *los_ptype = Packaging::register_ptype(I"_loop_over_scope", TRUE); - HierarchyLocations::ap(LOOP_OVER_SCOPES_HAP, GRAMMAR_SUBMODULE, I"loop_over_scope", los_ptype); - inter_symbol *m_ptype = Packaging::register_ptype(I"_mistake", TRUE); - HierarchyLocations::ap(MISTAKES_HAP, GRAMMAR_SUBMODULE, I"mistake", m_ptype); - inter_symbol *nap_ptype = Packaging::register_ptype(I"_named_action_pattern", TRUE); - HierarchyLocations::ap(NAMED_ACTION_PATTERNS_HAP, GRAMMAR_SUBMODULE, I"named_action_pattern", nap_ptype); - inter_symbol *nt_ptype = Packaging::register_ptype(I"_named_token", TRUE); - HierarchyLocations::ap(NAMED_TOKENS_HAP, GRAMMAR_SUBMODULE, I"named_token", nt_ptype); - inter_symbol *nf_ptype = Packaging::register_ptype(I"_noun_filter", TRUE); - HierarchyLocations::ap(NOUN_FILTERS_HAP, GRAMMAR_SUBMODULE, I"noun_filter", nf_ptype); - inter_symbol *sf_ptype = Packaging::register_ptype(I"_scope_filter", TRUE); - HierarchyLocations::ap(SCOPE_FILTERS_HAP, GRAMMAR_SUBMODULE, I"scope_filter", sf_ptype); - inter_symbol *pn_ptype = Packaging::register_ptype(I"_parse_name", TRUE); - HierarchyLocations::ap(PARSE_NAMES_HAP, GRAMMAR_SUBMODULE, I"parse_name", pn_ptype); - inter_symbol *slash_ptype = Packaging::register_ptype(I"_slash_token", TRUE); - HierarchyLocations::ap(SLASH_TOKENS_HAP, GRAMMAR_SUBMODULE, I"slash_token", slash_ptype); + submodule_identity *grammar = Packaging::register_submodule(I"grammar"); - package_request *synoptic_grammar = Packaging::synoptic_resource(GRAMMAR_SUBMODULE); - HierarchyLocations::make(VERB_DIRECTIVE_CREATURE_HL, I"VERB_DIRECTIVE_CREATURE", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_DIVIDER_HL, I"VERB_DIRECTIVE_DIVIDER", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_HELD_HL, I"VERB_DIRECTIVE_HELD", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_MULTI_HL, I"VERB_DIRECTIVE_MULTI", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_MULTIEXCEPT_HL, I"VERB_DIRECTIVE_MULTIEXCEPT", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_MULTIHELD_HL, I"VERB_DIRECTIVE_MULTIHELD", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_MULTIINSIDE_HL, I"VERB_DIRECTIVE_MULTIINSIDE", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_NOUN_HL, I"VERB_DIRECTIVE_NOUN", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_NUMBER_HL, I"VERB_DIRECTIVE_NUMBER", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_RESULT_HL, I"VERB_DIRECTIVE_RESULT", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_REVERSE_HL, I"VERB_DIRECTIVE_REVERSE", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_SLASH_HL, I"VERB_DIRECTIVE_SLASH", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_SPECIAL_HL, I"VERB_DIRECTIVE_SPECIAL", synoptic_grammar); - HierarchyLocations::make(VERB_DIRECTIVE_TOPIC_HL, I"VERB_DIRECTIVE_TOPIC", synoptic_grammar); - HierarchyLocations::make_function(TESTSCRIPTSUB_HL, I"action_fn", I"TestScriptSub", synoptic_grammar); - HierarchyLocations::make_function(INTERNALTESTCASES_HL, I"run_tests_fn", I"InternalTestCases", synoptic_grammar); - inter_symbol *command_ptype = Packaging::register_ptype(I"_command", TRUE); - HierarchyLocations::synoptic_ap(COMMANDS_HAP, GRAMMAR_SUBMODULE, I"command", command_ptype); + location_requirement local_grammar = HierarchyLocations::local_submodule(grammar); + HierarchyLocations::ap(COND_TOKENS_HAP, local_grammar, I"conditional_token", I"_conditional_token"); + HierarchyLocations::ap(CONSULT_TOKENS_HAP, local_grammar, I"consult_token", I"_consult_token"); + HierarchyLocations::ap(TESTS_HAP, local_grammar, I"test", I"_test"); + location_requirement in_test = HierarchyLocations::any_package_of_type(I"_test"); + HierarchyLocations::con(SCRIPT_HL, I"script", Translation::uniqued(), in_test); + HierarchyLocations::con(REQUIREMENTS_HL, I"requirements", Translation::uniqued(), in_test); + HierarchyLocations::ap(LOOP_OVER_SCOPES_HAP, local_grammar, I"loop_over_scope", I"_loop_over_scope"); + HierarchyLocations::ap(MISTAKES_HAP, local_grammar, I"mistake", I"_mistake"); + HierarchyLocations::ap(NAMED_ACTION_PATTERNS_HAP, local_grammar, I"named_action_pattern", I"_named_action_pattern"); + HierarchyLocations::ap(NAMED_TOKENS_HAP, local_grammar, I"named_token", I"_named_token"); + HierarchyLocations::ap(NOUN_FILTERS_HAP, local_grammar, I"noun_filter", I"_noun_filter"); + HierarchyLocations::ap(SCOPE_FILTERS_HAP, local_grammar, I"scope_filter", I"_scope_filter"); + HierarchyLocations::ap(PARSE_NAMES_HAP, local_grammar, I"parse_name", I"_parse_name"); + HierarchyLocations::ap(SLASH_TOKENS_HAP, local_grammar, I"slash_token", I"_slash_token"); + + location_requirement synoptic_grammar = HierarchyLocations::synoptic_submodule(grammar); + HierarchyLocations::con(VERB_DIRECTIVE_CREATURE_HL, I"VERB_DIRECTIVE_CREATURE", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_DIVIDER_HL, I"VERB_DIRECTIVE_DIVIDER", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_HELD_HL, I"VERB_DIRECTIVE_HELD", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_MULTI_HL, I"VERB_DIRECTIVE_MULTI", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_MULTIEXCEPT_HL, I"VERB_DIRECTIVE_MULTIEXCEPT", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_MULTIHELD_HL, I"VERB_DIRECTIVE_MULTIHELD", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_MULTIINSIDE_HL, I"VERB_DIRECTIVE_MULTIINSIDE", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_NOUN_HL, I"VERB_DIRECTIVE_NOUN", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_NUMBER_HL, I"VERB_DIRECTIVE_NUMBER", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_RESULT_HL, I"VERB_DIRECTIVE_RESULT", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_REVERSE_HL, I"VERB_DIRECTIVE_REVERSE", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_SLASH_HL, I"VERB_DIRECTIVE_SLASH", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_SPECIAL_HL, I"VERB_DIRECTIVE_SPECIAL", Translation::same(), synoptic_grammar); + HierarchyLocations::con(VERB_DIRECTIVE_TOPIC_HL, I"VERB_DIRECTIVE_TOPIC", Translation::same(), synoptic_grammar); + HierarchyLocations::func(TESTSCRIPTSUB_HL, I"action_fn", Translation::to(I"TestScriptSub"), synoptic_grammar); + HierarchyLocations::func(INTERNALTESTCASES_HL, I"run_tests_fn", Translation::to(I"InternalTestCases"), synoptic_grammar); + HierarchyLocations::ap(COMMANDS_HAP, synoptic_grammar, I"command", I"_command"); @h Instances. @e INSTANCES_HAP @ = - inter_symbol *instance_ptype = Packaging::register_ptype(I"_instance", TRUE); - HierarchyLocations::ap(INSTANCES_HAP, INSTANCES_SUBMODULE, I"instance", instance_ptype); + submodule_identity *instances = Packaging::register_submodule(I"instances"); + + location_requirement local_instances = HierarchyLocations::local_submodule(instances); + HierarchyLocations::ap(INSTANCES_HAP, local_instances, I"instance", I"_instance"); @h Interactive Fiction. @@ -453,19 +425,21 @@ void Hierarchy::establish(void) { @e DONE_INIS_HL @ = - package_request *synoptic_IF = Packaging::synoptic_resource(IF_SUBMODULE); - HierarchyLocations::make(DEFAULT_SCORING_SETTING_HL, I"DEFAULT_SCORING_SETTING", synoptic_IF); - HierarchyLocations::make(INITIAL_MAX_SCORE_HL, I"INITIAL_MAX_SCORE", synoptic_IF); - HierarchyLocations::make(NO_DIRECTIONS_HL, I"No_Directions", synoptic_IF); - HierarchyLocations::make_function(SHOWSCENESTATUS_HL, I"show_scene_status_fn", I"ShowSceneStatus", synoptic_IF); - HierarchyLocations::make_function(DETECTSCENECHANGE_HL, I"detect_scene_change_fn", I"DetectSceneChange", synoptic_IF); - HierarchyLocations::make(MAP_STORAGE_HL, I"Map_Storage", synoptic_IF); - HierarchyLocations::make(INITIALSITUATION_HL, I"InitialSituation", synoptic_IF); - HierarchyLocations::make(PLAYER_OBJECT_INIS_HL, I"PLAYER_OBJECT_INIS", synoptic_IF); - HierarchyLocations::make(START_OBJECT_INIS_HL, I"START_OBJECT_INIS", synoptic_IF); - HierarchyLocations::make(START_ROOM_INIS_HL, I"START_ROOM_INIS", synoptic_IF); - HierarchyLocations::make(START_TIME_INIS_HL, I"START_TIME_INIS", synoptic_IF); - HierarchyLocations::make(DONE_INIS_HL, I"DONE_INIS", synoptic_IF); + submodule_identity *interactive_fiction = Packaging::register_submodule(I"interactive_fiction"); + + location_requirement synoptic_IF = HierarchyLocations::synoptic_submodule(interactive_fiction); + HierarchyLocations::con(DEFAULT_SCORING_SETTING_HL, I"DEFAULT_SCORING_SETTING", Translation::same(), synoptic_IF); + HierarchyLocations::con(INITIAL_MAX_SCORE_HL, I"INITIAL_MAX_SCORE", Translation::same(), synoptic_IF); + HierarchyLocations::con(NO_DIRECTIONS_HL, I"No_Directions", Translation::same(), synoptic_IF); + HierarchyLocations::func(SHOWSCENESTATUS_HL, I"show_scene_status_fn", Translation::to(I"ShowSceneStatus"), synoptic_IF); + HierarchyLocations::func(DETECTSCENECHANGE_HL, I"detect_scene_change_fn", Translation::to(I"DetectSceneChange"), synoptic_IF); + HierarchyLocations::con(MAP_STORAGE_HL, I"Map_Storage", Translation::same(), synoptic_IF); + HierarchyLocations::con(INITIALSITUATION_HL, I"InitialSituation", Translation::same(), synoptic_IF); + HierarchyLocations::con(PLAYER_OBJECT_INIS_HL, I"PLAYER_OBJECT_INIS", Translation::same(), synoptic_IF); + HierarchyLocations::con(START_OBJECT_INIS_HL, I"START_OBJECT_INIS", Translation::same(), synoptic_IF); + HierarchyLocations::con(START_ROOM_INIS_HL, I"START_ROOM_INIS", Translation::same(), synoptic_IF); + HierarchyLocations::con(START_TIME_INIS_HL, I"START_TIME_INIS", Translation::same(), synoptic_IF); + HierarchyLocations::con(DONE_INIS_HL, I"DONE_INIS", Translation::same(), synoptic_IF); @h Kinds. @@ -476,6 +450,10 @@ void Hierarchy::establish(void) { @e K_TYPELESS_STRING_HL @e KIND_HAP +@e DEFAULT_VALUE_HL +@e DECREMENT_FN_HL +@e INCREMENT_FN_HL +@e RANGER_FN_HL @e DEFAULTVALUEOFKOV_HL @e DEFAULTVALUEFINDER_HL @@ -489,53 +467,73 @@ void Hierarchy::establish(void) { @e BASE_KIND_HWM_HL @ = - package_request *generic_kinds = Packaging::generic_resource(KINDS_SUBMODULE); - HierarchyLocations::make(UNKNOWN_TY_HL, I"UNKNOWN_TY", generic_kinds); - HierarchyLocations::make(K_UNCHECKED_HL, I"K_unchecked", generic_kinds); - HierarchyLocations::make(K_UNCHECKED_FUNCTION_HL, I"K_unchecked_function", generic_kinds); - HierarchyLocations::make(K_TYPELESS_INT_HL, I"K_typeless_int", generic_kinds); - HierarchyLocations::make(K_TYPELESS_STRING_HL, I"K_typeless_string", generic_kinds); + submodule_identity *kinds = Packaging::register_submodule(I"kinds"); - inter_symbol *kind_ptype = Packaging::register_ptype(I"_kind", TRUE); - HierarchyLocations::ap(KIND_HAP, KINDS_SUBMODULE, I"kind", kind_ptype); + location_requirement generic_kinds = HierarchyLocations::generic_submodule(kinds); + HierarchyLocations::con(UNKNOWN_TY_HL, I"UNKNOWN_TY", Translation::same(), generic_kinds); + HierarchyLocations::con(K_UNCHECKED_HL, I"K_unchecked", Translation::same(), generic_kinds); + HierarchyLocations::con(K_UNCHECKED_FUNCTION_HL, I"K_unchecked_function", Translation::same(), generic_kinds); + HierarchyLocations::con(K_TYPELESS_INT_HL, I"K_typeless_int", Translation::same(), generic_kinds); + HierarchyLocations::con(K_TYPELESS_STRING_HL, I"K_typeless_string", Translation::same(), generic_kinds); - package_request *synoptic_kinds = Packaging::synoptic_resource(KINDS_SUBMODULE); - HierarchyLocations::make(BASE_KIND_HWM_HL, I"BASE_KIND_HWM", synoptic_kinds); - HierarchyLocations::make_function(DEFAULTVALUEOFKOV_HL, I"defaultvalue_fn", I"DefaultValueOfKOV", synoptic_kinds); - HierarchyLocations::make_function(DEFAULTVALUEFINDER_HL, I"defaultvaluefinder_fn", I"DefaultValueFinder", synoptic_kinds); - HierarchyLocations::make_function(PRINTKINDVALUEPAIR_HL, I"printkindvaluepair_fn", I"PrintKindValuePair", synoptic_kinds); - HierarchyLocations::make_function(KOVCOMPARISONFUNCTION_HL, I"comparison_fn", I"KOVComparisonFunction", synoptic_kinds); - HierarchyLocations::make_function(KOVDOMAINSIZE_HL, I"domainsize_fn", I"KOVDomainSize", synoptic_kinds); - HierarchyLocations::make_function(KOVISBLOCKVALUE_HL, I"blockvalue_fn", I"KOVIsBlockValue", synoptic_kinds); - HierarchyLocations::make_function(I7_KIND_NAME_HL, I"printkindname_fn", I"I7_Kind_Name", synoptic_kinds); - HierarchyLocations::make_function(KOVSUPPORTFUNCTION_HL, I"support_fn", I"KOVSupportFunction", synoptic_kinds); - HierarchyLocations::make_function(SHOWMEDETAILS_HL, I"showmedetails_fn", I"ShowMeDetails", synoptic_kinds); + location_requirement local_kinds = HierarchyLocations::local_submodule(kinds); + HierarchyLocations::ap(KIND_HAP, local_kinds, I"kind", I"_kind"); + location_requirement in_kind = HierarchyLocations::any_package_of_type(I"_kind"); + HierarchyLocations::con(DEFAULT_VALUE_HL, I"default_value", Translation::uniqued(), in_kind); + HierarchyLocations::con(DECREMENT_FN_HL, I"decrement_fn", Translation::uniqued(), in_kind); + HierarchyLocations::con(INCREMENT_FN_HL, I"increment_fn", Translation::uniqued(), in_kind); + HierarchyLocations::con(RANGER_FN_HL, I"ranger_fn", Translation::uniqued(), in_kind); + + location_requirement synoptic_kinds = HierarchyLocations::synoptic_submodule(kinds); + HierarchyLocations::con(BASE_KIND_HWM_HL, I"BASE_KIND_HWM", Translation::same(), synoptic_kinds); + HierarchyLocations::func(DEFAULTVALUEOFKOV_HL, I"defaultvalue_fn", Translation::to(I"DefaultValueOfKOV"), synoptic_kinds); + HierarchyLocations::func(DEFAULTVALUEFINDER_HL, I"defaultvaluefinder_fn", Translation::to(I"DefaultValueFinder"), synoptic_kinds); + HierarchyLocations::func(PRINTKINDVALUEPAIR_HL, I"printkindvaluepair_fn", Translation::to(I"PrintKindValuePair"), synoptic_kinds); + HierarchyLocations::func(KOVCOMPARISONFUNCTION_HL, I"comparison_fn", Translation::to(I"KOVComparisonFunction"), synoptic_kinds); + HierarchyLocations::func(KOVDOMAINSIZE_HL, I"domainsize_fn", Translation::to(I"KOVDomainSize"), synoptic_kinds); + HierarchyLocations::func(KOVISBLOCKVALUE_HL, I"blockvalue_fn", Translation::to(I"KOVIsBlockValue"), synoptic_kinds); + HierarchyLocations::func(I7_KIND_NAME_HL, I"printkindname_fn", Translation::to(I"I7_Kind_Name"), synoptic_kinds); + HierarchyLocations::func(KOVSUPPORTFUNCTION_HL, I"support_fn", Translation::to(I"KOVSupportFunction"), synoptic_kinds); + HierarchyLocations::func(SHOWMEDETAILS_HL, I"showmedetails_fn", Translation::to(I"ShowMeDetails"), synoptic_kinds); + home_for_weak_type_IDs = synoptic_kinds; @h Listing. @e LISTS_TOGETHER_HAP +@e LIST_TOGETHER_ARRAY_HL @ = - inter_symbol *list_together_ptype = Packaging::register_ptype(I"_list_together", TRUE); - HierarchyLocations::ap(LISTS_TOGETHER_HAP, LISTING_SUBMODULE, I"list_together", list_together_ptype); + submodule_identity *listing = Packaging::register_submodule(I"listing"); + + location_requirement local_listing = HierarchyLocations::local_submodule(listing); + HierarchyLocations::ap(LISTS_TOGETHER_HAP, local_listing, I"list_together", I"_list_together"); + location_requirement in_list_together = HierarchyLocations::any_package_of_type(I"_list_together"); + HierarchyLocations::con(LIST_TOGETHER_ARRAY_HL, I"list_together_array", Translation::uniqued(), in_list_together); @h Phrases. @e CLOSURES_HAP +@e CLOSURE_DATA_HL @e PHRASES_HAP @e REQUESTS_HAP @e LABEL_STORAGES_HAP +@e LABEL_ASSOCIATED_STORAGE_HL @ = - inter_symbol *to_phrase_ptype = Packaging::register_ptype(I"_phrase", TRUE); - HierarchyLocations::ap(PHRASES_HAP, PHRASES_SUBMODULE, I"phrase", to_phrase_ptype); - inter_symbol *closure_ptype = Packaging::register_ptype(I"_closure", TRUE); - HierarchyLocations::ap_within(CLOSURES_HAP, to_phrase_ptype, I"closure", closure_ptype); - inter_symbol *request_ptype = Packaging::register_ptype(I"_request", TRUE); - HierarchyLocations::ap_within(REQUESTS_HAP, to_phrase_ptype, I"request", request_ptype); + submodule_identity *phrases = Packaging::register_submodule(I"phrases"); - inter_symbol *label_storage_ptype = Packaging::register_ptype(I"_label_storage", TRUE); - HierarchyLocations::synoptic_ap(LABEL_STORAGES_HAP, PHRASES_SUBMODULE, I"label_associated_storage", label_storage_ptype); + location_requirement local_phrases = HierarchyLocations::local_submodule(phrases); + HierarchyLocations::ap(PHRASES_HAP, local_phrases, I"phrase", I"_to_phrase"); + location_requirement in_to_phrase = HierarchyLocations::any_package_of_type(I"_to_phrase"); + HierarchyLocations::ap(CLOSURES_HAP, in_to_phrase, I"closure", I"_closure"); + location_requirement in_closure = HierarchyLocations::any_package_of_type(I"_closure"); + HierarchyLocations::con(CLOSURE_DATA_HL, I"closure_data", Translation::uniqued(), in_closure); + HierarchyLocations::ap(REQUESTS_HAP, in_to_phrase, I"request", I"_request"); + + location_requirement synoptic_phrases = HierarchyLocations::synoptic_submodule(phrases); + HierarchyLocations::ap(LABEL_STORAGES_HAP, synoptic_phrases, I"label_storage", I"_label_storage"); + location_requirement in_label_storage = HierarchyLocations::any_package_of_type(I"_label_storage"); + HierarchyLocations::con(LABEL_ASSOCIATED_STORAGE_HL, I"label_associated_storage", Translation::uniqued(), in_label_storage); @h Properties. @@ -544,11 +542,13 @@ void Hierarchy::establish(void) { @e CCOUNT_PROPERTY_HL @ = - inter_symbol *property_ptype = Packaging::register_ptype(I"_property", TRUE); - HierarchyLocations::ap(PROPERTIES_HAP, PROPERTIES_SUBMODULE, I"property", property_ptype); + submodule_identity *properties = Packaging::register_submodule(I"properties"); - package_request *synoptic_props = Packaging::synoptic_resource(PROPERTIES_SUBMODULE); - HierarchyLocations::make(CCOUNT_PROPERTY_HL, I"CCOUNT_PROPERTY", synoptic_props); + location_requirement local_properties = HierarchyLocations::local_submodule(properties); + HierarchyLocations::ap(PROPERTIES_HAP, local_properties, I"property", I"_property"); + + location_requirement synoptic_props = HierarchyLocations::synoptic_submodule(properties); + HierarchyLocations::con(CCOUNT_PROPERTY_HL, I"CCOUNT_PROPERTY", Translation::same(), synoptic_props); @h Relations. @@ -571,6 +571,8 @@ void Hierarchy::establish(void) { @e MEANINGLESS_RR_HL @e RELATIONS_HAP +@e BITMAP_HL +@e ROUTE_CACHE_HL @e CREATEDYNAMICRELATIONS_HL @e CCOUNT_BINARY_PREDICATE_HL @@ -578,33 +580,38 @@ void Hierarchy::establish(void) { @e RPROPERTY_HL @ = - package_request *generic_rels = Packaging::generic_resource(RELATIONS_SUBMODULE); - HierarchyLocations::make(RELS_ASSERT_FALSE_HL, I"RELS_ASSERT_FALSE", generic_rels); - HierarchyLocations::make(RELS_ASSERT_TRUE_HL, I"RELS_ASSERT_TRUE", generic_rels); - HierarchyLocations::make(RELS_EQUIVALENCE_HL, I"RELS_EQUIVALENCE", generic_rels); - HierarchyLocations::make(RELS_LIST_HL, I"RELS_LIST", generic_rels); - HierarchyLocations::make(RELS_LOOKUP_ALL_X_HL, I"RELS_LOOKUP_ALL_X", generic_rels); - HierarchyLocations::make(RELS_LOOKUP_ALL_Y_HL, I"RELS_LOOKUP_ALL_Y", generic_rels); - HierarchyLocations::make(RELS_LOOKUP_ANY_HL, I"RELS_LOOKUP_ANY", generic_rels); - HierarchyLocations::make(RELS_ROUTE_FIND_COUNT_HL, I"RELS_ROUTE_FIND_COUNT", generic_rels); - HierarchyLocations::make(RELS_ROUTE_FIND_HL, I"RELS_ROUTE_FIND", generic_rels); - HierarchyLocations::make(RELS_SHOW_HL, I"RELS_SHOW", generic_rels); - HierarchyLocations::make(RELS_SYMMETRIC_HL, I"RELS_SYMMETRIC", generic_rels); - HierarchyLocations::make(RELS_TEST_HL, I"RELS_TEST", generic_rels); - HierarchyLocations::make(RELS_X_UNIQUE_HL, I"RELS_X_UNIQUE", generic_rels); - HierarchyLocations::make(RELS_Y_UNIQUE_HL, I"RELS_Y_UNIQUE", generic_rels); - HierarchyLocations::make(REL_BLOCK_HEADER_HL, I"REL_BLOCK_HEADER", generic_rels); - HierarchyLocations::make(TTF_SUM_HL, I"TTF_sum", generic_rels); - HierarchyLocations::make(MEANINGLESS_RR_HL, I"MEANINGLESS_RR", generic_rels); + submodule_identity *relations = Packaging::register_submodule(I"relations"); - inter_symbol *relation_ptype = Packaging::register_ptype(I"_relation", TRUE); - HierarchyLocations::ap(RELATIONS_HAP, RELATIONS_SUBMODULE, I"relation", relation_ptype); + location_requirement generic_rels = HierarchyLocations::generic_submodule(relations); + HierarchyLocations::con(RELS_ASSERT_FALSE_HL, I"RELS_ASSERT_FALSE", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_ASSERT_TRUE_HL, I"RELS_ASSERT_TRUE", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_EQUIVALENCE_HL, I"RELS_EQUIVALENCE", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_LIST_HL, I"RELS_LIST", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_LOOKUP_ALL_X_HL, I"RELS_LOOKUP_ALL_X", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_LOOKUP_ALL_Y_HL, I"RELS_LOOKUP_ALL_Y", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_LOOKUP_ANY_HL, I"RELS_LOOKUP_ANY", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_ROUTE_FIND_COUNT_HL, I"RELS_ROUTE_FIND_COUNT", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_ROUTE_FIND_HL, I"RELS_ROUTE_FIND", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_SHOW_HL, I"RELS_SHOW", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_SYMMETRIC_HL, I"RELS_SYMMETRIC", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_TEST_HL, I"RELS_TEST", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_X_UNIQUE_HL, I"RELS_X_UNIQUE", Translation::same(), generic_rels); + HierarchyLocations::con(RELS_Y_UNIQUE_HL, I"RELS_Y_UNIQUE", Translation::same(), generic_rels); + HierarchyLocations::con(REL_BLOCK_HEADER_HL, I"REL_BLOCK_HEADER", Translation::same(), generic_rels); + HierarchyLocations::con(TTF_SUM_HL, I"TTF_sum", Translation::same(), generic_rels); + HierarchyLocations::con(MEANINGLESS_RR_HL, I"MEANINGLESS_RR", Translation::same(), generic_rels); - package_request *synoptic_rels = Packaging::synoptic_resource(RELATIONS_SUBMODULE); - HierarchyLocations::make_function(CREATEDYNAMICRELATIONS_HL, I"creator_fn", I"CreateDynamicRelations", synoptic_rels); - HierarchyLocations::make(CCOUNT_BINARY_PREDICATE_HL, I"CCOUNT_BINARY_PREDICATE", synoptic_rels); - HierarchyLocations::make_function(ITERATERELATIONS_HL, I"iterator_fn", I"IterateRelations", synoptic_rels); - HierarchyLocations::make_function(RPROPERTY_HL, I"property_fn", I"RProperty", synoptic_rels); + location_requirement local_rels = HierarchyLocations::local_submodule(relations); + HierarchyLocations::ap(RELATIONS_HAP, local_rels, I"relation", I"_relation"); + location_requirement in_relation = HierarchyLocations::any_package_of_type(I"_relation"); + HierarchyLocations::con(BITMAP_HL, I"as_constant", Translation::uniqued(), in_relation); + HierarchyLocations::con(ROUTE_CACHE_HL, I"route_cache", Translation::uniqued(), in_relation); + + location_requirement synoptic_rels = HierarchyLocations::synoptic_submodule(relations); + HierarchyLocations::func(CREATEDYNAMICRELATIONS_HL, I"creator_fn", Translation::to(I"CreateDynamicRelations"), synoptic_rels); + HierarchyLocations::con(CCOUNT_BINARY_PREDICATE_HL, I"CCOUNT_BINARY_PREDICATE", Translation::same(), synoptic_rels); + HierarchyLocations::func(ITERATERELATIONS_HL, I"iterator_fn", Translation::to(I"IterateRelations"), synoptic_rels); + HierarchyLocations::func(RPROPERTY_HL, I"property_fn", Translation::to(I"RProperty"), synoptic_rels); @h Rulebooks. @@ -620,64 +627,85 @@ void Hierarchy::establish(void) { @e RULEBOOKNAMES_HL @ = - package_request *generic_rulebooks = Packaging::generic_resource(RULEBOOKS_SUBMODULE); - HierarchyLocations::make_function(EMPTY_RULEBOOK_INAME_HL, I"empty_fn", I"EMPTY_RULEBOOK", generic_rulebooks); + submodule_identity *rulebooks = Packaging::register_submodule(I"rulebooks"); - inter_symbol *outcome_ptype = Packaging::register_ptype(I"_outcome", TRUE); - HierarchyLocations::ap(OUTCOMES_HAP, RULEBOOKS_SUBMODULE, I"rulebook_outcome", outcome_ptype); - inter_symbol *rulebook_ptype = Packaging::register_ptype(I"_rulebook", TRUE); - HierarchyLocations::ap(RULEBOOKS_HAP, RULEBOOKS_SUBMODULE, I"rulebook", rulebook_ptype); + location_requirement generic_rulebooks = HierarchyLocations::generic_submodule(rulebooks); + HierarchyLocations::func(EMPTY_RULEBOOK_INAME_HL, I"empty_fn", Translation::to(I"EMPTY_RULEBOOK"), generic_rulebooks); - package_request *synoptic_rulebooks = Packaging::synoptic_resource(RULEBOOKS_SUBMODULE); - HierarchyLocations::make(NUMBER_RULEBOOKS_CREATED_HL, I"NUMBER_RULEBOOKS_CREATED", synoptic_rulebooks); - HierarchyLocations::make(RULEBOOK_VAR_CREATORS_HL, I"rulebook_var_creators", synoptic_rulebooks); - HierarchyLocations::make_function(SLOW_LOOKUP_HL, I"slow_lookup_fn", I"MStack_GetRBVarCreator", synoptic_rulebooks); - HierarchyLocations::make(RULEBOOKS_ARRAY_HL, I"rulebooks_array", synoptic_rulebooks); - HierarchyLocations::make(RULEBOOKNAMES_HL, I"RulebookNames", synoptic_rulebooks); + location_requirement local_rulebooks = HierarchyLocations::local_submodule(rulebooks); + HierarchyLocations::ap(OUTCOMES_HAP, local_rulebooks, I"rulebook_outcome", I"_outcome"); + HierarchyLocations::ap(RULEBOOKS_HAP, local_rulebooks, I"rulebook", I"_rulebook"); + + location_requirement synoptic_rulebooks = HierarchyLocations::synoptic_submodule(rulebooks); + HierarchyLocations::con(NUMBER_RULEBOOKS_CREATED_HL, I"NUMBER_RULEBOOKS_CREATED", Translation::same(), synoptic_rulebooks); + HierarchyLocations::con(RULEBOOK_VAR_CREATORS_HL, I"rulebook_var_creators", Translation::same(), synoptic_rulebooks); + HierarchyLocations::func(SLOW_LOOKUP_HL, I"slow_lookup_fn", Translation::to(I"MStack_GetRBVarCreator"), synoptic_rulebooks); + HierarchyLocations::con(RULEBOOKS_ARRAY_HL, I"rulebooks_array", Translation::same(), synoptic_rulebooks); + HierarchyLocations::con(RULEBOOKNAMES_HL, I"RulebookNames", Translation::same(), synoptic_rulebooks); @h Rules. @e RULES_HAP +@e EXTERIOR_RULE_HL @e RESPONSES_HAP +@e AS_CONSTANT_HL +@e AS_BLOCK_CONSTANT_HL +@e LAUNCHER_HL @e RULEPRINTINGRULE_HL @e RESPONSEDIVISIONS_HL @ = - inter_symbol *rule_ptype = Packaging::register_ptype(I"_rule", TRUE); - HierarchyLocations::ap(RULES_HAP, RULES_SUBMODULE, I"rule", rule_ptype); - inter_symbol *response_ptype = Packaging::register_ptype(I"_response", TRUE); - HierarchyLocations::ap_within(RESPONSES_HAP, rule_ptype, I"response", response_ptype); + submodule_identity *rules = Packaging::register_submodule(I"rules"); - package_request *synoptic_rules = Packaging::synoptic_resource(RULES_SUBMODULE); - HierarchyLocations::make(RESPONSEDIVISIONS_HL, I"ResponseDivisions", synoptic_rules); - HierarchyLocations::make_function(RULEPRINTINGRULE_HL, I"print_fn", I"RulePrintingRule", synoptic_rules); + location_requirement local_rules = HierarchyLocations::local_submodule(rules); + HierarchyLocations::ap(RULES_HAP, local_rules, I"rule", I"_rule"); + location_requirement in_rule = HierarchyLocations::any_package_of_type(I"_rule"); + HierarchyLocations::con(EXTERIOR_RULE_HL, I"exterior_rule", Translation::uniqued(), in_rule); + HierarchyLocations::ap(RESPONSES_HAP, in_rule, I"response", I"_response"); + location_requirement in_response = HierarchyLocations::any_package_of_type(I"_response"); + HierarchyLocations::con(AS_CONSTANT_HL, I"as_constant", Translation::uniqued(), in_response); + HierarchyLocations::con(AS_BLOCK_CONSTANT_HL, I"as_block_constant", Translation::uniqued(), in_response); + HierarchyLocations::func(LAUNCHER_HL, I"launcher", Translation::uniqued(), in_response); + + location_requirement synoptic_rules = HierarchyLocations::synoptic_submodule(rules); + HierarchyLocations::con(RESPONSEDIVISIONS_HL, I"ResponseDivisions", Translation::same(), synoptic_rules); + HierarchyLocations::func(RULEPRINTINGRULE_HL, I"print_fn", Translation::to(I"RulePrintingRule"), synoptic_rules); @h Tables. @e TABLES_HAP +@e TABLE_DATA_HL @e TABLE_COLUMNS_HAP +@e COLUMN_DATA_HL @e TC_KOV_HL @e TB_BLANKS_HL @ = - inter_symbol *table_ptype = Packaging::register_ptype(I"_table", TRUE); - HierarchyLocations::ap(TABLES_HAP, TABLES_SUBMODULE, I"table", table_ptype); - inter_symbol *table_column_ptype = Packaging::register_ptype(I"_table_column", TRUE); - HierarchyLocations::ap_within(TABLE_COLUMNS_HAP, table_ptype, I"table_column", table_column_ptype); + submodule_identity *tables = Packaging::register_submodule(I"tables"); - package_request *synoptic_tables = Packaging::synoptic_resource(TABLES_SUBMODULE); - HierarchyLocations::make(TB_BLANKS_HL, I"TB_Blanks", synoptic_tables); - HierarchyLocations::make_function(TC_KOV_HL, I"weak_kind_ID_of_column_entry_fn", I"TC_KOV", synoptic_tables); + location_requirement local_tables = HierarchyLocations::local_submodule(tables); + HierarchyLocations::ap(TABLES_HAP, local_tables, I"table", I"_table"); + location_requirement in_table = HierarchyLocations::any_package_of_type(I"_table"); + HierarchyLocations::con(TABLE_DATA_HL, I"table_data", Translation::uniqued(), in_table); + HierarchyLocations::ap(TABLE_COLUMNS_HAP, in_table, I"table_column", I"_table_column"); + location_requirement in_table_column = HierarchyLocations::any_package_of_type(I"_table_column"); + HierarchyLocations::con(COLUMN_DATA_HL, I"column_data", Translation::uniqued(), in_table_column); + + location_requirement synoptic_tables = HierarchyLocations::synoptic_submodule(tables); + HierarchyLocations::con(TB_BLANKS_HL, I"TB_Blanks", Translation::same(), synoptic_tables); + HierarchyLocations::func(TC_KOV_HL, I"weak_kind_ID_of_column_entry_fn", Translation::to(I"TC_KOV"), synoptic_tables); @h Variables. @e VARIABLES_HAP @ = - inter_symbol *variable_ptype = Packaging::register_ptype(I"_variable", TRUE); - HierarchyLocations::ap(VARIABLES_HAP, VARIABLES_SUBMODULE, I"variable", variable_ptype); + submodule_identity *variables = Packaging::register_submodule(I"variables"); + + location_requirement local_variables = HierarchyLocations::local_submodule(variables); + HierarchyLocations::ap(VARIABLES_HAP, local_variables, I"variable", I"_variable"); @ @@ -709,28 +737,38 @@ void Hierarchy::establish(void) { @ @ = - HierarchyLocations::make_in_exotic(OBJECT_HL, I"Object", K_OBJECT_XPACKAGE); - HierarchyLocations::make_in_exotic(NOTHING_HL, I"nothing", K_OBJECT_XPACKAGE); - HierarchyLocations::make_in_exotic(CAPSHORTNAME_HL, I"cap_short_name", K_OBJECT_XPACKAGE); + location_requirement in_K_object = HierarchyLocations::this_exotic_package(K_OBJECT_XPACKAGE); + HierarchyLocations::con(OBJECT_HL, I"Object", Translation::same(), in_K_object); + HierarchyLocations::con(NOTHING_HL, I"nothing", Translation::same(), in_K_object); + HierarchyLocations::con(CAPSHORTNAME_HL, I"cap_short_name", Translation::same(), in_K_object); - HierarchyLocations::make_function_in_exotic(DECIMAL_TOKEN_INNER_HL, I"gpr_fn", I"DECIMAL_TOKEN_INNER", K_NUMBER_XPACKAGE); + location_requirement in_K_number = HierarchyLocations::this_exotic_package(K_NUMBER_XPACKAGE); + HierarchyLocations::func(DECIMAL_TOKEN_INNER_HL, I"gpr_fn", Translation::to(I"DECIMAL_TOKEN_INNER"), in_K_number); - HierarchyLocations::make_function_in_exotic(TIME_TOKEN_INNER_HL, I"gpr_fn", I"TIME_TOKEN_INNER", K_TIME_XPACKAGE); + location_requirement in_K_time = HierarchyLocations::this_exotic_package(K_TIME_XPACKAGE); + HierarchyLocations::func(TIME_TOKEN_INNER_HL, I"gpr_fn", Translation::to(I"TIME_TOKEN_INNER"), in_K_time); - HierarchyLocations::make_function_in_exotic(TRUTH_STATE_TOKEN_INNER_HL, I"gpr_fn", I"TRUTH_STATE_TOKEN_INNER", K_TRUTH_STATE_XPACKAGE); + location_requirement in_K_truth_state = HierarchyLocations::this_exotic_package(K_TRUTH_STATE_XPACKAGE); + HierarchyLocations::func(TRUTH_STATE_TOKEN_INNER_HL, I"gpr_fn", Translation::to(I"TRUTH_STATE_TOKEN_INNER"), in_K_truth_state); - HierarchyLocations::make_in_exotic(TABLEOFTABLES_HL, I"TableOfTables", K_TABLE_XPACKAGE); + location_requirement in_K_table = HierarchyLocations::this_exotic_package(K_TABLE_XPACKAGE); + HierarchyLocations::con(TABLEOFTABLES_HL, I"TableOfTables", Translation::same(), in_K_table); - HierarchyLocations::make_in_exotic(TABLEOFVERBS_HL, I"TableOfVerbs", K_VERB_XPACKAGE); + location_requirement in_K_verb = HierarchyLocations::this_exotic_package(K_VERB_XPACKAGE); + HierarchyLocations::con(TABLEOFVERBS_HL, I"TableOfVerbs", Translation::same(), in_K_verb); - HierarchyLocations::make_in_exotic(RESOURCEIDSOFFIGURES_HL, I"ResourceIDsOfFigures", K_FIGURE_NAME_XPACKAGE); + location_requirement in_K_figure_name = HierarchyLocations::this_exotic_package(K_FIGURE_NAME_XPACKAGE); + HierarchyLocations::con(RESOURCEIDSOFFIGURES_HL, I"ResourceIDsOfFigures", Translation::same(), in_K_figure_name); - HierarchyLocations::make_in_exotic(RESOURCEIDSOFSOUNDS_HL, I"ResourceIDsOfSounds", K_SOUND_NAME_XPACKAGE); + location_requirement in_K_sound_name = HierarchyLocations::this_exotic_package(K_SOUND_NAME_XPACKAGE); + HierarchyLocations::con(RESOURCEIDSOFSOUNDS_HL, I"ResourceIDsOfSounds", Translation::same(), in_K_sound_name); - HierarchyLocations::make_in_exotic(NO_USE_OPTIONS_HL, I"NO_USE_OPTIONS", K_USE_OPTION_XPACKAGE); - HierarchyLocations::make_function_in_exotic(TESTUSEOPTION_HL, I"test_fn", I"TestUseOption", K_USE_OPTION_XPACKAGE); + location_requirement in_K_use_option = HierarchyLocations::this_exotic_package(K_USE_OPTION_XPACKAGE); + HierarchyLocations::con(NO_USE_OPTIONS_HL, I"NO_USE_OPTIONS", Translation::same(), in_K_use_option); + HierarchyLocations::func(TESTUSEOPTION_HL, I"test_fn", Translation::to(I"TestUseOption"), in_K_use_option); - HierarchyLocations::make_function_in_exotic(COMMANDPROMPTTEXT_HL, I"command_prompt_text_fn", I"CommandPromptText", V_COMMAND_PROMPT_XPACKAGE); + location_requirement in_V_command_prompt = HierarchyLocations::this_exotic_package(V_COMMAND_PROMPT_XPACKAGE); + HierarchyLocations::func(COMMANDPROMPTTEXT_HL, I"command_prompt_text_fn", Translation::to(I"CommandPromptText"), in_V_command_prompt); @ @@ -969,240 +1007,240 @@ void Hierarchy::establish(void) { @e WORDLENGTH_HL @ = - package_request *template = Hierarchy::template(); - HierarchyLocations::make(ACT_REQUESTER_HL, I"act_requester", template); - HierarchyLocations::make(ACTION_HL, I"action", template); - HierarchyLocations::make(ACTIONCURRENTLYHAPPENINGFLAG_HL, I"ActionCurrentlyHappeningFlag", template); - HierarchyLocations::make(ACTOR_HL, I"actor", template); - HierarchyLocations::make(ACTOR_LOCATION_HL, I"actor_location", template); - HierarchyLocations::make(ADJUSTPARAGRAPHPOINT_HL, I"AdjustParagraphPoint", template); - HierarchyLocations::make(ALLOWINSHOWME_HL, I"AllowInShowme", template); - HierarchyLocations::make(ANIMATE_HL, I"animate", template); - HierarchyLocations::make(ARGUMENTTYPEFAILED_HL, I"ArgumentTypeFailed", template); - HierarchyLocations::make(ARTICLEDESCRIPTORS_HL, I"ArticleDescriptors", template); - HierarchyLocations::make(AUXF_MAGIC_VALUE_HL, I"AUXF_MAGIC_VALUE", template); - HierarchyLocations::make(AUXF_STATUS_IS_CLOSED_HL, I"AUXF_STATUS_IS_CLOSED", template); - HierarchyLocations::make(BLKVALUECOPY_HL, I"BlkValueCopy", template); - HierarchyLocations::make(BLKVALUECOPYAZ_HL, I"BlkValueCopyAZ", template); - HierarchyLocations::make(BLKVALUECREATE_HL, I"BlkValueCreate", template); - HierarchyLocations::make(BLKVALUECREATEONSTACK_HL, I"BlkValueCreateOnStack", template); - HierarchyLocations::make(BLKVALUEERROR_HL, I"BlkValueError", template); - HierarchyLocations::make(BLKVALUEFREE_HL, I"BlkValueFree", template); - HierarchyLocations::make(BLKVALUEFREEONSTACK_HL, I"BlkValueFreeOnStack", template); - HierarchyLocations::make(BLKVALUEWRITE_HL, I"BlkValueWrite", template); - HierarchyLocations::make(C_STYLE_HL, I"c_style", template); - HierarchyLocations::make(CHECKKINDRETURNED_HL, I"CheckKindReturned", template); - HierarchyLocations::make(CLEARPARAGRAPHING_HL, I"ClearParagraphing", template); - HierarchyLocations::make(COMPONENT_CHILD_HL, I"component_child", template); - HierarchyLocations::make(COMPONENT_PARENT_HL, I"component_parent", template); - HierarchyLocations::make(COMPONENT_SIBLING_HL, I"component_sibling", template); - HierarchyLocations::make(CONSTANT_PACKED_TEXT_STORAGE_HL, I"CONSTANT_PACKED_TEXT_STORAGE", template); - HierarchyLocations::make(CONSTANT_PERISHABLE_TEXT_STORAGE_HL, I"CONSTANT_PERISHABLE_TEXT_STORAGE", template); - HierarchyLocations::make(CONSULT_FROM_HL, I"consult_from", template); - HierarchyLocations::make(CONSULT_WORDS_HL, I"consult_words", template); - HierarchyLocations::make(CONTAINER_HL, I"container", template); - HierarchyLocations::make(CUBEROOT_HL, I"CubeRoot", template); - HierarchyLocations::make(DA_NAME_HL, I"DA_Name", template); - HierarchyLocations::make(DB_RULE_HL, I"DB_Rule", template); - HierarchyLocations::make(DEADFLAG_HL, I"deadflag", template); - HierarchyLocations::make(DEBUG_RULES_HL, I"debug_rules", template); - HierarchyLocations::make(DEBUG_SCENES_HL, I"debug_scenes", template); - HierarchyLocations::make(DECIMALNUMBER_HL, I"DecimalNumber", template); - HierarchyLocations::make(DEFERRED_CALLING_LIST_HL, I"deferred_calling_list", template); - HierarchyLocations::make(DETECTPLURALWORD_HL, I"DetectPluralWord", template); - HierarchyLocations::make(DIGITTOVALUE_HL, I"DigitToValue", template); - HierarchyLocations::make(DIVIDEPARAGRAPHPOINT_HL, I"DivideParagraphPoint", template); - HierarchyLocations::make(DOUBLEHASHSETRELATIONHANDLER_HL, I"DoubleHashSetRelationHandler", template); - HierarchyLocations::make(DURINGSCENEMATCHING_HL, I"DuringSceneMatching", template); - HierarchyLocations::make(ELEMENTARY_TT_HL, I"ELEMENTARY_TT", template); - HierarchyLocations::make(EMPTY_TABLE_HL, I"TheEmptyTable", template); - HierarchyLocations::make(EMPTY_TEXT_PACKED_HL, I"EMPTY_TEXT_PACKED", template); - HierarchyLocations::make(EMPTY_TEXT_VALUE_HL, I"EMPTY_TEXT_VALUE", template); - HierarchyLocations::make(EMPTYRELATIONHANDLER_HL, I"EmptyRelationHandler", template); - HierarchyLocations::make(ENGLISH_BIT_HL, I"ENGLISH_BIT", template); - HierarchyLocations::make(ETYPE_HL, I"etype", template); - HierarchyLocations::make(EXISTSTABLELOOKUPCORR_HL, I"ExistsTableLookUpCorr", template); - HierarchyLocations::make(EXISTSTABLELOOKUPENTRY_HL, I"ExistsTableLookUpEntry", template); - HierarchyLocations::make(EXISTSTABLEROWCORR_HL, I"ExistsTableRowCorr", template); - HierarchyLocations::make(FLOATPARSE_HL, I"FloatParse", template); - HierarchyLocations::make(FOLLOWRULEBOOK_HL, I"FollowRulebook", template); - HierarchyLocations::make(formal_par0_HL, I"formal_par0", template); - HierarchyLocations::make(formal_par1_HL, I"formal_par1", template); - HierarchyLocations::make(formal_par2_HL, I"formal_par2", template); - HierarchyLocations::make(formal_par3_HL, I"formal_par3", template); - HierarchyLocations::make(formal_par4_HL, I"formal_par4", template); - HierarchyLocations::make(formal_par5_HL, I"formal_par5", template); - HierarchyLocations::make(formal_par6_HL, I"formal_par6", template); - HierarchyLocations::make(formal_par7_HL, I"formal_par7", template); - HierarchyLocations::make(FORMAL_RV_HL, I"formal_rv", template); - HierarchyLocations::make(FOUND_EVERYWHERE_HL, I"FoundEverywhere", template); - HierarchyLocations::make(GENERATERANDOMNUMBER_HL, I"GenerateRandomNumber", template); - HierarchyLocations::make(GENERICVERBSUB_HL, I"GenericVerbSub", template); - HierarchyLocations::make(GETGNAOFOBJECT_HL, I"GetGNAOfObject", template); - HierarchyLocations::make(GPR_FAIL_HL, I"GPR_FAIL", template); - HierarchyLocations::make(GPR_NUMBER_HL, I"GPR_NUMBER", template); - HierarchyLocations::make(GPR_PREPOSITION_HL, I"GPR_PREPOSITION", template); - HierarchyLocations::make(GPR_TT_HL, I"GPR_TT", template); - HierarchyLocations::make(GPROPERTY_HL, I"GProperty", template); - HierarchyLocations::make(HASHLISTRELATIONHANDLER_HL, I"HashListRelationHandler", template); - HierarchyLocations::make(I7SFRAME_HL, I"I7SFRAME", template); - HierarchyLocations::make(INDENT_BIT_HL, I"INDENT_BIT", template); - HierarchyLocations::make(INP1_HL, I"inp1", template); - HierarchyLocations::make(INP2_HL, I"inp2", template); - HierarchyLocations::make(INTEGERDIVIDE_HL, I"IntegerDivide", template); - HierarchyLocations::make(INTEGERREMAINDER_HL, I"IntegerRemainder", template); - HierarchyLocations::make(INVENTORY_STAGE_HL, I"inventory_stage", template); - HierarchyLocations::make(KEEP_SILENT_HL, I"keep_silent", template); - HierarchyLocations::make(KINDATOMIC_HL, I"KindAtomic", template); - HierarchyLocations::make(LATEST_RULE_RESULT_HL, I"latest_rule_result", template); - HierarchyLocations::make(LIST_ITEM_BASE_HL, I"LIST_ITEM_BASE", template); - HierarchyLocations::make(LIST_ITEM_KOV_F_HL, I"LIST_ITEM_KOV_F", template); - HierarchyLocations::make(LIST_OF_TY_DESC_HL, I"LIST_OF_TY_Desc", template); - HierarchyLocations::make(LIST_OF_TY_GETITEM_HL, I"LIST_OF_TY_GetItem", template); - HierarchyLocations::make(LIST_OF_TY_GETLENGTH_HL, I"LIST_OF_TY_GetLength", template); - HierarchyLocations::make(LIST_OF_TY_INSERTITEM_HL, I"LIST_OF_TY_InsertItem", template); - HierarchyLocations::make(LIST_OF_TY_SAY_HL, I"LIST_OF_TY_Say", template); - HierarchyLocations::make(LIST_OF_TY_SETLENGTH_HL, I"LIST_OF_TY_SetLength", template); - HierarchyLocations::make(LOCALPARKING_HL, I"LocalParking", template); - HierarchyLocations::make(LOCATION_HL, I"location", template); - HierarchyLocations::make(LOCATIONOF_HL, I"LocationOf", template); - HierarchyLocations::make(LOOPOVERSCOPE_HL, I"LoopOverScope", template); - HierarchyLocations::make(LOS_RV_HL, I"los_rv", template); - HierarchyLocations::make(MSTACK_HL, I"MStack", template); - HierarchyLocations::make(MSTVO_HL, I"MstVO", template); - HierarchyLocations::make(MSTVON_HL, I"MstVON", template); - HierarchyLocations::make(NAME_HL, I"name", template); - HierarchyLocations::make(NEWLINE_BIT_HL, I"NEWLINE_BIT", template); - HierarchyLocations::make(NEXTBEST_ETYPE_HL, I"nextbest_etype", template); - HierarchyLocations::make(NEXTWORDSTOPPED_HL, I"NextWordStopped", template); - HierarchyLocations::make(NOARTICLE_BIT_HL, I"NOARTICLE_BIT", template); - HierarchyLocations::make(NOTINCONTEXTPE_HL, I"NOTINCONTEXT_PE", template); - HierarchyLocations::make(NOUN_HL, I"noun", template); - HierarchyLocations::make(NUMBER_TY_ABS_HL, I"NUMBER_TY_Abs", template); - HierarchyLocations::make(NUMBER_TY_TO_REAL_NUMBER_TY_HL, I"NUMBER_TY_to_REAL_NUMBER_TY", template); - HierarchyLocations::make(NUMBER_TY_TO_TIME_TY_HL, I"NUMBER_TY_to_TIME_TY", template); - HierarchyLocations::make(OTOVRELROUTETO_HL, I"OtoVRelRouteTo", template); - HierarchyLocations::make(PACKED_TEXT_STORAGE_HL, I"PACKED_TEXT_STORAGE", template); - HierarchyLocations::make(PARACONTENT_HL, I"ParaContent", template); - HierarchyLocations::make(PARAMETER_VALUE_HL, I"parameter_value", template); - HierarchyLocations::make(PARSED_NUMBER_HL, I"parsed_number", template); - HierarchyLocations::make(PARSER_ACTION_HL, I"parser_action", template); - HierarchyLocations::make(PARSER_ONE_HL, I"parser_one", template); - HierarchyLocations::make(PARSER_TRACE_HL, I"parser_trace", template); - HierarchyLocations::make(PARSER_TWO_HL, I"parser_two", template); - HierarchyLocations::make(PARSERERROR_HL, I"ParserError", template); - HierarchyLocations::make(PARSETOKENSTOPPED_HL, I"ParseTokenStopped", template); - HierarchyLocations::make(PAST_CHRONOLOGICAL_RECORD_HL, I"past_chronological_record", template); - HierarchyLocations::make(PLACEINSCOPE_HL, I"PlaceInScope", template); - HierarchyLocations::make(PLAYER_HL, I"player", template); - HierarchyLocations::make(PNTOVP_HL, I"PNToVP", template); - HierarchyLocations::make(PRESENT_CHRONOLOGICAL_RECORD_HL, I"present_chronological_record", template); - HierarchyLocations::make(PRINTORRUN_HL, I"PrintOrRun", template); - HierarchyLocations::make(PRIOR_NAMED_LIST_HL, I"prior_named_list", template); - HierarchyLocations::make(PRIOR_NAMED_LIST_GENDER_HL, I"prior_named_list_gender", template); - HierarchyLocations::make(PRIOR_NAMED_NOUN_HL, I"prior_named_noun", template); - HierarchyLocations::make(PROPERTY_LOOP_SIGN_HL, I"property_loop_sign", template); - HierarchyLocations::make(PROPERTY_TO_BE_TOTALLED_HL, I"property_to_be_totalled", template); - HierarchyLocations::make(REAL_LOCATION_HL, I"real_location", template); - HierarchyLocations::make(REAL_NUMBER_TY_ABS_HL, I"REAL_NUMBER_TY_Abs", template); - HierarchyLocations::make(REAL_NUMBER_TY_APPROXIMATE_HL, I"REAL_NUMBER_TY_Approximate", template); - HierarchyLocations::make(REAL_NUMBER_TY_COMPARE_HL, I"REAL_NUMBER_TY_Compare", template); - HierarchyLocations::make(REAL_NUMBER_TY_CUBE_ROOT_HL, I"REAL_NUMBER_TY_Cube_Root", template); - HierarchyLocations::make(REAL_NUMBER_TY_DIVIDE_HL, I"REAL_NUMBER_TY_Divide", template); - HierarchyLocations::make(REAL_NUMBER_TY_MINUS_HL, I"REAL_NUMBER_TY_Minus", template); - HierarchyLocations::make(REAL_NUMBER_TY_NAN_HL, I"REAL_NUMBER_TY_Nan", template); - HierarchyLocations::make(REAL_NUMBER_TY_NEGATE_HL, I"REAL_NUMBER_TY_Negate", template); - HierarchyLocations::make(REAL_NUMBER_TY_PLUS_HL, I"REAL_NUMBER_TY_Plus", template); - HierarchyLocations::make(REAL_NUMBER_TY_POW_HL, I"REAL_NUMBER_TY_Pow", template); - HierarchyLocations::make(REAL_NUMBER_TY_REMAINDER_HL, I"REAL_NUMBER_TY_Remainder", template); - HierarchyLocations::make(REAL_NUMBER_TY_ROOT_HL, I"REAL_NUMBER_TY_Root", template); - HierarchyLocations::make(REAL_NUMBER_TY_SAY_HL, I"REAL_NUMBER_TY_Say", template); - HierarchyLocations::make(REAL_NUMBER_TY_TIMES_HL, I"REAL_NUMBER_TY_Times", template); - HierarchyLocations::make(REAL_NUMBER_TY_TO_NUMBER_TY_HL, I"REAL_NUMBER_TY_to_NUMBER_TY", template); - HierarchyLocations::make(REASON_THE_ACTION_FAILED_HL, I"reason_the_action_failed", template); - HierarchyLocations::make(RELATION_EMPTYEQUIV_HL, I"Relation_EmptyEquiv", template); - HierarchyLocations::make(RELATION_EMPTYOTOO_HL, I"Relation_EmptyOtoO", template); - HierarchyLocations::make(RELATION_EMPTYVTOV_HL, I"Relation_EmptyVtoV", template); - HierarchyLocations::make(RELATION_RSHOWOTOO_HL, I"Relation_RShowOtoO", template); - HierarchyLocations::make(RELATION_SHOWEQUIV_HL, I"Relation_ShowEquiv", template); - HierarchyLocations::make(RELATION_SHOWOTOO_HL, I"Relation_ShowOtoO", template); - HierarchyLocations::make(RELATION_SHOWVTOV_HL, I"Relation_ShowVtoV", template); - HierarchyLocations::make(RELATION_TY_EQUIVALENCEADJECTIVE_HL, I"RELATION_TY_EquivalenceAdjective", template); - HierarchyLocations::make(RELATION_TY_NAME_HL, I"RELATION_TY_Name", template); - HierarchyLocations::make(RELATION_TY_OTOOADJECTIVE_HL, I"RELATION_TY_OToOAdjective", template); - HierarchyLocations::make(RELATION_TY_OTOVADJECTIVE_HL, I"RELATION_TY_OToVAdjective", template); - HierarchyLocations::make(RELATION_TY_SYMMETRICADJECTIVE_HL, I"RELATION_TY_SymmetricAdjective", template); - HierarchyLocations::make(RELATION_TY_VTOOADJECTIVE_HL, I"RELATION_TY_VToOAdjective", template); - HierarchyLocations::make(RELATIONTEST_HL, I"RelationTest", template); - HierarchyLocations::make(RELFOLLOWVECTOR_HL, I"RelFollowVector", template); - HierarchyLocations::make(RELS_EMPTY_HL, I"RELS_EMPTY", template); - HierarchyLocations::make(RESPONSEVIAACTIVITY_HL, I"ResponseViaActivity", template); - HierarchyLocations::make(RLANY_CAN_GET_X_HL, I"RLANY_CAN_GET_X", template); - HierarchyLocations::make(RLANY_CAN_GET_Y_HL, I"RLANY_CAN_GET_Y", template); - HierarchyLocations::make(RLANY_GET_X_HL, I"RLANY_GET_X", template); - HierarchyLocations::make(RLIST_ALL_X_HL, I"RLIST_ALL_X", template); - HierarchyLocations::make(RLIST_ALL_Y_HL, I"RLIST_ALL_Y", template); - HierarchyLocations::make(RLNGETF_HL, I"RlnGetF", template); - HierarchyLocations::make(ROUNDOFFTIME_HL, I"RoundOffTime", template); - HierarchyLocations::make(ROUTINEFILTER_TT_HL, I"ROUTINE_FILTER_TT", template); - HierarchyLocations::make(RR_STORAGE_HL, I"RR_STORAGE", template); - HierarchyLocations::make(RTP_RELKINDVIOLATION_HL, I"RTP_RELKINDVIOLATION", template); - HierarchyLocations::make(RTP_RELMINIMAL_HL, I"RTP_RELMINIMAL", template); - HierarchyLocations::make(RULEBOOKFAILS_HL, I"RulebookFails", template); - HierarchyLocations::make(RULEBOOKPARBREAK_HL, I"RulebookParBreak", template); - HierarchyLocations::make(RULEBOOKSUCCEEDS_HL, I"RulebookSucceeds", template); - HierarchyLocations::make(RUNTIMEPROBLEM_HL, I"RunTimeProblem", template); - HierarchyLocations::make(SAY__N_HL, I"say__n", template); - HierarchyLocations::make(SAY__P_HL, I"say__p", template); - HierarchyLocations::make(SAY__PC_HL, I"say__pc", template); - HierarchyLocations::make(SCENE_ENDED_HL, I"scene_ended", template); - HierarchyLocations::make(SCENE_ENDINGS_HL, I"scene_endings", template); - HierarchyLocations::make(SCENE_LATEST_ENDING_HL, I"scene_latest_ending", template); - HierarchyLocations::make(SCENE_STARTED_HL, I"scene_started", template); - HierarchyLocations::make(SCENE_STATUS_HL, I"scene_status", template); - HierarchyLocations::make(SCOPE_STAGE_HL, I"scope_stage", template); - HierarchyLocations::make(SCOPE_TT_HL, I"SCOPE_TT", template); - HierarchyLocations::make(SECOND_HL, I"second", template); - HierarchyLocations::make(SHORT_NAME_HL, I"short_name", template); - HierarchyLocations::make(SIGNEDCOMPARE_HL, I"SignedCompare", template); - HierarchyLocations::make(SPECIAL_WORD_HL, I"special_word", template); - HierarchyLocations::make(SQUAREROOT_HL, I"SquareRoot", template); - HierarchyLocations::make(STACKFRAMECREATE_HL, I"StackFrameCreate", template); - HierarchyLocations::make(STORED_ACTION_TY_CURRENT_HL, I"STORED_ACTION_TY_Current", template); - HierarchyLocations::make(STORED_ACTION_TY_TRY_HL, I"STORED_ACTION_TY_Try", template); - HierarchyLocations::make(STORY_TENSE_HL, I"story_tense", template); - HierarchyLocations::make(SUPPORTER_HL, I"supporter", template); - HierarchyLocations::make(SUPPRESS_SCOPE_LOOPS_HL, I"suppress_scope_loops", template); - HierarchyLocations::make(SUPPRESS_TEXT_SUBSTITUTION_HL, I"suppress_text_substitution", template); - HierarchyLocations::make(TABLE_NOVALUE_HL, I"TABLE_NOVALUE", template); - HierarchyLocations::make(TABLELOOKUPCORR_HL, I"TableLookUpCorr", template); - HierarchyLocations::make(TABLELOOKUPENTRY_HL, I"TableLookUpEntry", template); - HierarchyLocations::make(TESTACTIONBITMAP_HL, I"TestActionBitmap", template); - HierarchyLocations::make(TESTACTIVITY_HL, I"TestActivity", template); - HierarchyLocations::make(TESTREGIONALCONTAINMENT_HL, I"TestRegionalContainment", template); - HierarchyLocations::make(TESTSCOPE_HL, I"TestScope", template); - HierarchyLocations::make(TESTSTART_HL, I"TestStart", template); - HierarchyLocations::make(TEXT_TY_COMPARE_HL, I"TEXT_TY_Compare", template); - HierarchyLocations::make(TEXT_TY_EXPANDIFPERISHABLE_HL, I"TEXT_TY_ExpandIfPerishable", template); - HierarchyLocations::make(TEXT_TY_SAY_HL, I"TEXT_TY_Say", template); - HierarchyLocations::make(THE_TIME_HL, I"the_time", template); - HierarchyLocations::make(THEEMPTYTABLE_HL, I"TheEmptyTable", template); - HierarchyLocations::make(THEN1__WD_HL, I"THEN1__WD", template); - HierarchyLocations::make(TIMESACTIONHASBEENHAPPENING_HL, I"TimesActionHasBeenHappening", template); - HierarchyLocations::make(TIMESACTIONHASHAPPENED_HL, I"TimesActionHasHappened", template); - HierarchyLocations::make(TRYACTION_HL, I"TryAction", template); - HierarchyLocations::make(TRYGIVENOBJECT_HL, I"TryGivenObject", template); - HierarchyLocations::make(TURNSACTIONHASBEENHAPPENING_HL, I"TurnsActionHasBeenHappening", template); - HierarchyLocations::make(UNDERSTAND_AS_MISTAKE_NUMBER_HL, I"understand_as_mistake_number", template); - HierarchyLocations::make(UNICODE_TEMP_HL, I"unicode_temp", template); - HierarchyLocations::make(VTOORELROUTETO_HL, I"VtoORelRouteTo", template); - HierarchyLocations::make(VTOVRELROUTETO_HL, I"VtoVRelRouteTo", template); - HierarchyLocations::make(WHEN_SCENE_BEGINS_HL, I"WHEN_SCENE_BEGINS_RB", template); - HierarchyLocations::make(WHEN_SCENE_ENDS_HL, I"WHEN_SCENE_ENDS_RB", template); - HierarchyLocations::make(WN_HL, I"wn", template); - HierarchyLocations::make(WORDADDRESS_HL, I"WordAddress", template); - HierarchyLocations::make(WORDINPROPERTY_HL, I"WordInProperty", template); - HierarchyLocations::make(WORDLENGTH_HL, I"WordLength", template); + location_requirement template = HierarchyLocations::this_package(Hierarchy::template()); + HierarchyLocations::con(ACT_REQUESTER_HL, I"act_requester", Translation::same(), template); + HierarchyLocations::con(ACTION_HL, I"action", Translation::same(), template); + HierarchyLocations::con(ACTIONCURRENTLYHAPPENINGFLAG_HL, I"ActionCurrentlyHappeningFlag", Translation::same(), template); + HierarchyLocations::con(ACTOR_HL, I"actor", Translation::same(), template); + HierarchyLocations::con(ACTOR_LOCATION_HL, I"actor_location", Translation::same(), template); + HierarchyLocations::con(ADJUSTPARAGRAPHPOINT_HL, I"AdjustParagraphPoint", Translation::same(), template); + HierarchyLocations::con(ALLOWINSHOWME_HL, I"AllowInShowme", Translation::same(), template); + HierarchyLocations::con(ANIMATE_HL, I"animate", Translation::same(), template); + HierarchyLocations::con(ARGUMENTTYPEFAILED_HL, I"ArgumentTypeFailed", Translation::same(), template); + HierarchyLocations::con(ARTICLEDESCRIPTORS_HL, I"ArticleDescriptors", Translation::same(), template); + HierarchyLocations::con(AUXF_MAGIC_VALUE_HL, I"AUXF_MAGIC_VALUE", Translation::same(), template); + HierarchyLocations::con(AUXF_STATUS_IS_CLOSED_HL, I"AUXF_STATUS_IS_CLOSED", Translation::same(), template); + HierarchyLocations::con(BLKVALUECOPY_HL, I"BlkValueCopy", Translation::same(), template); + HierarchyLocations::con(BLKVALUECOPYAZ_HL, I"BlkValueCopyAZ", Translation::same(), template); + HierarchyLocations::con(BLKVALUECREATE_HL, I"BlkValueCreate", Translation::same(), template); + HierarchyLocations::con(BLKVALUECREATEONSTACK_HL, I"BlkValueCreateOnStack", Translation::same(), template); + HierarchyLocations::con(BLKVALUEERROR_HL, I"BlkValueError", Translation::same(), template); + HierarchyLocations::con(BLKVALUEFREE_HL, I"BlkValueFree", Translation::same(), template); + HierarchyLocations::con(BLKVALUEFREEONSTACK_HL, I"BlkValueFreeOnStack", Translation::same(), template); + HierarchyLocations::con(BLKVALUEWRITE_HL, I"BlkValueWrite", Translation::same(), template); + HierarchyLocations::con(C_STYLE_HL, I"c_style", Translation::same(), template); + HierarchyLocations::con(CHECKKINDRETURNED_HL, I"CheckKindReturned", Translation::same(), template); + HierarchyLocations::con(CLEARPARAGRAPHING_HL, I"ClearParagraphing", Translation::same(), template); + HierarchyLocations::con(COMPONENT_CHILD_HL, I"component_child", Translation::same(), template); + HierarchyLocations::con(COMPONENT_PARENT_HL, I"component_parent", Translation::same(), template); + HierarchyLocations::con(COMPONENT_SIBLING_HL, I"component_sibling", Translation::same(), template); + HierarchyLocations::con(CONSTANT_PACKED_TEXT_STORAGE_HL, I"CONSTANT_PACKED_TEXT_STORAGE", Translation::same(), template); + HierarchyLocations::con(CONSTANT_PERISHABLE_TEXT_STORAGE_HL, I"CONSTANT_PERISHABLE_TEXT_STORAGE", Translation::same(), template); + HierarchyLocations::con(CONSULT_FROM_HL, I"consult_from", Translation::same(), template); + HierarchyLocations::con(CONSULT_WORDS_HL, I"consult_words", Translation::same(), template); + HierarchyLocations::con(CONTAINER_HL, I"container", Translation::same(), template); + HierarchyLocations::con(CUBEROOT_HL, I"CubeRoot", Translation::same(), template); + HierarchyLocations::con(DA_NAME_HL, I"DA_Name", Translation::same(), template); + HierarchyLocations::con(DB_RULE_HL, I"DB_Rule", Translation::same(), template); + HierarchyLocations::con(DEADFLAG_HL, I"deadflag", Translation::same(), template); + HierarchyLocations::con(DEBUG_RULES_HL, I"debug_rules", Translation::same(), template); + HierarchyLocations::con(DEBUG_SCENES_HL, I"debug_scenes", Translation::same(), template); + HierarchyLocations::con(DECIMALNUMBER_HL, I"DecimalNumber", Translation::same(), template); + HierarchyLocations::con(DEFERRED_CALLING_LIST_HL, I"deferred_calling_list", Translation::same(), template); + HierarchyLocations::con(DETECTPLURALWORD_HL, I"DetectPluralWord", Translation::same(), template); + HierarchyLocations::con(DIGITTOVALUE_HL, I"DigitToValue", Translation::same(), template); + HierarchyLocations::con(DIVIDEPARAGRAPHPOINT_HL, I"DivideParagraphPoint", Translation::same(), template); + HierarchyLocations::con(DOUBLEHASHSETRELATIONHANDLER_HL, I"DoubleHashSetRelationHandler", Translation::same(), template); + HierarchyLocations::con(DURINGSCENEMATCHING_HL, I"DuringSceneMatching", Translation::same(), template); + HierarchyLocations::con(ELEMENTARY_TT_HL, I"ELEMENTARY_TT", Translation::same(), template); + HierarchyLocations::con(EMPTY_TABLE_HL, I"TheEmptyTable", Translation::same(), template); + HierarchyLocations::con(EMPTY_TEXT_PACKED_HL, I"EMPTY_TEXT_PACKED", Translation::same(), template); + HierarchyLocations::con(EMPTY_TEXT_VALUE_HL, I"EMPTY_TEXT_VALUE", Translation::same(), template); + HierarchyLocations::con(EMPTYRELATIONHANDLER_HL, I"EmptyRelationHandler", Translation::same(), template); + HierarchyLocations::con(ENGLISH_BIT_HL, I"ENGLISH_BIT", Translation::same(), template); + HierarchyLocations::con(ETYPE_HL, I"etype", Translation::same(), template); + HierarchyLocations::con(EXISTSTABLELOOKUPCORR_HL, I"ExistsTableLookUpCorr", Translation::same(), template); + HierarchyLocations::con(EXISTSTABLELOOKUPENTRY_HL, I"ExistsTableLookUpEntry", Translation::same(), template); + HierarchyLocations::con(EXISTSTABLEROWCORR_HL, I"ExistsTableRowCorr", Translation::same(), template); + HierarchyLocations::con(FLOATPARSE_HL, I"FloatParse", Translation::same(), template); + HierarchyLocations::con(FOLLOWRULEBOOK_HL, I"FollowRulebook", Translation::same(), template); + HierarchyLocations::con(formal_par0_HL, I"formal_par0", Translation::same(), template); + HierarchyLocations::con(formal_par1_HL, I"formal_par1", Translation::same(), template); + HierarchyLocations::con(formal_par2_HL, I"formal_par2", Translation::same(), template); + HierarchyLocations::con(formal_par3_HL, I"formal_par3", Translation::same(), template); + HierarchyLocations::con(formal_par4_HL, I"formal_par4", Translation::same(), template); + HierarchyLocations::con(formal_par5_HL, I"formal_par5", Translation::same(), template); + HierarchyLocations::con(formal_par6_HL, I"formal_par6", Translation::same(), template); + HierarchyLocations::con(formal_par7_HL, I"formal_par7", Translation::same(), template); + HierarchyLocations::con(FORMAL_RV_HL, I"formal_rv", Translation::same(), template); + HierarchyLocations::con(FOUND_EVERYWHERE_HL, I"FoundEverywhere", Translation::same(), template); + HierarchyLocations::con(GENERATERANDOMNUMBER_HL, I"GenerateRandomNumber", Translation::same(), template); + HierarchyLocations::con(GENERICVERBSUB_HL, I"GenericVerbSub", Translation::same(), template); + HierarchyLocations::con(GETGNAOFOBJECT_HL, I"GetGNAOfObject", Translation::same(), template); + HierarchyLocations::con(GPR_FAIL_HL, I"GPR_FAIL", Translation::same(), template); + HierarchyLocations::con(GPR_NUMBER_HL, I"GPR_NUMBER", Translation::same(), template); + HierarchyLocations::con(GPR_PREPOSITION_HL, I"GPR_PREPOSITION", Translation::same(), template); + HierarchyLocations::con(GPR_TT_HL, I"GPR_TT", Translation::same(), template); + HierarchyLocations::con(GPROPERTY_HL, I"GProperty", Translation::same(), template); + HierarchyLocations::con(HASHLISTRELATIONHANDLER_HL, I"HashListRelationHandler", Translation::same(), template); + HierarchyLocations::con(I7SFRAME_HL, I"I7SFRAME", Translation::same(), template); + HierarchyLocations::con(INDENT_BIT_HL, I"INDENT_BIT", Translation::same(), template); + HierarchyLocations::con(INP1_HL, I"inp1", Translation::same(), template); + HierarchyLocations::con(INP2_HL, I"inp2", Translation::same(), template); + HierarchyLocations::con(INTEGERDIVIDE_HL, I"IntegerDivide", Translation::same(), template); + HierarchyLocations::con(INTEGERREMAINDER_HL, I"IntegerRemainder", Translation::same(), template); + HierarchyLocations::con(INVENTORY_STAGE_HL, I"inventory_stage", Translation::same(), template); + HierarchyLocations::con(KEEP_SILENT_HL, I"keep_silent", Translation::same(), template); + HierarchyLocations::con(KINDATOMIC_HL, I"KindAtomic", Translation::same(), template); + HierarchyLocations::con(LATEST_RULE_RESULT_HL, I"latest_rule_result", Translation::same(), template); + HierarchyLocations::con(LIST_ITEM_BASE_HL, I"LIST_ITEM_BASE", Translation::same(), template); + HierarchyLocations::con(LIST_ITEM_KOV_F_HL, I"LIST_ITEM_KOV_F", Translation::same(), template); + HierarchyLocations::con(LIST_OF_TY_DESC_HL, I"LIST_OF_TY_Desc", Translation::same(), template); + HierarchyLocations::con(LIST_OF_TY_GETITEM_HL, I"LIST_OF_TY_GetItem", Translation::same(), template); + HierarchyLocations::con(LIST_OF_TY_GETLENGTH_HL, I"LIST_OF_TY_GetLength", Translation::same(), template); + HierarchyLocations::con(LIST_OF_TY_INSERTITEM_HL, I"LIST_OF_TY_InsertItem", Translation::same(), template); + HierarchyLocations::con(LIST_OF_TY_SAY_HL, I"LIST_OF_TY_Say", Translation::same(), template); + HierarchyLocations::con(LIST_OF_TY_SETLENGTH_HL, I"LIST_OF_TY_SetLength", Translation::same(), template); + HierarchyLocations::con(LOCALPARKING_HL, I"LocalParking", Translation::same(), template); + HierarchyLocations::con(LOCATION_HL, I"location", Translation::same(), template); + HierarchyLocations::con(LOCATIONOF_HL, I"LocationOf", Translation::same(), template); + HierarchyLocations::con(LOOPOVERSCOPE_HL, I"LoopOverScope", Translation::same(), template); + HierarchyLocations::con(LOS_RV_HL, I"los_rv", Translation::same(), template); + HierarchyLocations::con(MSTACK_HL, I"MStack", Translation::same(), template); + HierarchyLocations::con(MSTVO_HL, I"MstVO", Translation::same(), template); + HierarchyLocations::con(MSTVON_HL, I"MstVON", Translation::same(), template); + HierarchyLocations::con(NAME_HL, I"name", Translation::same(), template); + HierarchyLocations::con(NEWLINE_BIT_HL, I"NEWLINE_BIT", Translation::same(), template); + HierarchyLocations::con(NEXTBEST_ETYPE_HL, I"nextbest_etype", Translation::same(), template); + HierarchyLocations::con(NEXTWORDSTOPPED_HL, I"NextWordStopped", Translation::same(), template); + HierarchyLocations::con(NOARTICLE_BIT_HL, I"NOARTICLE_BIT", Translation::same(), template); + HierarchyLocations::con(NOTINCONTEXTPE_HL, I"NOTINCONTEXT_PE", Translation::same(), template); + HierarchyLocations::con(NOUN_HL, I"noun", Translation::same(), template); + HierarchyLocations::con(NUMBER_TY_ABS_HL, I"NUMBER_TY_Abs", Translation::same(), template); + HierarchyLocations::con(NUMBER_TY_TO_REAL_NUMBER_TY_HL, I"NUMBER_TY_to_REAL_NUMBER_TY", Translation::same(), template); + HierarchyLocations::con(NUMBER_TY_TO_TIME_TY_HL, I"NUMBER_TY_to_TIME_TY", Translation::same(), template); + HierarchyLocations::con(OTOVRELROUTETO_HL, I"OtoVRelRouteTo", Translation::same(), template); + HierarchyLocations::con(PACKED_TEXT_STORAGE_HL, I"PACKED_TEXT_STORAGE", Translation::same(), template); + HierarchyLocations::con(PARACONTENT_HL, I"ParaContent", Translation::same(), template); + HierarchyLocations::con(PARAMETER_VALUE_HL, I"parameter_value", Translation::same(), template); + HierarchyLocations::con(PARSED_NUMBER_HL, I"parsed_number", Translation::same(), template); + HierarchyLocations::con(PARSER_ACTION_HL, I"parser_action", Translation::same(), template); + HierarchyLocations::con(PARSER_ONE_HL, I"parser_one", Translation::same(), template); + HierarchyLocations::con(PARSER_TRACE_HL, I"parser_trace", Translation::same(), template); + HierarchyLocations::con(PARSER_TWO_HL, I"parser_two", Translation::same(), template); + HierarchyLocations::con(PARSERERROR_HL, I"ParserError", Translation::same(), template); + HierarchyLocations::con(PARSETOKENSTOPPED_HL, I"ParseTokenStopped", Translation::same(), template); + HierarchyLocations::con(PAST_CHRONOLOGICAL_RECORD_HL, I"past_chronological_record", Translation::same(), template); + HierarchyLocations::con(PLACEINSCOPE_HL, I"PlaceInScope", Translation::same(), template); + HierarchyLocations::con(PLAYER_HL, I"player", Translation::same(), template); + HierarchyLocations::con(PNTOVP_HL, I"PNToVP", Translation::same(), template); + HierarchyLocations::con(PRESENT_CHRONOLOGICAL_RECORD_HL, I"present_chronological_record", Translation::same(), template); + HierarchyLocations::con(PRINTORRUN_HL, I"PrintOrRun", Translation::same(), template); + HierarchyLocations::con(PRIOR_NAMED_LIST_HL, I"prior_named_list", Translation::same(), template); + HierarchyLocations::con(PRIOR_NAMED_LIST_GENDER_HL, I"prior_named_list_gender", Translation::same(), template); + HierarchyLocations::con(PRIOR_NAMED_NOUN_HL, I"prior_named_noun", Translation::same(), template); + HierarchyLocations::con(PROPERTY_LOOP_SIGN_HL, I"property_loop_sign", Translation::same(), template); + HierarchyLocations::con(PROPERTY_TO_BE_TOTALLED_HL, I"property_to_be_totalled", Translation::same(), template); + HierarchyLocations::con(REAL_LOCATION_HL, I"real_location", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_ABS_HL, I"REAL_NUMBER_TY_Abs", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_APPROXIMATE_HL, I"REAL_NUMBER_TY_Approximate", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_COMPARE_HL, I"REAL_NUMBER_TY_Compare", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_CUBE_ROOT_HL, I"REAL_NUMBER_TY_Cube_Root", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_DIVIDE_HL, I"REAL_NUMBER_TY_Divide", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_MINUS_HL, I"REAL_NUMBER_TY_Minus", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_NAN_HL, I"REAL_NUMBER_TY_Nan", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_NEGATE_HL, I"REAL_NUMBER_TY_Negate", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_PLUS_HL, I"REAL_NUMBER_TY_Plus", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_POW_HL, I"REAL_NUMBER_TY_Pow", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_REMAINDER_HL, I"REAL_NUMBER_TY_Remainder", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_ROOT_HL, I"REAL_NUMBER_TY_Root", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_SAY_HL, I"REAL_NUMBER_TY_Say", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_TIMES_HL, I"REAL_NUMBER_TY_Times", Translation::same(), template); + HierarchyLocations::con(REAL_NUMBER_TY_TO_NUMBER_TY_HL, I"REAL_NUMBER_TY_to_NUMBER_TY", Translation::same(), template); + HierarchyLocations::con(REASON_THE_ACTION_FAILED_HL, I"reason_the_action_failed", Translation::same(), template); + HierarchyLocations::con(RELATION_EMPTYEQUIV_HL, I"Relation_EmptyEquiv", Translation::same(), template); + HierarchyLocations::con(RELATION_EMPTYOTOO_HL, I"Relation_EmptyOtoO", Translation::same(), template); + HierarchyLocations::con(RELATION_EMPTYVTOV_HL, I"Relation_EmptyVtoV", Translation::same(), template); + HierarchyLocations::con(RELATION_RSHOWOTOO_HL, I"Relation_RShowOtoO", Translation::same(), template); + HierarchyLocations::con(RELATION_SHOWEQUIV_HL, I"Relation_ShowEquiv", Translation::same(), template); + HierarchyLocations::con(RELATION_SHOWOTOO_HL, I"Relation_ShowOtoO", Translation::same(), template); + HierarchyLocations::con(RELATION_SHOWVTOV_HL, I"Relation_ShowVtoV", Translation::same(), template); + HierarchyLocations::con(RELATION_TY_EQUIVALENCEADJECTIVE_HL, I"RELATION_TY_EquivalenceAdjective", Translation::same(), template); + HierarchyLocations::con(RELATION_TY_NAME_HL, I"RELATION_TY_Name", Translation::same(), template); + HierarchyLocations::con(RELATION_TY_OTOOADJECTIVE_HL, I"RELATION_TY_OToOAdjective", Translation::same(), template); + HierarchyLocations::con(RELATION_TY_OTOVADJECTIVE_HL, I"RELATION_TY_OToVAdjective", Translation::same(), template); + HierarchyLocations::con(RELATION_TY_SYMMETRICADJECTIVE_HL, I"RELATION_TY_SymmetricAdjective", Translation::same(), template); + HierarchyLocations::con(RELATION_TY_VTOOADJECTIVE_HL, I"RELATION_TY_VToOAdjective", Translation::same(), template); + HierarchyLocations::con(RELATIONTEST_HL, I"RelationTest", Translation::same(), template); + HierarchyLocations::con(RELFOLLOWVECTOR_HL, I"RelFollowVector", Translation::same(), template); + HierarchyLocations::con(RELS_EMPTY_HL, I"RELS_EMPTY", Translation::same(), template); + HierarchyLocations::con(RESPONSEVIAACTIVITY_HL, I"ResponseViaActivity", Translation::same(), template); + HierarchyLocations::con(RLANY_CAN_GET_X_HL, I"RLANY_CAN_GET_X", Translation::same(), template); + HierarchyLocations::con(RLANY_CAN_GET_Y_HL, I"RLANY_CAN_GET_Y", Translation::same(), template); + HierarchyLocations::con(RLANY_GET_X_HL, I"RLANY_GET_X", Translation::same(), template); + HierarchyLocations::con(RLIST_ALL_X_HL, I"RLIST_ALL_X", Translation::same(), template); + HierarchyLocations::con(RLIST_ALL_Y_HL, I"RLIST_ALL_Y", Translation::same(), template); + HierarchyLocations::con(RLNGETF_HL, I"RlnGetF", Translation::same(), template); + HierarchyLocations::con(ROUNDOFFTIME_HL, I"RoundOffTime", Translation::same(), template); + HierarchyLocations::con(ROUTINEFILTER_TT_HL, I"ROUTINE_FILTER_TT", Translation::same(), template); + HierarchyLocations::con(RR_STORAGE_HL, I"RR_STORAGE", Translation::same(), template); + HierarchyLocations::con(RTP_RELKINDVIOLATION_HL, I"RTP_RELKINDVIOLATION", Translation::same(), template); + HierarchyLocations::con(RTP_RELMINIMAL_HL, I"RTP_RELMINIMAL", Translation::same(), template); + HierarchyLocations::con(RULEBOOKFAILS_HL, I"RulebookFails", Translation::same(), template); + HierarchyLocations::con(RULEBOOKPARBREAK_HL, I"RulebookParBreak", Translation::same(), template); + HierarchyLocations::con(RULEBOOKSUCCEEDS_HL, I"RulebookSucceeds", Translation::same(), template); + HierarchyLocations::con(RUNTIMEPROBLEM_HL, I"RunTimeProblem", Translation::same(), template); + HierarchyLocations::con(SAY__N_HL, I"say__n", Translation::same(), template); + HierarchyLocations::con(SAY__P_HL, I"say__p", Translation::same(), template); + HierarchyLocations::con(SAY__PC_HL, I"say__pc", Translation::same(), template); + HierarchyLocations::con(SCENE_ENDED_HL, I"scene_ended", Translation::same(), template); + HierarchyLocations::con(SCENE_ENDINGS_HL, I"scene_endings", Translation::same(), template); + HierarchyLocations::con(SCENE_LATEST_ENDING_HL, I"scene_latest_ending", Translation::same(), template); + HierarchyLocations::con(SCENE_STARTED_HL, I"scene_started", Translation::same(), template); + HierarchyLocations::con(SCENE_STATUS_HL, I"scene_status", Translation::same(), template); + HierarchyLocations::con(SCOPE_STAGE_HL, I"scope_stage", Translation::same(), template); + HierarchyLocations::con(SCOPE_TT_HL, I"SCOPE_TT", Translation::same(), template); + HierarchyLocations::con(SECOND_HL, I"second", Translation::same(), template); + HierarchyLocations::con(SHORT_NAME_HL, I"short_name", Translation::same(), template); + HierarchyLocations::con(SIGNEDCOMPARE_HL, I"SignedCompare", Translation::same(), template); + HierarchyLocations::con(SPECIAL_WORD_HL, I"special_word", Translation::same(), template); + HierarchyLocations::con(SQUAREROOT_HL, I"SquareRoot", Translation::same(), template); + HierarchyLocations::con(STACKFRAMECREATE_HL, I"StackFrameCreate", Translation::same(), template); + HierarchyLocations::con(STORED_ACTION_TY_CURRENT_HL, I"STORED_ACTION_TY_Current", Translation::same(), template); + HierarchyLocations::con(STORED_ACTION_TY_TRY_HL, I"STORED_ACTION_TY_Try", Translation::same(), template); + HierarchyLocations::con(STORY_TENSE_HL, I"story_tense", Translation::same(), template); + HierarchyLocations::con(SUPPORTER_HL, I"supporter", Translation::same(), template); + HierarchyLocations::con(SUPPRESS_SCOPE_LOOPS_HL, I"suppress_scope_loops", Translation::same(), template); + HierarchyLocations::con(SUPPRESS_TEXT_SUBSTITUTION_HL, I"suppress_text_substitution", Translation::same(), template); + HierarchyLocations::con(TABLE_NOVALUE_HL, I"TABLE_NOVALUE", Translation::same(), template); + HierarchyLocations::con(TABLELOOKUPCORR_HL, I"TableLookUpCorr", Translation::same(), template); + HierarchyLocations::con(TABLELOOKUPENTRY_HL, I"TableLookUpEntry", Translation::same(), template); + HierarchyLocations::con(TESTACTIONBITMAP_HL, I"TestActionBitmap", Translation::same(), template); + HierarchyLocations::con(TESTACTIVITY_HL, I"TestActivity", Translation::same(), template); + HierarchyLocations::con(TESTREGIONALCONTAINMENT_HL, I"TestRegionalContainment", Translation::same(), template); + HierarchyLocations::con(TESTSCOPE_HL, I"TestScope", Translation::same(), template); + HierarchyLocations::con(TESTSTART_HL, I"TestStart", Translation::same(), template); + HierarchyLocations::con(TEXT_TY_COMPARE_HL, I"TEXT_TY_Compare", Translation::same(), template); + HierarchyLocations::con(TEXT_TY_EXPANDIFPERISHABLE_HL, I"TEXT_TY_ExpandIfPerishable", Translation::same(), template); + HierarchyLocations::con(TEXT_TY_SAY_HL, I"TEXT_TY_Say", Translation::same(), template); + HierarchyLocations::con(THE_TIME_HL, I"the_time", Translation::same(), template); + HierarchyLocations::con(THEEMPTYTABLE_HL, I"TheEmptyTable", Translation::same(), template); + HierarchyLocations::con(THEN1__WD_HL, I"THEN1__WD", Translation::same(), template); + HierarchyLocations::con(TIMESACTIONHASBEENHAPPENING_HL, I"TimesActionHasBeenHappening", Translation::same(), template); + HierarchyLocations::con(TIMESACTIONHASHAPPENED_HL, I"TimesActionHasHappened", Translation::same(), template); + HierarchyLocations::con(TRYACTION_HL, I"TryAction", Translation::same(), template); + HierarchyLocations::con(TRYGIVENOBJECT_HL, I"TryGivenObject", Translation::same(), template); + HierarchyLocations::con(TURNSACTIONHASBEENHAPPENING_HL, I"TurnsActionHasBeenHappening", Translation::same(), template); + HierarchyLocations::con(UNDERSTAND_AS_MISTAKE_NUMBER_HL, I"understand_as_mistake_number", Translation::same(), template); + HierarchyLocations::con(UNICODE_TEMP_HL, I"unicode_temp", Translation::same(), template); + HierarchyLocations::con(VTOORELROUTETO_HL, I"VtoORelRouteTo", Translation::same(), template); + HierarchyLocations::con(VTOVRELROUTETO_HL, I"VtoVRelRouteTo", Translation::same(), template); + HierarchyLocations::con(WHEN_SCENE_BEGINS_HL, I"WHEN_SCENE_BEGINS_RB", Translation::same(), template); + HierarchyLocations::con(WHEN_SCENE_ENDS_HL, I"WHEN_SCENE_ENDS_RB", Translation::same(), template); + HierarchyLocations::con(WN_HL, I"wn", Translation::same(), template); + HierarchyLocations::con(WORDADDRESS_HL, I"WordAddress", Translation::same(), template); + HierarchyLocations::con(WORDINPROPERTY_HL, I"WordInProperty", Translation::same(), template); + HierarchyLocations::con(WORDLENGTH_HL, I"WordLength", Translation::same(), template); @ @@ -1276,7 +1314,7 @@ inter_name *Hierarchy::find_by_name(text_stream *name) { if (Str::len(name) == 0) internal_error("empty extern"); inter_name *try = HierarchyLocations::find_by_name(name); if (try == NULL) { - HierarchyLocations::make(-1, name, Hierarchy::template()); + HierarchyLocations::con(-1, name, Translation::same(), HierarchyLocations::this_package(Hierarchy::template())); try = HierarchyLocations::find_by_name(name); } return try; @@ -1308,25 +1346,33 @@ package_request *Hierarchy::template(void) { } package_request *Hierarchy::package(compilation_module *C, int hap_id) { - return HierarchyLocations::package(C, hap_id); + return HierarchyLocations::attach_new_package(C, NULL, hap_id); } package_request *Hierarchy::synoptic_package(int hap_id) { - return HierarchyLocations::synoptic_package(hap_id); + return HierarchyLocations::attach_new_package(NULL, NULL, hap_id); } package_request *Hierarchy::local_package(int hap_id) { - return HierarchyLocations::package(Modules::find(current_sentence), hap_id); + return HierarchyLocations::attach_new_package(Modules::find(current_sentence), NULL, hap_id); } package_request *Hierarchy::package_within(int hap_id, package_request *super) { - return HierarchyLocations::package_within(super, hap_id); + return HierarchyLocations::attach_new_package(NULL, super, hap_id); } -package_request *Hierarchy::package_in_package(int id, package_request *P) { +inter_name *Hierarchy::make_iname_in(int id, package_request *P) { + return HierarchyLocations::find_in_package(id, P, EMPTY_WORDING); +} + +inter_name *Hierarchy::make_iname_with_memo(int id, package_request *P, wording W) { + return HierarchyLocations::find_in_package(id, P, W); +} + +package_request *Hierarchy::make_package_in(int id, package_request *P) { return HierarchyLocations::package_in_package(id, P); } package_request *Hierarchy::home_for_weak_type_IDs(void) { - return Packaging::synoptic_resource(KINDS_SUBMODULE); + return home_for_weak_type_IDs.this_mundane_package; } diff --git a/inform7/core-module/Chapter 27/Packaging.w b/inform7/core-module/Chapter 27/Packaging.w index 57b937078..317e18e59 100644 --- a/inform7/core-module/Chapter 27/Packaging.w +++ b/inform7/core-module/Chapter 27/Packaging.w @@ -40,14 +40,14 @@ typedef struct package_request { struct inter_package *actual_package; struct package_request *parent_request; struct inter_reading_state write_position; - struct linked_list *counters; /* of |subpackage_request_counter| */ + struct linked_list *counters; /* of |submodule_request_counter| */ MEMORY_MANAGEMENT } package_request; -typedef struct subpackage_request_counter { +typedef struct submodule_request_counter { int counter_id; int counter_value; MEMORY_MANAGEMENT -} subpackage_request_counter; +} submodule_request_counter; @ = package_request *Packaging::request(inter_name *name, package_request *parent, inter_symbol *pt) { @@ -190,28 +190,46 @@ package_request *Packaging::request_synoptic(void) { return synoptic_pr; } -typedef struct subpackage_requests { - struct package_request *subs[MAX_SUBMODULE]; -} subpackage_requests; +typedef struct submodule_identity { + struct text_stream *submodule_name; + MEMORY_MANAGEMENT +} submodule_identity; -package_request *Packaging::resources_for_new_submodule(text_stream *name, subpackage_requests *SR) { +submodule_identity *Packaging::register_submodule(text_stream *name) { + submodule_identity *sid = CREATE(submodule_identity); + sid->submodule_name = Str::duplicate(name); + return sid; +} + + +typedef struct submodule_request { + struct submodule_identity *which_submodule; + struct package_request *where_found; + MEMORY_MANAGEMENT +} submodule_request; + +typedef struct submodule_requests { + struct linked_list *submodules; /* of |submodule_identity| */ +} submodule_requests; + +package_request *Packaging::resources_for_new_submodule(text_stream *name, submodule_requests *SR) { inter_name *package_iname = InterNames::one_off(name, Hierarchy::resources()); package_request *P = Packaging::request(package_iname, Hierarchy::resources(), module_ptype); - Packaging::initialise_subpackages(SR); + Packaging::initialise_submodules(SR); return P; } -void Packaging::initialise_subpackages(subpackage_requests *SR) { - for (int i=0; isubs[i] = NULL; +void Packaging::initialise_submodules(submodule_requests *SR) { + SR->submodules = NEW_LINKED_LIST(submodule_request); } int generic_subpackages_initialised = FALSE; -subpackage_requests generic_subpackages; +submodule_requests generic_subpackages; int synoptic_subpackages_initialised = FALSE; -subpackage_requests synoptic_subpackages; +submodule_requests synoptic_subpackages; -package_request *Packaging::request_resource(compilation_module *C, int ix) { - subpackage_requests *SR = NULL; +package_request *Packaging::request_resource(compilation_module *C, submodule_identity *sid) { + submodule_requests *SR = NULL; package_request *parent = NULL; if (C) { SR = Modules::subpackages(C); @@ -219,7 +237,7 @@ package_request *Packaging::request_resource(compilation_module *C, int ix) { } else { if (generic_subpackages_initialised == FALSE) { generic_subpackages_initialised = TRUE; - Packaging::initialise_subpackages(&generic_subpackages); + Packaging::initialise_submodules(&generic_subpackages); } SR = &generic_subpackages; parent = Packaging::request_generic(); @@ -227,37 +245,41 @@ package_request *Packaging::request_resource(compilation_module *C, int ix) { @; } -package_request *Packaging::local_resource(int ix) { - return Packaging::request_resource(Modules::find(current_sentence), ix); +package_request *Packaging::local_resource(submodule_identity *sid) { + return Packaging::request_resource(Modules::find(current_sentence), sid); } -package_request *Packaging::generic_resource(int ix) { +package_request *Packaging::generic_resource(submodule_identity *sid) { if (generic_subpackages_initialised == FALSE) { generic_subpackages_initialised = TRUE; - Packaging::initialise_subpackages(&generic_subpackages); + Packaging::initialise_submodules(&generic_subpackages); } - subpackage_requests *SR = &generic_subpackages; + submodule_requests *SR = &generic_subpackages; package_request *parent = Packaging::request_generic(); @; } -package_request *Packaging::synoptic_resource(int ix) { +package_request *Packaging::synoptic_resource(submodule_identity *sid) { if (synoptic_subpackages_initialised == FALSE) { synoptic_subpackages_initialised = TRUE; - Packaging::initialise_subpackages(&synoptic_subpackages); + Packaging::initialise_submodules(&synoptic_subpackages); } - subpackage_requests *SR = &synoptic_subpackages; + submodule_requests *SR = &synoptic_subpackages; package_request *parent = Packaging::request_synoptic(); @; } @ = - if (SR->subs[ix] == NULL) { - text_stream *N = Hierarchy::submodule_name(ix); - inter_name *iname = InterNames::one_off(N, parent); - SR->subs[ix] = Packaging::request(iname, parent, plain_ptype); - } - return SR->subs[ix]; + submodule_request *sr; + LOOP_OVER_LINKED_LIST(sr, submodule_request, SR->submodules) + if (sid == sr->which_submodule) + return sr->where_found; + inter_name *iname = InterNames::one_off(sid->submodule_name, parent); + sr = CREATE(submodule_request); + sr->which_submodule = sid; + sr->where_found = Packaging::request(iname, parent, plain_ptype); + ADD_TO_LINKED_LIST(sr, submodule_request, SR->submodules); + return sr->where_found; @ @@ -283,19 +305,19 @@ inter_name *Packaging::supply_iname(package_request *R, int what_for) { if (R == NULL) internal_error("no request"); if ((what_for < 0) || (what_for >= no_pr_counters_registered)) internal_error("out of range"); if (R->counters == NULL) - R->counters = NEW_LINKED_LIST(subpackage_request_counter); + R->counters = NEW_LINKED_LIST(submodule_request_counter); int N = -1; - subpackage_request_counter *src; - LOOP_OVER_LINKED_LIST(src, subpackage_request_counter, R->counters) + submodule_request_counter *src; + LOOP_OVER_LINKED_LIST(src, submodule_request_counter, R->counters) if (src->counter_id == what_for) { N = ++(src->counter_value); break; } if (N < 0) { - subpackage_request_counter *src = CREATE(subpackage_request_counter); + submodule_request_counter *src = CREATE(submodule_request_counter); src->counter_id = what_for; src->counter_value = 1; N = 1; - ADD_TO_LINKED_LIST(src, subpackage_request_counter, R->counters); + ADD_TO_LINKED_LIST(src, submodule_request_counter, R->counters); } TEMPORARY_TEXT(P); WRITE_TO(P, "%S_%d", pr_counter_names[what_for], N); diff --git a/inform7/core-module/Chapter 27/Translation.w b/inform7/core-module/Chapter 27/Translation.w new file mode 100644 index 000000000..4f4521bc7 --- /dev/null +++ b/inform7/core-module/Chapter 27/Translation.w @@ -0,0 +1,37 @@ +[Translation::] Translation. + +@ + += +typedef struct name_translation { + struct text_stream *translate_to; + int then_make_unique; +} name_translation; + +name_translation Translation::same(void) { + name_translation nt; + nt.translate_to = NULL; + nt.then_make_unique = FALSE; + return nt; +} + +name_translation Translation::uniqued(void) { + name_translation nt; + nt.translate_to = NULL; + nt.then_make_unique = TRUE; + return nt; +} + +name_translation Translation::to(text_stream *S) { + name_translation nt; + nt.translate_to = S; + nt.then_make_unique = FALSE; + return nt; +} + +name_translation Translation::to_uniqued(text_stream *S) { + name_translation nt; + nt.translate_to = S; + nt.then_make_unique = TRUE; + return nt; +} diff --git a/inform7/core-module/Chapter 6/Relations.w b/inform7/core-module/Chapter 6/Relations.w index 72bad2bcb..6cca4299e 100644 --- a/inform7/core-module/Chapter 6/Relations.w +++ b/inform7/core-module/Chapter 6/Relations.w @@ -1816,8 +1816,7 @@ void Relations::compile_vtov_storage(binary_predicate *bp) { @; package_request *P = BinaryPredicates::package(bp); - bp->v2v_bitmap_iname = InterNames::one_off(I"bitmap", P); - Inter::Symbols::set_flag(InterNames::to_symbol(bp->v2v_bitmap_iname), MAKE_NAME_UNIQUE); + bp->v2v_bitmap_iname = Hierarchy::make_iname_in(BITMAP_HL, P); packaging_state save = Packaging::enter_home_of(bp->v2v_bitmap_iname); Emit::named_array_begin(bp->v2v_bitmap_iname, K_value); @; @@ -1891,8 +1890,7 @@ above: it forces the template layer to generate the cache when first used. @ = package_request *P = BinaryPredicates::package(bp); - inter_name *iname = InterNames::one_off(I"route_cache", P); - Inter::Symbols::set_flag(InterNames::to_symbol(iname), MAKE_NAME_UNIQUE); + inter_name *iname = Hierarchy::make_iname_in(ROUTE_CACHE_HL, P); packaging_state save = Packaging::enter_home_of(iname); kind *left_kind = BinaryPredicates::term_kind(bp, 0); kind *right_kind = BinaryPredicates::term_kind(bp, 1); diff --git a/inform7/core-module/Contents.w b/inform7/core-module/Contents.w index eae7f7ce4..9b399e200 100644 --- a/inform7/core-module/Contents.w +++ b/inform7/core-module/Contents.w @@ -281,5 +281,6 @@ Chapter 27: Bridge to Inter Module Compilation Modules Inter Namespace Packaging + Translation Hierarchy Locations Hierarchy diff --git a/inform7/if-module/Chapter 4/Actions.w b/inform7/if-module/Chapter 4/Actions.w index 9cd8381dc..7779d6407 100644 --- a/inform7/if-module/Chapter 4/Actions.w +++ b/inform7/if-module/Chapter 4/Actions.w @@ -271,7 +271,7 @@ action_name *PL::Actions::act_new(wording W, int implemented_by_I7) { Feeds::feed_text_expanding_strings(L"check"); Feeds::feed_wording(an->present_name); wording W = Feeds::end(id); - package_request *CR = Hierarchy::package_in_package(CHECK_RB_HL, an->an_package); + package_request *CR = Hierarchy::make_package_in(CHECK_RB_HL, an->an_package); an->check_rules = Rulebooks::new_automatic(W, K_action_name, NO_OUTCOME, TRUE, FALSE, FALSE, CR); @@ -281,7 +281,7 @@ action_name *PL::Actions::act_new(wording W, int implemented_by_I7) { Feeds::feed_text_expanding_strings(L"carry out"); Feeds::feed_wording(an->present_name); W = Feeds::end(id); - package_request *OR = Hierarchy::package_in_package(CARRY_OUT_RB_HL, an->an_package); + package_request *OR = Hierarchy::make_package_in(CARRY_OUT_RB_HL, an->an_package); an->carry_out_rules = Rulebooks::new_automatic(W, K_action_name, NO_OUTCOME, TRUE, FALSE, FALSE, OR); @@ -291,7 +291,7 @@ action_name *PL::Actions::act_new(wording W, int implemented_by_I7) { Feeds::feed_text_expanding_strings(L"report"); Feeds::feed_wording(an->present_name); W = Feeds::end(id); - package_request *RR = Hierarchy::package_in_package(REPORT_RB_HL, an->an_package); + package_request *RR = Hierarchy::make_package_in(REPORT_RB_HL, an->an_package); an->report_rules = Rulebooks::new_automatic(W, K_action_name, NO_OUTCOME, TRUE, FALSE, FALSE, RR); diff --git a/inform7/kinds-module/Chapter 2/Using Kinds.w b/inform7/kinds-module/Chapter 2/Using Kinds.w index 72d70dc2b..e082b6f15 100644 --- a/inform7/kinds-module/Chapter 2/Using Kinds.w +++ b/inform7/kinds-module/Chapter 2/Using Kinds.w @@ -501,36 +501,21 @@ inter_name *Kinds::Behaviour::get_inc_iname(kind *K) { if (K == NULL) internal_error("null kind has no inc routine"); if (K->construct->inc_iname) return K->construct->inc_iname; package_request *R = Kinds::RunTime::package(K); - K->construct->inc_iname = - Packaging::function( - InterNames::one_off(I"increment_fn", R), - R, - NULL); - Inter::Symbols::set_flag(InterNames::to_symbol(K->construct->inc_iname), MAKE_NAME_UNIQUE); + K->construct->inc_iname = Hierarchy::make_iname_in(DECREMENT_FN_HL, R); return K->construct->inc_iname; } inter_name *Kinds::Behaviour::get_dec_iname(kind *K) { if (K == NULL) internal_error("null kind has no dec routine"); if (K->construct->dec_iname) return K->construct->dec_iname; package_request *R = Kinds::RunTime::package(K); - K->construct->dec_iname = - Packaging::function( - InterNames::one_off(I"decrement_fn", R), - R, - NULL); - Inter::Symbols::set_flag(InterNames::to_symbol(K->construct->dec_iname), MAKE_NAME_UNIQUE); + K->construct->dec_iname = Hierarchy::make_iname_in(INCREMENT_FN_HL, R); return K->construct->dec_iname; } inter_name *Kinds::Behaviour::get_ranger_iname(kind *K) { if (K == NULL) internal_error("null kind has no inc routine"); if (K->construct->ranger_iname) return K->construct->ranger_iname; package_request *R = Kinds::RunTime::package(K); - K->construct->ranger_iname = - Packaging::function( - InterNames::one_off(I"ranger_fn", R), - R, - NULL); - Inter::Symbols::set_flag(InterNames::to_symbol(K->construct->ranger_iname), MAKE_NAME_UNIQUE); + K->construct->ranger_iname = Hierarchy::make_iname_in(RANGER_FN_HL, R); return K->construct->ranger_iname; } inter_name *Kinds::Behaviour::get_name_of_printing_rule_ACTIONS(kind *K) { diff --git a/inform7/linguistics-module/Chapter 3/Adjectives.w b/inform7/linguistics-module/Chapter 3/Adjectives.w index 19975ba00..6ad29c172 100644 --- a/inform7/linguistics-module/Chapter 3/Adjectives.w +++ b/inform7/linguistics-module/Chapter 3/Adjectives.w @@ -67,8 +67,7 @@ adjectival_phrase *Adjectives::from_word_range(wording W, PREFORM_LANGUAGE_TYPE #endif #ifdef CORE_MODULE aph->aph_package = Hierarchy::package(Modules::current(), ADJECTIVES_HAP); - aph->aph_iname = InterNames::one_off(I"adjective", aph->aph_package); - Inter::Symbols::set_flag(InterNames::to_symbol(aph->aph_iname), MAKE_NAME_UNIQUE); + aph->aph_iname = Hierarchy::make_iname_in(ADJECTIVE_HL, aph->aph_package); #endif if ((nl == NULL) && (Wordings::nonempty(W))) { #ifdef ADJECTIVE_NAME_VETTING diff --git a/inform7/multimedia-module/Chapter 2/External Files.w b/inform7/multimedia-module/Chapter 2/External Files.w index 029d24957..a0019524e 100644 --- a/inform7/multimedia-module/Chapter 2/External Files.w +++ b/inform7/multimedia-module/Chapter 2/External Files.w @@ -239,12 +239,8 @@ void PL::Files::register_file(wording F, wording FN) { exf->IFID_of_owner = Str::duplicate(ifid_of_file); package_request *P = Hierarchy::local_package(EXTERNAL_FILES_HAP); - exf->exf_iname = InterNames::one_off(I"file", P); - InterNames::attach_memo(exf->exf_iname, exf->name); - Inter::Symbols::set_flag(InterNames::to_symbol(exf->exf_iname), MAKE_NAME_UNIQUE); - exf->IFID_array_iname = InterNames::one_off(I"ifid", P); - InterNames::attach_memo(exf->IFID_array_iname, exf->name); - Inter::Symbols::set_flag(InterNames::to_symbol(exf->IFID_array_iname), MAKE_NAME_UNIQUE); + exf->exf_iname = Hierarchy::make_iname_with_memo(FILE_HL, P, exf->name); + exf->IFID_array_iname = Hierarchy::make_iname_with_memo(IFID_HL, P, exf->name); LOGIF(FIGURE_CREATIONS, "Created external file <%W> = filename '%N'\n", F, exf->unextended_filename);