To provide an enforced structure and set of naming conventions for packages and names in the Inter code we generate.
- §1. Introduction
- §2. Notation
- §8.1.1. Basics
- §8.1.3. Modules
- §8.1.5. Actions
- §8.1.7. Activities
- §8.1.9. Adjectives
- §8.1.11. Bibliographic
- §8.1.13. Chronology
- §8.1.15. Conjugations
- §8.1.17. Equations
- §8.1.19. External files
- §8.1.21. Grammar
- §8.1.23. Instances
- §8.1.25. Interactive Fiction
- §8.1.27. Internal files
- §8.1.29. Kinds
- §8.1.31. Literal patterns
- §8.1.33. Mapping hints
- §8.1.35. Phrases
- §8.1.37. Properties
- §8.1.39. Relations
- §8.1.41. Rulebooks
- §8.1.43. Rules
- §8.1.45. Tables
- §8.1.47. Use options
- §8.1.49. Variables
- §8.1.51. Enclosed matter
- §8.2.1. Architectural symbols
- §11. Finding where to put things
- §17. Availability
- §18. Adding packages at attachment points
- §22. Adding packages not at attachment points
- §23. Metadata
§1. Introduction. See What This Module Does for an overview of how Inter hierarchies work.
This section of code amounts to a detailed rundown of exactly how Inform's hierarchy of packages fits together: it's a sort of directory listing of every resource we might compile. In actual runs, of course, not all of them will be.
This section makes extensive use of Hierarchy Locations (in building), which provides a general way to set up Inter hierarchies.
Adding this to the source text of a project:
Include Inter hierarchy in the debugging log.
causes the following function to log the Inter hierarchy before and after linking the kits:
void Hierarchy::log(void) { if (Log::aspect_switched_on(HIERARCHY_DA)) { LOG("+==============================================================+\n"); LOG("Inventory of current Inter tree:\n"); LOG("+--------------------------------------------------------------+\n"); LOG_INDENT; InvTarget::inv_to(DL, Emit::tree()); LOG_OUTDENT; LOG("+==============================================================+\n\n"); } }
§2. Notation. Cower, puny mortal! Know thou not, thou hast entered Macro Valley?
The code given below looks like structured data, but it's actually code, even if the macros give it the look of having a mini-language of its own. But it's easy to read with practice.
We are going to give a series of declarations about what can go into a given position in the hierarchy (a "location requirement"). Each will be a block beginning either H_BEGIN or H_BEGIN_AP, and ending H_END. These can be nested, so we store the requirements on a stack.
An H_BEGIN(location) block declares what can go into a position in the hierarchy matching the location.
An H_BEGIN_AP(id, name, type) block can only be given inside another block, and says that there is an "attachment position" at this location. This means that a family of similarly-structured packages there, and each one has the contents which follow. Attachment positions like id are numbered with the *_HAP enumeration. Names for the packages are generated using name (they will then be numbered in sequence name_0, name_1 and so on), and they have type as their package type.
For example, this:
submodule_identity *activities = LargeScale::register_submodule_identity(I"activities"); H_BEGIN(LocationRequirements::local_submodule(activities)) H_BEGIN_AP(ACTIVITIES_HAP, I"activity", I"_activity") ... H_END H_END
declares that each compilation unit will have a package called activities of type _submodule. Inside that will be a numbered series of packages called activity_0, activity_1, ..., each one of type _activity. And inside each of those packages will be the ingredients specified by ....
Note that H_BEGIN_AP ... H_END blocks can be nested inside each other; in principle to any depth, though as it happens we never exceed 3.
define MAX_H_REQUIREMENTS_DEPTH 10 define H_BEGIN_DECLARATIONS inter_tree *I = Emit::tree(); location_requirement requirements[MAX_H_REQUIREMENTS_DEPTH]; int req_sp = 0; define H_BEGIN(r) if (req_sp >= MAX_H_REQUIREMENTS_DEPTH) internal_error("too deep for me"); requirements[req_sp++] = r; define H_BEGIN_AP(a, b, c) HierarchyLocations::att(I, a, b, c, H_CURRENT); H_BEGIN(LocationRequirements::any_package_of_type(c)) define H_END if (req_sp == 0) internal_error("too many H-exits"); req_sp--; define H_CURRENT requirements[req_sp-1] define H_END_DECLARATIONS if (req_sp != 0) internal_error("hierarchy misaligned");
§3. So, other than H_BEGIN_AP ... H_END blocks, what can appear inside a block? The answer is that we can define four different things.
§4. A package can appear. id is the location ID, one of the *_HL enumerated values. name and type are then the package name and type.
define H_PKG(id, name, type) HierarchyLocations::pkg(I, id, name, type, H_CURRENT);
§5. A constant can appear. Constants, like cats, have three different names: the id is one of the *_HL enumeration values; the identifier is the identifier this constant will have within its Inter package; and the translation is the identifier that will be translated to when the Inter code is eventually converted to, say, Inform 6 code in our final output.
An important difference here is that Inter identifiers only have to be unique within their own packages, which are in effect namespaces. But translated identifiers have to be unique across the whole compiled program. Several different strategies are used to concoct these translated identifiers:
- ● H_C_T means the constant is a one-off, and the translation is the same as the Inter identifier, unless Inform source text has intervened to change that translation.
- ● H_C_G means that the constant will appear in multiple packages, and that Inform should generate unique names for it based on the one given, e.g., by suffixing _1, _2, ...
- ● H_C_S is like H_C_G, except that the name is taken from the parent package with a suffix;
- ● H_C_P is like H_C_G, except that the name is taken from the parent package with a prefix;
- ● H_C_U is like H_C_G, except that this "unique-ization" should be done at the linking stage, not in the main compiler.
- ● H_C_I says that Inform will impose a choice of its own which is not expressible here. This is used very little, but for example to make sure that kind IDs for kinds supplied by kits have the names given for them in Neptune files.
define H_C_T(id, n) HierarchyLocations::con(I, id, n, H_CURRENT); define H_C_G(id, n) HierarchyLocations::ctr(I, id, NULL, Translation::generate(n), H_CURRENT); define H_C_S(id, n) HierarchyLocations::ctr(I, id, NULL, Translation::suffix(n), H_CURRENT); define H_C_P(id, n) HierarchyLocations::ctr(I, id, NULL, Translation::prefix(n), H_CURRENT); define H_C_U(id, n) HierarchyLocations::ctr(I, id, n, Translation::uniqued(), H_CURRENT); define H_C_I(id) HierarchyLocations::ctr(I, id, NULL, Translation::imposed(), H_CURRENT);
§6. Functions use the same conventions, except that "imposition" never happens.
define H_F_T(id, n, t) HierarchyLocations::fun(I, id, n, Translation::to(t), H_CURRENT); define H_F_G(id, n, t) HierarchyLocations::fun(I, id, n, Translation::generate(t), H_CURRENT); define H_F_S(id, n, t) HierarchyLocations::fun(I, id, n, Translation::suffix(t), H_CURRENT); define H_F_P(id, n, t) HierarchyLocations::fun(I, id, n, Translation::prefix(t), H_CURRENT); define H_F_U(id, n) HierarchyLocations::fun(I, id, n, Translation::uniqued(), H_CURRENT);
§7. Last and least, a datum can appear. id is the location ID, one of the *_HL enumerated values.
define H_D_T(id, ident, final) HierarchyLocations::dat(I, id, ident, Translation::to(final), H_CURRENT);
§8. We can finally give the single function which sets up almost the entire hierarchy. The eventual hierarchy will contain both
- (1) material generated in the main compiler, such as functions derived from rule definitions, and also
- (2) material added later in linking, for example from kits like WorldModelKit.
The following catalogue contains location and naming conventions for everything in category (1). Names in category (2) are set up in Synoptic Hierarchy (in pipeline) and The Standard Kits (in pipeline), but by very similar methods.
void Hierarchy::establish(void) { Packaging::incarnate(LargeScale::module_request(Emit::tree(), I"generic")->where_found); SynopticHierarchy::establish(Emit::tree()); KitHierarchy::establish(Emit::tree()); H_BEGIN_DECLARATIONS Establish locations for material created by the compiler8.1; Establish locations for material expected to be added by linking8.2; Prevent architectural symbols from being doubly defined8.3; H_END_DECLARATIONS }
§8.1. Establish locations for material created by the compiler8.1 =
Establish basics8.1.2; Establish modules8.1.4; Establish actions8.1.6; Establish activities8.1.8; Establish adjectives8.1.10; Establish bibliographic8.1.12; Establish chronology8.1.14; Establish conjugations8.1.16; Establish equations8.1.18; Establish external files8.1.20; Establish grammar8.1.22; Establish instances8.1.24; Establish int-fiction8.1.26; Establish internal files8.1.28; Establish kinds8.1.30; Establish literal patterns8.1.32; Establish mapping hints8.1.34; Establish phrases8.1.36; Establish properties8.1.38; Establish relations8.1.40; Establish rulebooks8.1.42; Establish rules8.1.44; Establish tables8.1.46; Establish use options8.1.48; Establish variables8.1.50; Establish enclosed matter8.1.52; The rest8.1.54;
- This code is used in §8.
§8.2. Establish locations for material expected to be added by linking8.2 =
Establish architectural resources8.2.2;
- This code is used in §8.
enum BOGUS_HAP from 0 enum I7_VERSION_NUMBER_HL enum I7_FULL_VERSION_NUMBER_HL enum VM_MD_HL enum VM_ICON_MD_HL enum LANGUAGE_ELEMENTS_USED_MD_HL enum LANGUAGE_ELEMENTS_NOT_USED_MD_HL enum MEMORY_ECONOMY_MD_HL enum MAX_INDEXED_FIGURES_HL enum COPYRIGHT_LICENCES_HL enum NO_TEST_SCENARIOS_HL enum MEMORY_HEAP_SIZE_HL enum LOCALPARKING_HL enum RNG_SEED_AT_START_OF_PLAY_HL enum MAX_FRAME_SIZE_NEEDED_HL enum SUBMAIN_HL enum AFTER_ACTION_HOOK_HL enum HEADINGS_HAP enum HEADING_INDEXABLE_MD_HL enum HEADING_TEXT_MD_HL enum HEADING_PARTS_MD_HL enum HEADING_PART1_MD_HL enum HEADING_PART2_MD_HL enum HEADING_PART3_MD_HL enum HEADING_AT_MD_HL enum HEADING_LEVEL_MD_HL enum HEADING_INDENTATION_MD_HL enum HEADING_WORD_COUNT_MD_HL enum HEADING_SUMMARY_MD_HL enum HEADING_ID_HL enum RTPS_HAP enum RTP_SOURCE_HL enum DEBUGGING_ASPECTS_HAP enum DEBUGGING_ASPECT_NAME_MD_HL enum DEBUGGING_ASPECT_USED_MD_HL
§8.1.2. Establish basics8.1.2 =
submodule_identity *basics = LargeScale::register_submodule_identity(I"basics"); H_BEGIN(LocationRequirements::completion_submodule(I, basics)) H_C_T(I7_VERSION_NUMBER_HL, I"I7_VERSION_NUMBER") H_C_T(I7_FULL_VERSION_NUMBER_HL, I"I7_FULL_VERSION_NUMBER") H_C_T(VM_MD_HL, I"^virtual_machine") H_C_T(VM_ICON_MD_HL, I"^virtual_machine_icon") H_C_T(LANGUAGE_ELEMENTS_USED_MD_HL, I"^language_elements_used") H_C_T(LANGUAGE_ELEMENTS_NOT_USED_MD_HL, I"^language_elements_not_used") H_C_T(MEMORY_ECONOMY_MD_HL, I"^memory_economy") H_C_T(MEMORY_HEAP_SIZE_HL, I"MEMORY_HEAP_SIZE") H_C_T(LOCALPARKING_HL, I"LocalParking") H_C_T(RNG_SEED_AT_START_OF_PLAY_HL, I"RNG_SEED_AT_START_OF_PLAY") H_C_T(MAX_INDEXED_FIGURES_HL, I"^max_indexed_figures") H_C_T(COPYRIGHT_LICENCES_HL, I"COPYRIGHT_LICENCE_TEXT") H_C_T(MAX_FRAME_SIZE_NEEDED_HL, I"MAX_FRAME_SIZE_NEEDED") H_F_T(SUBMAIN_HL, I"Submain_fn", I"Submain") H_C_T(AFTER_ACTION_HOOK_HL, I"AfterActionHook") H_BEGIN_AP(HEADINGS_HAP, I"heading", I"_heading") H_C_U(HEADING_INDEXABLE_MD_HL, I"^indexable") H_C_U(HEADING_TEXT_MD_HL, I"^text") H_C_U(HEADING_PARTS_MD_HL, I"^parts") H_C_U(HEADING_PART1_MD_HL, I"^part1") H_C_U(HEADING_PART2_MD_HL, I"^part2") H_C_U(HEADING_PART3_MD_HL, I"^part3") H_C_U(HEADING_AT_MD_HL, I"^at") H_C_U(HEADING_LEVEL_MD_HL, I"^level") H_C_U(HEADING_INDENTATION_MD_HL, I"^indentation") H_C_U(HEADING_WORD_COUNT_MD_HL, I"^word_count") H_C_U(HEADING_SUMMARY_MD_HL, I"^summary") H_C_U(HEADING_ID_HL, I"id") H_END H_BEGIN_AP(RTPS_HAP, I"rtp_source", I"_rtp_source") H_C_U(RTP_SOURCE_HL, I"location") H_END H_BEGIN_AP(DEBUGGING_ASPECTS_HAP, I"debugging_aspect", I"_debugging_aspect") H_C_U(DEBUGGING_ASPECT_NAME_MD_HL, I"^name") H_C_U(DEBUGGING_ASPECT_USED_MD_HL, I"^used") H_END H_END
- This code is used in §8.1.
enum EXT_CATEGORY_MD_HL enum EXT_AT_MD_HL enum EXT_TITLE_MD_HL enum EXT_AUTHOR_MD_HL enum EXT_VERSION_MD_HL enum EXT_CREDIT_MD_HL enum EXT_EXTRA_CREDIT_MD_HL enum EXT_MODESTY_MD_HL enum EXT_WORD_COUNT_MD_HL enum EXT_INCLUDED_AT_MD_HL enum EXT_INCLUDED_BY_MD_HL enum EXT_AUTO_INCLUDED_MD_HL enum EXT_STANDARD_MD_HL enum EXTENSION_ID_HL
§8.1.4. Establish modules8.1.4 =
H_BEGIN(LocationRequirements::any_package_of_type(I"_module")) H_C_U(EXT_CATEGORY_MD_HL, I"^category") H_C_U(EXT_AT_MD_HL, I"^at") H_C_U(EXT_TITLE_MD_HL, I"^title") H_C_U(EXT_AUTHOR_MD_HL, I"^author") H_C_U(EXT_VERSION_MD_HL, I"^version") H_C_U(EXT_CREDIT_MD_HL, I"^credit") H_C_U(EXT_EXTRA_CREDIT_MD_HL, I"^extra_credit") H_C_U(EXT_MODESTY_MD_HL, I"^modesty") H_C_U(EXT_WORD_COUNT_MD_HL, I"^word_count") H_C_U(EXT_INCLUDED_AT_MD_HL, I"^included_at") H_C_U(EXT_INCLUDED_BY_MD_HL, I"^included_by") H_C_U(EXT_AUTO_INCLUDED_MD_HL, I"^auto_included") H_C_U(EXT_STANDARD_MD_HL, I"^standard") H_C_U(EXTENSION_ID_HL, I"extension_id") H_END
- This code is used in §8.1.
enum ACTIONS_HAP enum ACTION_NAME_MD_HL enum ACTION_DISPLAY_NAME_MD_HL enum ACTION_PAST_NAME_MD_HL enum ACTION_AT_MD_HL enum ACTION_VARC_MD_HL enum DEBUG_ACTION_MD_HL enum ACTION_DSHARP_MD_HL enum NO_CODING_MD_HL enum OUT_OF_WORLD_MD_HL enum REQUIRES_LIGHT_MD_HL enum CAN_HAVE_NOUN_MD_HL enum CAN_HAVE_SECOND_MD_HL enum NOUN_ACCESS_MD_HL enum SECOND_ACCESS_MD_HL enum NOUN_KIND_MD_HL enum SECOND_KIND_MD_HL enum ACTION_CHECK_MD_HL enum ACTION_CARRY_OUT_MD_HL enum ACTION_REPORT_MD_HL enum ACTION_INDEX_HEADING_MD_HL enum ACTION_INDEX_SUBHEADING_MD_HL enum ACTION_SPECIFICATION_MD_HL enum ACTION_DESCRIPTION_MD_HL enum ACTION_ID_HL enum ACTION_BASE_NAME_HL enum WAIT_HL enum TRANSLATED_BASE_NAME_HL enum DOUBLE_SHARP_NAME_HL enum PERFORM_FN_HL enum DEBUG_ACTION_FN_HL enum CHECK_RB_HL enum CARRY_OUT_RB_HL enum REPORT_RB_HL enum ACTION_SHV_ID_HL enum ACTION_STV_CREATOR_FN_HL enum CG_LINES_PRODUCING_HAP enum CG_LINE_PRODUCING_MD_HL enum ACTION_VARIABLES_HAP enum ACTION_VAR_NAME_MD_HL enum ACTION_VAR_AT_MD_HL enum ACTION_VAR_DOCUMENTATION_MD_HL enum ACTION_VAR_KIND_MD_HL enum NAMED_ACTION_PATTERNS_HAP enum NAP_FN_HL enum NAP_NAME_MD_HL enum NAP_AT_MD_HL enum NAMED_ACTION_ENTRIES_HAP enum NAPE_TEXT_MD_HL enum NAPE_AT_MD_HL
§8.1.6. Establish actions8.1.6 =
submodule_identity *actions = LargeScale::register_submodule_identity(I"actions"); H_BEGIN(LocationRequirements::local_submodule(actions)) H_BEGIN_AP(ACTIONS_HAP, I"action", I"_action") H_C_U(ACTION_NAME_MD_HL, I"^name") H_C_U(ACTION_DISPLAY_NAME_MD_HL, I"^display_name") H_C_U(ACTION_PAST_NAME_MD_HL, I"^past_name") H_C_U(ACTION_AT_MD_HL, I"^at") H_C_U(ACTION_VARC_MD_HL, I"^var_creator") H_C_U(DEBUG_ACTION_MD_HL, I"^debug_fn") H_C_U(ACTION_DSHARP_MD_HL, I"^double_sharp") H_C_U(NO_CODING_MD_HL, I"^no_coding") H_C_U(OUT_OF_WORLD_MD_HL, I"^out_of_world") H_C_U(REQUIRES_LIGHT_MD_HL, I"^requires_light") H_C_U(CAN_HAVE_NOUN_MD_HL, I"^can_have_noun") H_C_U(CAN_HAVE_SECOND_MD_HL, I"^can_have_second") H_C_U(NOUN_ACCESS_MD_HL, I"^noun_access") H_C_U(SECOND_ACCESS_MD_HL, I"^second_access") H_C_U(NOUN_KIND_MD_HL, I"^noun_kind") H_C_U(SECOND_KIND_MD_HL, I"^second_kind") H_C_U(ACTION_CHECK_MD_HL, I"^check_rulebook") H_C_U(ACTION_CARRY_OUT_MD_HL, I"^carry_out_rulebook") H_C_U(ACTION_REPORT_MD_HL, I"^report_rulebook") H_C_U(ACTION_INDEX_HEADING_MD_HL, I"^index_heading") H_C_U(ACTION_INDEX_SUBHEADING_MD_HL, I"^index_subheading") H_C_U(ACTION_SPECIFICATION_MD_HL, I"^specification") H_C_U(ACTION_DESCRIPTION_MD_HL, I"^description") H_C_U(ACTION_ID_HL, I"action_id") H_C_G(ACTION_BASE_NAME_HL, I"A") H_C_T(WAIT_HL, I"Wait") H_C_I(TRANSLATED_BASE_NAME_HL) H_C_P(DOUBLE_SHARP_NAME_HL, I"##") H_F_S(PERFORM_FN_HL, I"perform_fn", I"Sub") H_F_S(DEBUG_ACTION_FN_HL, I"debug_fn", I"Dbg") H_PKG(CHECK_RB_HL, I"check_rb", I"_rulebook") H_PKG(CARRY_OUT_RB_HL, I"carry_out_rb", I"_rulebook") H_PKG(REPORT_RB_HL, I"report_rb", I"_rulebook") H_C_U(ACTION_SHV_ID_HL, I"var_id") H_F_U(ACTION_STV_CREATOR_FN_HL, I"stv_creator_fn") H_BEGIN_AP(CG_LINES_PRODUCING_HAP, I"cg_line", I"_cg_line") H_C_U(CG_LINE_PRODUCING_MD_HL, I"^line") H_END H_BEGIN_AP(ACTION_VARIABLES_HAP, I"action_variable", I"_shared_variable") H_C_U(ACTION_VAR_NAME_MD_HL, I"^name") H_C_U(ACTION_VAR_AT_MD_HL, I"^at") H_C_U(ACTION_VAR_DOCUMENTATION_MD_HL, I"^documentation") H_C_U(ACTION_VAR_KIND_MD_HL, I"^kind") H_END H_END H_END submodule_identity *naps = LargeScale::register_submodule_identity(I"named_action_patterns"); H_BEGIN(LocationRequirements::local_submodule(naps)) H_BEGIN_AP(NAMED_ACTION_PATTERNS_HAP, I"named_action_pattern", I"_named_action_pattern") H_F_U(NAP_FN_HL, I"nap_fn") H_C_U(NAP_NAME_MD_HL, I"^name") H_C_U(NAP_AT_MD_HL, I"^at") H_BEGIN_AP(NAMED_ACTION_ENTRIES_HAP, I"named_action_pattern_entry", I"_named_action_pattern_entry") H_C_U(NAPE_TEXT_MD_HL, I"^text") H_C_U(NAPE_AT_MD_HL, I"^at") H_END H_END H_END
- This code is used in §8.1.
enum ACTIVITIES_HAP enum ACTIVITY_NAME_MD_HL enum ACTIVITY_AT_MD_HL enum ACTIVITY_VAR_CREATOR_MD_HL enum ACTIVITY_BEFORE_MD_HL enum ACTIVITY_FOR_MD_HL enum ACTIVITY_AFTER_MD_HL enum ACTIVITY_UFA_MD_HL enum ACTIVITY_HID_MD_HL enum ACTIVITY_INDEX_ID_MD_HL enum ACTIVITY_DOCUMENTATION_MD_HL enum ACTIVITY_XREFS_HAP enum XREF_TEXT_MD_HL enum XREF_AT_MD_HL enum ACTIVITY_ID_HL enum ACTIVITY_VALUE_HL enum ACTIVITY_BEFORE_RB_HL enum ACTIVITY_FOR_RB_HL enum ACTIVITY_AFTER_RB_HL enum ACTIVITY_EMPTY_MD_HL enum ACTIVITY_SHV_ID_HL enum ACTIVITY_VARC_FN_HL
§8.1.8. Establish activities8.1.8 =
submodule_identity *activities = LargeScale::register_submodule_identity(I"activities"); H_BEGIN(LocationRequirements::local_submodule(activities)) H_BEGIN_AP(ACTIVITIES_HAP, I"activity", I"_activity") H_C_U(ACTIVITY_NAME_MD_HL, I"^name") H_C_U(ACTIVITY_AT_MD_HL, I"^at") H_C_U(ACTIVITY_BEFORE_MD_HL, I"^before_rulebook") H_C_U(ACTIVITY_FOR_MD_HL, I"^for_rulebook") H_C_U(ACTIVITY_AFTER_MD_HL, I"^after_rulebook") H_C_U(ACTIVITY_EMPTY_MD_HL, I"^empty") H_C_U(ACTIVITY_UFA_MD_HL, I"^used_by_future") H_C_U(ACTIVITY_HID_MD_HL, I"^hide_in_debugging") H_C_U(ACTIVITY_VAR_CREATOR_MD_HL, I"^var_creator") H_C_U(ACTIVITY_DOCUMENTATION_MD_HL, I"^documentation") H_C_U(ACTIVITY_INDEX_ID_MD_HL, I"^index_id") H_BEGIN_AP(ACTIVITY_XREFS_HAP, I"activity_xref", I"_activity_xref") H_C_U(XREF_TEXT_MD_HL, I"^text") H_C_U(XREF_AT_MD_HL, I"^at") H_END H_C_U(ACTIVITY_ID_HL, I"activity_id") H_C_G(ACTIVITY_VALUE_HL, I"V") H_PKG(ACTIVITY_BEFORE_RB_HL, I"before_rb", I"_rulebook") H_PKG(ACTIVITY_FOR_RB_HL, I"for_rb", I"_rulebook") H_PKG(ACTIVITY_AFTER_RB_HL, I"after_rb", I"_rulebook") H_C_U(ACTIVITY_SHV_ID_HL, I"var_id") H_F_U(ACTIVITY_VARC_FN_HL, I"stv_creator_fn") H_END H_END
- This code is used in §8.1.
enum ADJECTIVES_HAP enum ADJECTIVE_HL enum ADJECTIVE_TEXT_MD_HL enum ADJECTIVE_INDEX_MD_HL enum MEASUREMENTS_HAP enum MEASUREMENT_FN_HL enum ADJECTIVE_PHRASES_HAP enum DEFINITION_FN_HL enum ADJECTIVE_TASKS_HAP enum TASK_FN_HL
§8.1.10. Establish adjectives8.1.10 =
submodule_identity *adjectives = LargeScale::register_submodule_identity(I"adjectives"); H_BEGIN(LocationRequirements::local_submodule(adjectives)) H_BEGIN_AP(ADJECTIVES_HAP, I"adjective", I"_adjective") H_C_U(ADJECTIVE_HL, I"adjective") H_C_U(ADJECTIVE_TEXT_MD_HL, I"^text") H_C_U(ADJECTIVE_INDEX_MD_HL, I"^index_entry") H_BEGIN_AP(ADJECTIVE_TASKS_HAP, I"adjective_task", I"_adjective_task") H_F_U(TASK_FN_HL, I"task_fn") H_END H_END H_BEGIN_AP(MEASUREMENTS_HAP, I"measurement", I"_measurement") H_F_G(MEASUREMENT_FN_HL, I"measurement_fn", I"MADJ_Test") H_END H_BEGIN_AP(ADJECTIVE_PHRASES_HAP, I"adjective_phrase", I"_adjective_phrase") H_F_G(DEFINITION_FN_HL, I"measurement_fn", I"ADJDEFN") H_END H_END
- This code is used in §8.1.
enum UUID_ARRAY_HL enum STORY_HL enum HEADLINE_HL enum STORY_AUTHOR_HL enum RELEASE_HL enum SERIAL_HL enum IFID_MD_HL enum STORY_MD_HL enum HEADLINE_MD_HL enum GENRE_MD_HL enum AUTHOR_MD_HL enum RELEASE_MD_HL enum STORY_VERSION_MD_HL enum SERIAL_MD_HL enum LANGUAGE_MD_HL enum DESCRIPTION_MD_HL enum LICENCE_MD_HL enum COPYRIGHT_MD_HL enum ORIGIN_URL_MD_HL enum RIGHTS_HISTORY_MD_HL enum EPISODE_NUMBER_MD_HL enum SERIES_NAME_MD_HL enum YEAR_MD_HL
§8.1.12. Establish bibliographic8.1.12 =
submodule_identity *bibliographic = LargeScale::register_submodule_identity(I"bibliographic"); H_BEGIN(LocationRequirements::completion_submodule(I, bibliographic)) H_C_T(UUID_ARRAY_HL, I"UUID_ARRAY") H_D_T(STORY_HL, I"Story_datum", I"Story") H_D_T(HEADLINE_HL, I"Headline_datum", I"Headline") H_D_T(STORY_AUTHOR_HL, I"Author_datum", I"Story_Author") H_D_T(RELEASE_HL, I"Release_datum", I"Release") H_D_T(SERIAL_HL, I"Serial_datum", I"Serial") H_C_T(IFID_MD_HL, I"^IFID") H_C_T(STORY_MD_HL, I"^title") H_C_T(HEADLINE_MD_HL, I"^headline") H_C_T(GENRE_MD_HL, I"^genre") H_C_T(AUTHOR_MD_HL, I"^author") H_C_T(RELEASE_MD_HL, I"^release") H_C_T(STORY_VERSION_MD_HL, I"^version") H_C_T(SERIAL_MD_HL, I"^serial") H_C_T(LANGUAGE_MD_HL, I"^language") H_C_T(DESCRIPTION_MD_HL, I"^description") H_C_T(LICENCE_MD_HL, I"^licence") H_C_T(COPYRIGHT_MD_HL, I"^copyright") H_C_T(ORIGIN_URL_MD_HL, I"^origin") H_C_T(RIGHTS_HISTORY_MD_HL, I"^rights") H_C_T(EPISODE_NUMBER_MD_HL, I"^episode") H_C_T(SERIES_NAME_MD_HL, I"^series") H_C_T(YEAR_MD_HL, I"^year") H_END
- This code is used in §8.1.
enum PAST_TENSE_CONDS_HAP enum PTC_ID_HL enum PTC_VALUE_MD_HL enum PTC_FN_HL enum ACTION_HISTORY_CONDS_HAP enum AHC_ID_HL enum AHC_VALUE_MD_HL enum AHC_FN_HL
§8.1.14. Establish chronology8.1.14 =
submodule_identity *chronology = LargeScale::register_submodule_identity(I"chronology"); H_BEGIN(LocationRequirements::local_submodule(chronology)) H_BEGIN_AP(PAST_TENSE_CONDS_HAP, I"past_condition", I"_past_condition") H_C_U(PTC_ID_HL, I"ptc_id") H_C_U(PTC_VALUE_MD_HL, I"^value") H_F_G(PTC_FN_HL, I"pcon_fn", I"PCONR") H_END H_BEGIN_AP(ACTION_HISTORY_CONDS_HAP, I"action_history_condition", I"_action_history_condition") H_C_U(AHC_ID_HL, I"ahc_id") H_C_U(AHC_VALUE_MD_HL, I"^value") H_F_G(AHC_FN_HL, I"pap_fn", I"PAPR") H_END H_END
- This code is used in §8.1.
enum CV_MEANING_HL enum CV_MODAL_HL enum CV_NEG_HL enum CV_POS_HL enum MVERBS_HAP enum MVERB_NAME_MD_HL enum MVERB_AT_MD_HL enum MVERB_INFINITIVE_MD_HL enum MODAL_CONJUGATION_FN_HL enum VERBS_HAP enum VERB_NAME_MD_HL enum VERB_AT_MD_HL enum VERB_INFINITIVE_MD_HL enum VERB_MEANING_MD_HL enum VERB_MEANINGLESS_MD_HL enum VERB_PRESENT_MD_HL enum VERB_PAST_MD_HL enum VERB_PRESENT_PERFECT_MD_HL enum VERB_PAST_PERFECT_MD_HL enum NONMODAL_CONJUGATION_FN_HL enum VERB_FORMS_HAP enum FORM_VALUE_MD_HL enum FORM_SORTING_MD_HL enum FORM_FN_HL enum CONJUGATION_FN_HL enum PREPOSITIONS_HAP enum PREPOSITION_NAME_MD_HL enum PREPOSITION_AT_MD_HL
§8.1.16. Establish conjugations8.1.16 =
submodule_identity *conjugations = LargeScale::register_submodule_identity(I"conjugations"); H_BEGIN(LocationRequirements::generic_submodule(I, conjugations)) H_C_T(CV_MEANING_HL, I"CV_MEANING") H_C_T(CV_MODAL_HL, I"CV_MODAL") H_C_T(CV_NEG_HL, I"CV_NEG") H_C_T(CV_POS_HL, I"CV_POS") H_END H_BEGIN(LocationRequirements::local_submodule(conjugations)) H_BEGIN_AP(MVERBS_HAP, I"modal_verb", I"_modal_verb") H_C_U(MVERB_NAME_MD_HL, I"^name") H_C_U(MVERB_AT_MD_HL, I"^at") H_C_U(MVERB_INFINITIVE_MD_HL, I"^infinitive") H_F_G(MODAL_CONJUGATION_FN_HL, I"conjugation_fn", I"ConjugateModalVerb") H_END H_BEGIN_AP(VERBS_HAP, I"verb", I"_verb") H_C_U(VERB_NAME_MD_HL, I"^name") H_C_U(VERB_AT_MD_HL, I"^at") H_C_U(VERB_INFINITIVE_MD_HL, I"^infinitive") H_C_U(VERB_MEANING_MD_HL, I"^meaning") H_C_U(VERB_MEANINGLESS_MD_HL, I"^meaningless") H_C_U(VERB_PRESENT_MD_HL, I"^present") H_C_U(VERB_PAST_MD_HL, I"^past") H_C_U(VERB_PRESENT_PERFECT_MD_HL, I"^present_perfect") H_C_U(VERB_PAST_PERFECT_MD_HL, I"^past_perfect") H_F_G(NONMODAL_CONJUGATION_FN_HL, I"conjugation_fn", I"ConjugateVerb") H_BEGIN_AP(VERB_FORMS_HAP, I"form", I"_verb_form") H_C_U(FORM_VALUE_MD_HL, I"^verb_value") H_C_U(FORM_SORTING_MD_HL, I"^verb_sorting") H_F_U(FORM_FN_HL, I"form_fn") H_END H_END H_BEGIN_AP(PREPOSITIONS_HAP, I"preposition", I"_preposition") H_C_U(PREPOSITION_NAME_MD_HL, I"^text") H_C_U(PREPOSITION_AT_MD_HL, I"^at") H_END H_END
- This code is used in §8.1.
enum EQUATIONS_HAP enum IDENTIFIER_FN_HL enum EQUATION_NAME_MD_HL enum EQUATION_TEXT_MD_HL enum EQUATION_AT_MD_HL
§8.1.18. Establish equations8.1.18 =
submodule_identity *equations = LargeScale::register_submodule_identity(I"equations"); H_BEGIN(LocationRequirements::local_submodule(equations)) H_BEGIN_AP(EQUATIONS_HAP, I"equation", I"_equation") H_C_U(EQUATION_NAME_MD_HL, I"^name") H_C_U(EQUATION_TEXT_MD_HL, I"^text") H_C_U(EQUATION_AT_MD_HL, I"^at") H_F_U(IDENTIFIER_FN_HL, I"identifier_fn") H_END H_END
- This code is used in §8.1.
enum EXTERNAL_FILES_HAP enum FILE_HL enum IFID_HL
§8.1.20. Establish external files8.1.20 =
submodule_identity *external_files = LargeScale::register_submodule_identity(I"external_files"); H_BEGIN(LocationRequirements::local_submodule(external_files)) H_BEGIN_AP(EXTERNAL_FILES_HAP, I"external_file", I"_external_file") H_C_U(FILE_HL, I"file") H_C_U(IFID_HL, I"ifid") H_END H_END
- This code is used in §8.1.
enum COND_TOKENS_HAP enum CONDITIONAL_TOKEN_FN_HL enum TESTS_HAP enum SCRIPT_HL enum TEST_MD_HL enum TEST_NAME_MD_HL enum TEST_LENGTH_MD_HL enum REQUIREMENTS_HL enum MISTAKES_HAP enum MISTAKE_FN_HL enum NOUN_FILTERS_HAP enum NOUN_FILTER_FN_HL enum PARSE_NAMES_HAP enum PARSE_NAME_FN_HL enum SCOPE_FILTERS_HAP enum SCOPE_FILTER_FN_HL enum SLASH_TOKENS_HAP enum SLASH_FN_HL enum REPARSE_CODE_HL enum DICT_ENTRY_BYTES_HL enum DICT_WORD_SIZE_HL enum VERB_DIRECTIVE_META_HL enum VERB_DIRECTIVE_NOUN_FILTER_HL enum VERB_DIRECTIVE_SCOPE_FILTER_HL enum VERB_DIRECTIVE_CREATURE_HL enum VERB_DIRECTIVE_DIVIDER_HL enum VERB_DIRECTIVE_HELD_HL enum VERB_DIRECTIVE_MULTI_HL enum VERB_DIRECTIVE_MULTIEXCEPT_HL enum VERB_DIRECTIVE_MULTIHELD_HL enum VERB_DIRECTIVE_MULTIINSIDE_HL enum VERB_DIRECTIVE_NOUN_HL enum VERB_DIRECTIVE_NUMBER_HL enum VERB_DIRECTIVE_RESULT_HL enum VERB_DIRECTIVE_REVERSE_HL enum VERB_DIRECTIVE_SLASH_HL enum VERB_DIRECTIVE_SPECIAL_HL enum VERB_DIRECTIVE_TOPIC_HL enum OBJECT_NOUNS_HAP enum NAME_ARRAY_HL enum COMMANDS_HAP enum VERB_DECLARATION_ARRAY_HL enum MISTAKEACTION_HL enum MISTAKEACTIONSUB_HL enum COMMAND_GRAMMARS_HAP enum CG_IS_COMMAND_MD_HL enum CG_IS_TOKEN_MD_HL enum CG_IS_SUBJECT_MD_HL enum CG_IS_VALUE_MD_HL enum CG_IS_CONSULT_MD_HL enum CG_IS_PROPERTY_NAME_MD_HL enum CG_AT_MD_HL enum CG_NAME_MD_HL enum CG_COMMAND_MD_HL enum PROPERTY_GPR_FN_HL enum PARSE_LINE_FN_HL enum CONSULT_FN_HL enum NO_VERB_VERB_DEFINED_HL enum CG_COMMAND_ALIASES_HAP enum CG_ALIAS_MD_HL enum CG_LINES_HAP enum CG_XREF_SYMBOL_HL enum CG_LINE_TEXT_MD_HL enum CG_LINE_AT_MD_HL enum CG_ACTION_MD_HL enum CG_LINE_REVERSED_MD_HL enum CG_TRUE_VERB_MD_HL
§8.1.22. Establish grammar8.1.22 =
submodule_identity *grammar = LargeScale::register_submodule_identity(I"grammar"); H_BEGIN(LocationRequirements::generic_submodule(I, grammar)) H_C_T(REPARSE_CODE_HL, I"REPARSE_CODE") H_C_T(DICT_ENTRY_BYTES_HL, I"DICT_ENTRY_BYTES") H_C_T(DICT_WORD_SIZE_HL, I"DICT_WORD_SIZE") H_C_T(VERB_DIRECTIVE_META_HL, I"VERB_DIRECTIVE_META") H_C_T(VERB_DIRECTIVE_NOUN_FILTER_HL, I"VERB_DIRECTIVE_NOUN_FILTER") H_C_T(VERB_DIRECTIVE_SCOPE_FILTER_HL, I"VERB_DIRECTIVE_SCOPE_FILTER") H_C_T(VERB_DIRECTIVE_CREATURE_HL, I"VERB_DIRECTIVE_CREATURE") H_C_T(VERB_DIRECTIVE_DIVIDER_HL, I"VERB_DIRECTIVE_DIVIDER") H_C_T(VERB_DIRECTIVE_HELD_HL, I"VERB_DIRECTIVE_HELD") H_C_T(VERB_DIRECTIVE_MULTI_HL, I"VERB_DIRECTIVE_MULTI") H_C_T(VERB_DIRECTIVE_MULTIEXCEPT_HL, I"VERB_DIRECTIVE_MULTIEXCEPT") H_C_T(VERB_DIRECTIVE_MULTIHELD_HL, I"VERB_DIRECTIVE_MULTIHELD") H_C_T(VERB_DIRECTIVE_MULTIINSIDE_HL, I"VERB_DIRECTIVE_MULTIINSIDE") H_C_T(VERB_DIRECTIVE_NOUN_HL, I"VERB_DIRECTIVE_NOUN") H_C_T(VERB_DIRECTIVE_NUMBER_HL, I"VERB_DIRECTIVE_NUMBER") H_C_T(VERB_DIRECTIVE_RESULT_HL, I"VERB_DIRECTIVE_RESULT") H_C_T(VERB_DIRECTIVE_REVERSE_HL, I"VERB_DIRECTIVE_REVERSE") H_C_T(VERB_DIRECTIVE_SLASH_HL, I"VERB_DIRECTIVE_SLASH") H_C_T(VERB_DIRECTIVE_SPECIAL_HL, I"VERB_DIRECTIVE_SPECIAL") H_C_T(VERB_DIRECTIVE_TOPIC_HL, I"VERB_DIRECTIVE_TOPIC") H_C_T(MISTAKEACTION_HL, I"##MistakeAction") H_END H_BEGIN(LocationRequirements::local_submodule(grammar)) H_BEGIN_AP(TESTS_HAP, I"test", I"_test") H_C_U(TEST_NAME_MD_HL, I"^name") H_C_U(TEST_LENGTH_MD_HL, I"^length") H_C_U(SCRIPT_HL, I"script") H_C_U(REQUIREMENTS_HL, I"requirements") H_END H_BEGIN_AP(MISTAKES_HAP, I"mistake", I"_mistake") H_F_G(MISTAKE_FN_HL, I"mistake_fn", I"Mistake_Token") H_END H_BEGIN_AP(NOUN_FILTERS_HAP, I"noun_filter", I"_noun_filter") H_F_G(NOUN_FILTER_FN_HL, I"filter_fn", I"Noun_Filter") H_END H_BEGIN_AP(SCOPE_FILTERS_HAP, I"scope_filter", I"_scope_filter") H_F_G(SCOPE_FILTER_FN_HL, I"filter_fn", I"Scope_Filter") H_END H_BEGIN_AP(PARSE_NAMES_HAP, I"parse_name", I"_parse_name") H_END H_BEGIN_AP(SLASH_TOKENS_HAP, I"slash_token", I"_slash_token") H_F_G(SLASH_FN_HL, I"slash_fn", I"SlashGPR") H_END H_END H_BEGIN(LocationRequirements::completion_submodule(I, grammar)) H_BEGIN_AP(OBJECT_NOUNS_HAP, I"object_noun", I"_object_noun") H_F_G(NAME_ARRAY_HL, I"name_array", I"name_array") H_F_G(PARSE_NAME_FN_HL, I"parse_name_fn", I"parse_name") H_END H_BEGIN_AP(COMMANDS_HAP, I"command", I"_command") H_F_G(VERB_DECLARATION_ARRAY_HL, NULL, I"GV_Grammar") H_C_T(NO_VERB_VERB_DEFINED_HL, I"NO_VERB_VERB_DEFINED") H_END H_BEGIN_AP(COMMAND_GRAMMARS_HAP, I"command_grammar", I"_command_grammar") H_C_U(CG_IS_COMMAND_MD_HL, I"^is_command") H_C_U(CG_IS_TOKEN_MD_HL, I"^is_token") H_C_U(CG_IS_SUBJECT_MD_HL, I"^is_subject") H_C_U(CG_IS_VALUE_MD_HL, I"^is_value") H_C_U(CG_IS_CONSULT_MD_HL, I"^is_consult") H_C_U(CG_IS_PROPERTY_NAME_MD_HL, I"^is_property_name") H_C_U(CG_AT_MD_HL, I"^at") H_C_U(CG_NAME_MD_HL, I"^name") H_C_U(CG_COMMAND_MD_HL, I"^command") H_F_G(PROPERTY_GPR_FN_HL, I"either_or_GPR_fn", I"PRN_PN") H_F_G(PARSE_LINE_FN_HL, I"parse_line_fn", I"GPR_Line") H_F_G(CONSULT_FN_HL, I"consult_fn", I"Consult_Grammar") H_BEGIN_AP(CG_COMMAND_ALIASES_HAP, I"cg_alias", I"_cg_alias") H_C_U(CG_ALIAS_MD_HL, I"^alias") H_END H_BEGIN_AP(CG_LINES_HAP, I"cg_line", I"_cg_line") H_C_U(CG_XREF_SYMBOL_HL, I"line_ref") H_C_U(CG_LINE_TEXT_MD_HL, I"^text") H_C_U(CG_LINE_AT_MD_HL, I"^at") H_C_U(CG_ACTION_MD_HL, I"^action") H_C_U(CG_TRUE_VERB_MD_HL, I"^true_verb") H_C_U(CG_LINE_REVERSED_MD_HL, I"^reversed") H_END H_END H_BEGIN_AP(COND_TOKENS_HAP, I"conditional_token", I"_conditional_token") H_F_G(CONDITIONAL_TOKEN_FN_HL, I"conditional_token_fn", I"Cond_Token") H_END H_F_T(MISTAKEACTIONSUB_HL, I"MistakeActionSub_fn", I"MistakeActionSub") H_END
- This code is used in §8.1.
enum INSTANCES_HAP enum INSTANCE_NAME_MD_HL enum INSTANCE_DECLARATION_ORDER_MD_HL enum INSTANCE_PRINTED_NAME_MD_HL enum INSTANCE_ABBREVIATION_MD_HL enum INSTANCE_AT_MD_HL enum INSTANCE_KIND_SET_AT_MD_HL enum INSTANCE_PROGENITOR_SET_AT_MD_HL enum INSTANCE_REGION_SET_AT_MD_HL enum INSTANCE_VALUE_MD_HL enum INSTANCE_KIND_MD_HL enum INSTANCE_KIND_XREF_MD_HL enum INSTANCE_INDEX_KIND_MD_HL enum INSTANCE_INDEX_KIND_CHAIN_MD_HL enum INSTANCE_IS_OBJECT_MD_HL enum INSTANCE_IS_SCENE_MD_HL enum INSTANCE_IS_ENTIRE_GAME_MD_HL enum INSTANCE_SCENE_STARTS_MD_HL enum INSTANCE_SCENE_STARTS_ON_CONDITION_MD_HL enum INSTANCE_SCENE_STARTS_ON_BEAT_MD_HL enum INSTANCE_SCENE_ENDS_ON_BEAT_MD_HL enum INSTANCE_SCENE_RECURS_MD_HL enum INSTANCE_SCENE_NEVER_ENDS_MD_HL enum INSTANCE_IS_EXF_MD_HL enum INSTANCE_IS_INF_MD_HL enum INSTANCE_FILE_VALUE_MD_HL enum INSTANCE_INTERNAL_FILE_FORMAT_MD_HL enum INSTANCE_INTERNAL_FILE_ID_MD_HL enum INSTANCE_FILE_IS_BINARY_MD_HL enum INSTANCE_FILE_OWNED_MD_HL enum INSTANCE_FILE_OWNED_BY_OTHER_MD_HL enum INSTANCE_FILE_OWNER_MD_HL enum INSTANCE_LEAFNAME_MD_HL enum INSTANCE_IS_FIGURE_MD_HL enum INSTANCE_FIGURE_ID_MD_HL enum INSTANCE_FIGURE_FILENAME_MD_HL enum INSTANCE_IS_SOUND_MD_HL enum INSTANCE_SOUND_FILENAME_MD_HL enum INSTANCE_SOUND_ID_MD_HL enum INSTANCE_SSF_MD_HL enum INSTANCE_SCF_MD_HL enum INSTANCE_IS_WORN_MD_HL enum INSTANCE_IS_EVERYWHERE_MD_HL enum INSTANCE_IS_A_PART_MD_HL enum INSTANCE_IS_YOURSELF_MD_HL enum INSTANCE_IS_BENCHMARK_ROOM_MD_HL enum INSTANCE_IS_START_ROOM_MD_HL enum INSTANCE_IS_THING_MD_HL enum INSTANCE_IS_SUPPORTER_MD_HL enum INSTANCE_IS_PERSON_MD_HL enum INSTANCE_IS_ROOM_MD_HL enum INSTANCE_IS_DOOR_MD_HL enum INSTANCE_SPATIAL_DEPTH_MD_HL enum INSTANCE_DOOR_OTHER_SIDE_MD_HL enum INSTANCE_DOOR_SIDE_A_MD_HL enum INSTANCE_DOOR_SIDE_B_MD_HL enum INSTANCE_IS_REGION_MD_HL enum INSTANCE_IS_DIRECTION_MD_HL enum INSTANCE_OPPOSITE_DIRECTION_MD_HL enum INSTANCE_IS_BACKDROP_MD_HL enum INSTANCE_BACKDROP_PRESENCES_MD_HL enum INSTANCE_REGION_ENCLOSING_MD_HL enum INSTANCE_SIBLING_MD_HL enum INSTANCE_CHILD_MD_HL enum INSTANCE_PROGENITOR_MD_HL enum INSTANCE_INCORP_SIBLING_MD_HL enum INSTANCE_INCORP_CHILD_MD_HL enum INSTANCE_MAP_MD_HL enum INSTANCE_USAGES_MD_HL enum INSTANCE_BRIEF_INFERENCES_MD_HL enum INSTANCE_SPECIFIC_INFERENCES_MD_HL enum SCENE_ENDS_HAP enum SCENE_END_NAME_MD_HL enum SCENE_END_AT_MD_HL enum SCENE_END_CONDITION_MD_HL enum SCENE_END_RULEBOOK_MD_HL enum SCENE_CONNECTORS_HAP enum SCENE_CONNECTOR_TO_MD_HL enum SCENE_CONNECTOR_END_MD_HL enum SCENE_CONNECTOR_AT_MD_HL enum INST_SHOWME_MD_HL enum INST_SHOWME_FN_HL enum INSTANCE_HL enum SCENE_STATUS_FN_HL enum SCENE_CHANGE_FN_HL enum BACKDROP_FOUND_IN_FN_HL enum REGION_FOUND_IN_FN_HL enum SHORT_NAME_FN_HL enum SHORT_NAME_PROPERTY_FN_HL enum TSD_DOOR_DIR_FN_HL enum TSD_DOOR_TO_FN_HL enum INLINE_PROPERTIES_HAP enum INLINE_PROPERTY_HL enum DIRECTION_HL enum INSTANCE_IS_DB_MD_HL enum INSTANCE_IS_DL_MD_HL enum INSTANCE_IS_DC_MD_HL enum BEAT_ARRAY_MD_HL enum BEAT_ARRAY_HL enum BEAT_AVAILABLE_FN_HL enum BEAT_RELEVANT_FN_HL enum BEAT_STRUCTURE_HL enum BEAT_SPEAKERS_HL enum LINE_ARRAY_MD_HL enum LINE_ARRAY_HL enum LINE_AVAILABLE_FN_HL enum LINE_SPEAKER_FN_HL enum LINE_INTERLOCUTOR_FN_HL enum LINE_MENTIONING_FN_HL enum LINE_ACTION_FN_HL enum CHOICE_ARRAY_MD_HL enum CHOICE_ARRAY_HL enum CHOICE_AVAILABLE_FN_HL enum CHOICE_ACTION_MATCH_FN_HL enum CHOICE_PERFORMANCE_FN_HL
§8.1.24. Establish instances8.1.24 =
submodule_identity *instances = LargeScale::register_submodule_identity(I"instances"); H_BEGIN(LocationRequirements::local_submodule(instances)) H_BEGIN_AP(INSTANCES_HAP, I"instance", I"_instance") H_C_U(INSTANCE_NAME_MD_HL, I"^name") H_C_U(INSTANCE_DECLARATION_ORDER_MD_HL, I"^declaration_order") H_C_U(INSTANCE_PRINTED_NAME_MD_HL, I"^printed_name") H_C_U(INSTANCE_ABBREVIATION_MD_HL, I"^abbreviation") H_C_U(INSTANCE_AT_MD_HL, I"^at") H_C_U(INSTANCE_KIND_SET_AT_MD_HL, I"^kind_set_at") H_C_U(INSTANCE_PROGENITOR_SET_AT_MD_HL, I"^progenitor_set_at") H_C_U(INSTANCE_REGION_SET_AT_MD_HL, I"^region_set_at") H_C_U(INSTANCE_VALUE_MD_HL, I"^value") H_C_U(INSTANCE_KIND_MD_HL, I"^kind") H_C_U(INSTANCE_KIND_XREF_MD_HL, I"^kind_xref") H_C_U(INSTANCE_INDEX_KIND_MD_HL, I"^index_kind") H_C_U(INSTANCE_INDEX_KIND_CHAIN_MD_HL, I"^index_kind_chain") H_C_U(INSTANCE_IS_OBJECT_MD_HL, I"^is_object") H_C_U(INSTANCE_IS_SCENE_MD_HL, I"^is_scene") H_C_U(INSTANCE_IS_WORN_MD_HL, I"^is_worn") H_C_U(INSTANCE_IS_EVERYWHERE_MD_HL, I"^is_everywhere") H_C_U(INSTANCE_IS_A_PART_MD_HL, I"^is_a_part") H_C_U(INSTANCE_IS_YOURSELF_MD_HL, I"^is_yourself") H_C_U(INSTANCE_IS_BENCHMARK_ROOM_MD_HL, I"^is_benchmark_room") H_C_U(INSTANCE_IS_START_ROOM_MD_HL, I"^is_start_room") H_C_U(INSTANCE_IS_ENTIRE_GAME_MD_HL, I"^is_entire_game") H_C_U(INSTANCE_SCENE_STARTS_MD_HL, I"^starts") H_C_U(INSTANCE_SCENE_STARTS_ON_CONDITION_MD_HL, I"^starts_on_condition") H_C_U(INSTANCE_SCENE_STARTS_ON_BEAT_MD_HL, I"^starts_on_beat") H_C_U(INSTANCE_SCENE_ENDS_ON_BEAT_MD_HL, I"^ends_on_beat") H_C_U(INSTANCE_SCENE_RECURS_MD_HL, I"^recurs") H_C_U(INSTANCE_SCENE_NEVER_ENDS_MD_HL, I"^never_ends") H_C_U(INSTANCE_SSF_MD_HL, I"^scene_status_fn") H_C_U(INSTANCE_SCF_MD_HL, I"^scene_change_fn") H_BEGIN_AP(SCENE_ENDS_HAP, I"scene_end", I"_scene_end") H_C_U(SCENE_END_NAME_MD_HL, I"^name") H_C_U(SCENE_END_AT_MD_HL, I"^at") H_C_U(SCENE_END_CONDITION_MD_HL, I"^condition") H_C_U(SCENE_END_RULEBOOK_MD_HL, I"^rulebook") H_BEGIN_AP(SCENE_CONNECTORS_HAP, I"scene_connector", I"_scene_connector") H_C_U(SCENE_CONNECTOR_TO_MD_HL, I"^to") H_C_U(SCENE_CONNECTOR_END_MD_HL, I"^end") H_C_U(SCENE_CONNECTOR_AT_MD_HL, I"^at") H_END H_END H_C_U(INSTANCE_IS_EXF_MD_HL, I"^is_file") H_C_U(INSTANCE_IS_INF_MD_HL, I"^is_internal_file") H_C_U(INSTANCE_FILE_VALUE_MD_HL, I"^file_value") H_C_U(INSTANCE_FILE_OWNED_MD_HL, I"^file_owned") H_C_U(INSTANCE_FILE_OWNED_BY_OTHER_MD_HL, I"^file_owned_by_other") H_C_U(INSTANCE_FILE_OWNER_MD_HL, I"^file_owner") H_C_U(INSTANCE_INTERNAL_FILE_FORMAT_MD_HL, I"^internal_file_format") H_C_U(INSTANCE_INTERNAL_FILE_ID_MD_HL, I"^resource_id") H_C_U(INSTANCE_FILE_IS_BINARY_MD_HL, I"^is_binary") H_C_U(INSTANCE_LEAFNAME_MD_HL, I"^leafname") H_C_U(INSTANCE_IS_FIGURE_MD_HL, I"^is_figure") H_C_U(INSTANCE_FIGURE_FILENAME_MD_HL, I"^filename") H_C_U(INSTANCE_FIGURE_ID_MD_HL, I"^resource_id") H_C_U(INSTANCE_IS_SOUND_MD_HL, I"^is_sound") H_C_U(INSTANCE_SOUND_FILENAME_MD_HL, I"^filename") H_C_U(INSTANCE_SOUND_ID_MD_HL, I"^resource_id") H_C_U(INST_SHOWME_MD_HL, I"^showme_fn") H_C_U(INSTANCE_IS_THING_MD_HL, I"^is_thing") H_C_U(INSTANCE_IS_SUPPORTER_MD_HL, I"^is_supporter") H_C_U(INSTANCE_IS_PERSON_MD_HL, I"^is_person") H_C_U(INSTANCE_IS_ROOM_MD_HL, I"^is_room") H_C_U(INSTANCE_IS_DOOR_MD_HL, I"^is_door") H_C_U(INSTANCE_SPATIAL_DEPTH_MD_HL, I"^spatial_depth") H_C_U(INSTANCE_DOOR_OTHER_SIDE_MD_HL, I"^other_side") H_C_U(INSTANCE_DOOR_SIDE_A_MD_HL, I"^side_a") H_C_U(INSTANCE_DOOR_SIDE_B_MD_HL, I"^side_b") H_C_U(INSTANCE_IS_REGION_MD_HL, I"^is_region") H_C_U(INSTANCE_IS_DIRECTION_MD_HL, I"^is_direction") H_C_U(INSTANCE_OPPOSITE_DIRECTION_MD_HL, I"^opposite_direction") H_C_U(INSTANCE_IS_BACKDROP_MD_HL, I"^is_backdrop") H_C_U(INSTANCE_BACKDROP_PRESENCES_MD_HL, I"^backdrop_presences") H_C_U(INSTANCE_REGION_ENCLOSING_MD_HL, I"^region_enclosing") H_C_U(INSTANCE_SIBLING_MD_HL, I"^sibling") H_C_U(INSTANCE_CHILD_MD_HL, I"^child") H_C_U(INSTANCE_PROGENITOR_MD_HL, I"^progenitor") H_C_U(INSTANCE_INCORP_SIBLING_MD_HL, I"^incorp_sibling") H_C_U(INSTANCE_INCORP_CHILD_MD_HL, I"^incorp_child") H_C_U(INSTANCE_MAP_MD_HL, I"^map") H_C_U(INSTANCE_USAGES_MD_HL, I"^usages") H_C_U(INSTANCE_BRIEF_INFERENCES_MD_HL, I"^brief_inferences") H_C_U(INSTANCE_SPECIFIC_INFERENCES_MD_HL, I"^specific_inferences") H_C_U(INSTANCE_HL, I"I") H_F_U(SCENE_STATUS_FN_HL, I"scene_status_fn") H_F_U(SCENE_CHANGE_FN_HL, I"scene_change_fn") H_F_U(BACKDROP_FOUND_IN_FN_HL, I"backdrop_found_in_fn") H_F_G(SHORT_NAME_FN_HL, I"short_name_fn", I"SN_R") H_F_G(SHORT_NAME_PROPERTY_FN_HL, I"short_name_property_fn", I"SN_R_A") H_F_G(REGION_FOUND_IN_FN_HL, I"region_found_in_fn", I"RFI_for_I") H_F_G(TSD_DOOR_DIR_FN_HL, I"tsd_door_dir_fn", I"TSD_door_dir_value") H_F_G(TSD_DOOR_TO_FN_HL, I"tsd_door_to_fn", I"TSD_door_to_value") H_C_U(INSTANCE_IS_DB_MD_HL, I"^is_dialogue_beat") H_C_U(INSTANCE_IS_DL_MD_HL, I"^is_dialogue_line") H_C_U(INSTANCE_IS_DC_MD_HL, I"^is_dialogue_choice") H_C_U(BEAT_ARRAY_MD_HL, I"^beat_data") H_C_U(BEAT_ARRAY_HL, I"beat_data") H_F_U(BEAT_AVAILABLE_FN_HL, I"available_fn") H_F_U(BEAT_RELEVANT_FN_HL, I"relevant_fn") H_C_U(BEAT_STRUCTURE_HL, I"structure") H_C_U(BEAT_SPEAKERS_HL, I"speakers") H_C_U(LINE_ARRAY_MD_HL, I"^line_data") H_C_U(LINE_ARRAY_HL, I"line_data") H_F_U(LINE_AVAILABLE_FN_HL, I"available_fn") H_F_U(LINE_SPEAKER_FN_HL, I"speaker_fn") H_F_U(LINE_INTERLOCUTOR_FN_HL, I"interlocutor_fn") H_F_U(LINE_MENTIONING_FN_HL, I"mentioning_fn") H_F_U(LINE_ACTION_FN_HL, I"action_fn") H_C_U(CHOICE_ARRAY_MD_HL, I"^choice_data") H_C_U(CHOICE_ARRAY_HL, I"choice_data") H_F_U(CHOICE_AVAILABLE_FN_HL, I"available_fn") H_F_U(CHOICE_ACTION_MATCH_FN_HL, I"action_match_fn") H_F_U(CHOICE_PERFORMANCE_FN_HL, I"performance_fn") H_F_U(INST_SHOWME_FN_HL, I"showme_fn") H_BEGIN_AP(INLINE_PROPERTIES_HAP, I"inline_property", I"_inline_property") H_C_U(INLINE_PROPERTY_HL, I"inline") H_END H_C_G(DIRECTION_HL, I"DirectionObject") H_END H_END
- This code is used in §8.1.
enum PLAYER_OBJECT_INIS_HL enum START_OBJECT_INIS_HL enum START_ROOM_INIS_HL enum START_TIME_INIS_HL enum START_BEAT_INIS_HL enum DONE_INIS_HL enum NO_DIRECTIONS_HL enum MAP_STORAGE_HL enum INITIALSITUATION_HL
§8.1.26. Establish int-fiction8.1.26 =
submodule_identity *interactive_fiction = LargeScale::register_submodule_identity(I"interactive_fiction"); H_BEGIN(LocationRequirements::generic_submodule(I, interactive_fiction)) H_C_T(PLAYER_OBJECT_INIS_HL, I"PLAYER_OBJECT_INIS") H_C_T(START_OBJECT_INIS_HL, I"START_OBJECT_INIS") H_C_T(START_ROOM_INIS_HL, I"START_ROOM_INIS") H_C_T(START_TIME_INIS_HL, I"START_TIME_INIS") H_C_T(START_BEAT_INIS_HL, I"START_BEAT_INIS") H_C_T(DONE_INIS_HL, I"DONE_INIS") H_END H_BEGIN(LocationRequirements::completion_submodule(I, interactive_fiction)) H_C_T(NO_DIRECTIONS_HL, I"No_Directions") H_C_T(MAP_STORAGE_HL, I"Map_Storage") H_C_T(INITIALSITUATION_HL, I"InitialSituation") H_END
- This code is used in §8.1.
enum INTERNAL_FILES_HAP enum INTERNAL_FILE_HL
§8.1.28. Establish internal files8.1.28 =
submodule_identity *internal_files = LargeScale::register_submodule_identity(I"internal_files"); H_BEGIN(LocationRequirements::local_submodule(internal_files)) H_BEGIN_AP(INTERNAL_FILES_HAP, I"internal_file", I"_internal_file") H_C_U(INTERNAL_FILE_HL, I"file") H_END H_END
- This code is used in §8.1.
enum K_UNCHECKED_HL enum K_UNCHECKED_FUNCTION_HL enum K_UNCHECKED_LIST_HL enum K_INT32_HL enum K_INT2_HL enum K_STRING_HL enum KIND_HAP enum KIND_NAME_MD_HL enum KIND_SOURCE_ORDER_MD_HL enum KIND_DECLARATION_ORDER_MD_HL enum KIND_SPECIFICATION_MD_HL enum KIND_AT_MD_HL enum KIND_CLASS_MD_HL enum KIND_PNAME_MD_HL enum KIND_INDEX_VARIANCE_MD_HL enum KIND_INDEX_SINGULAR_MD_HL enum KIND_INDEX_PLURAL_MD_HL enum KIND_SHOWME_MD_HL enum KIND_IS_BASE_MD_HL enum KIND_IS_PROPER_MD_HL enum KIND_IS_QUASINUMERICAL_MD_HL enum KIND_IS_DEF_MD_HL enum KIND_IS_OBJECT_MD_HL enum INDEX_SUPERKIND_MD_HL enum KIND_IS_SKOO_MD_HL enum KIND_HAS_BV_MD_HL enum KIND_WEAK_ID_MD_HL enum KIND_STRONG_ID_MD_HL enum KIND_PRINT_FN_MD_HL enum KIND_CMP_FN_MD_HL enum KIND_CREATE_FN_MD_HL enum KIND_CAST_FN_MD_HL enum KIND_COPY_FN_MD_HL enum KIND_COPY_SHORT_BLOCK_FN_MD_HL enum KIND_QUICK_COPY_FN_MD_HL enum KIND_DESTROY_FN_MD_HL enum KIND_MAKE_MUTABLE_FN_MD_HL enum KIND_HASH_FN_MD_HL enum KIND_SHORT_BLOCK_SIZE_MD_HL enum KIND_LONG_BLOCK_SIZE_MD_HL enum KIND_LONG_BLOCK_SIZE_FN_MD_HL enum KIND_SERIALISE_FN_MD_HL enum KIND_UNSERIALISE_FN_MD_HL enum KIND_MKDEF_FN_MD_HL enum KIND_DSIZE_MD_HL enum KIND_DOCUMENTATION_MD_HL enum KIND_INDEX_PRIORITY_MD_HL enum SUPERKIND_MD_HL enum RUCKSACK_CLASS_MD_HL enum MIN_VAL_INDEX_MD_HL enum MAX_VAL_INDEX_MD_HL enum KIND_INDEX_NOTATION_MD_HL enum DIMENSIONS_INDEX_MD_HL enum KIND_SHADED_MD_HL enum KIND_FINITE_DOMAIN_MD_HL enum KIND_HAS_PROPERTIES_MD_HL enum KIND_UNDERSTANDABLE_MD_HL enum KIND_INDEX_DEFAULT_MD_HL enum KIND_INSTANCE_COUNT_MD_HL enum KIND_INFERENCES_MD_HL enum KIND_BRIEF_INFERENCES_MD_HL enum WEAK_ID_HL enum ICOUNT_HL enum FWMATRIX_SIZE_HL enum NUM_DOORS_HL enum NUM_ROOMS_HL enum ENUMERATION_ARRAY_MD_HL enum KIND_XREF_SYMBOL_HL enum DECREMENT_FN_HL enum INCREMENT_FN_HL enum PRINT_FN_HL enum PRINT_DASH_FN_HL enum MKDEF_FN_HL enum RANGER_FN_HL enum INDEXING_FN_HL enum DEFAULT_CLOSURE_FN_HL enum GPR_FN_HL enum SHOWME_FN_HL enum INSTANCE_GPR_FN_HL enum INSTANCE_LIST_HL enum FIRST_INSTANCE_HL enum INSTANCES_ARRAY_HL enum NEXT_INSTANCE_HL enum BASE_IK_1_HL enum BASE_IK_2_HL enum BASE_IK_3_HL enum BASE_IK_4_HL enum BASE_IK_5_HL enum BASE_IK_6_HL enum BASE_IK_7_HL enum BASE_IK_8_HL enum BASE_IK_9_HL enum BASE_IK_10_HL enum BASE_IK_HL enum KIND_INLINE_PROPERTIES_HAP enum KIND_INLINE_PROPERTY_HL enum KIND_PROPERTIES_HAP enum KIND_CONFORMANCE_HAP enum CONFORMED_TO_MD_HL enum DERIVED_KIND_HAP enum DK_NEEDED_MD_HL enum DK_STRONG_ID_HL enum DK_KIND_HL enum DK_DEFAULT_VALUE_HL enum KIND_CLASS_HL enum MULTIPLICATION_RULE_HAP enum SET_AT_MD_HL enum LEFT_OPERAND_MD_HL enum RIGHT_OPERAND_MD_HL enum RESULT_MD_HL enum LEFT_OPERAND_BM_MD_HL enum RIGHT_OPERAND_BM_MD_HL enum RESULT_BM_MD_HL
§8.1.30. Establish kinds8.1.30 =
submodule_identity *kinds = LargeScale::register_submodule_identity(I"kinds"); H_BEGIN(LocationRequirements::generic_submodule(I, kinds)) H_C_T(K_UNCHECKED_HL, I"K_unchecked") H_C_T(K_UNCHECKED_FUNCTION_HL, I"K_unchecked_function") H_C_T(K_UNCHECKED_LIST_HL, I"K_unchecked_list") H_C_T(K_INT32_HL, I"K_int32") H_C_T(K_INT2_HL, I"K_int2") H_C_T(K_STRING_HL, I"K_string") H_END H_BEGIN(LocationRequirements::local_submodule(kinds)) H_BEGIN_AP(KIND_HAP, I"kind", I"_kind") H_C_U(KIND_NAME_MD_HL, I"^name") H_C_U(KIND_SOURCE_ORDER_MD_HL, I"^source_order") H_C_U(KIND_DECLARATION_ORDER_MD_HL, I"^declaration_order") H_C_U(KIND_SPECIFICATION_MD_HL, I"^specification") H_C_U(KIND_AT_MD_HL, I"^at") H_C_U(KIND_CLASS_MD_HL, I"^object_class") H_C_U(KIND_PNAME_MD_HL, I"^printed_name") H_C_U(KIND_INDEX_SINGULAR_MD_HL, I"^index_singular") H_C_U(KIND_INDEX_PLURAL_MD_HL, I"^index_plural") H_C_U(KIND_INDEX_VARIANCE_MD_HL, I"^variance") H_C_U(KIND_SHOWME_MD_HL, I"^showme_fn") H_C_U(KIND_IS_BASE_MD_HL, I"^is_base") H_C_U(KIND_IS_PROPER_MD_HL, I"^is_proper") H_C_U(KIND_IS_QUASINUMERICAL_MD_HL, I"^is_quasinumerical") H_C_U(KIND_IS_DEF_MD_HL, I"^is_definite") H_C_U(KIND_IS_OBJECT_MD_HL, I"^is_object") H_C_U(KIND_IS_SKOO_MD_HL, I"^is_subkind_of_object") H_C_U(INDEX_SUPERKIND_MD_HL, I"^index_superkind") H_C_U(KIND_HAS_BV_MD_HL, I"^has_block_values") H_C_U(KIND_WEAK_ID_MD_HL, I"^weak_id") H_C_U(KIND_STRONG_ID_MD_HL, I"^strong_id") H_C_U(KIND_CMP_FN_MD_HL, I"^cmp_fn") H_C_U(KIND_PRINT_FN_MD_HL, I"^print_fn") H_C_U(KIND_CREATE_FN_MD_HL, I"^create_fn") H_C_U(KIND_CAST_FN_MD_HL, I"^cast_fn") H_C_U(KIND_COPY_FN_MD_HL, I"^copy_fn") H_C_U(KIND_COPY_SHORT_BLOCK_FN_MD_HL, I"^copy_short_block_fn") H_C_U(KIND_QUICK_COPY_FN_MD_HL, I"^quick_copy_fn") H_C_U(KIND_DESTROY_FN_MD_HL, I"^destroy_fn") H_C_U(KIND_MAKE_MUTABLE_FN_MD_HL, I"^make_mutable_fn") H_C_U(KIND_HASH_FN_MD_HL, I"^hash_fn") H_C_U(KIND_SHORT_BLOCK_SIZE_MD_HL, I"^short_block_size") H_C_U(KIND_LONG_BLOCK_SIZE_MD_HL, I"^long_block_size") H_C_U(KIND_LONG_BLOCK_SIZE_FN_MD_HL, I"^long_block_size_fn") H_C_U(KIND_SERIALISE_FN_MD_HL, I"^serialise_fn") H_C_U(KIND_UNSERIALISE_FN_MD_HL, I"^unserialise_fn") H_C_U(KIND_MKDEF_FN_MD_HL, I"^mkdef_fn") H_C_U(KIND_DSIZE_MD_HL, I"^domain_size") H_C_U(RUCKSACK_CLASS_MD_HL, I"^rucksack_class") H_C_U(MIN_VAL_INDEX_MD_HL, I"^min_value") H_C_U(MAX_VAL_INDEX_MD_HL, I"^max_value") H_C_U(KIND_INDEX_NOTATION_MD_HL, I"^notation") H_C_U(DIMENSIONS_INDEX_MD_HL, I"^dimensions") H_C_U(KIND_DOCUMENTATION_MD_HL, I"^documentation") H_C_U(KIND_INDEX_PRIORITY_MD_HL, I"^index_priority") H_C_U(SUPERKIND_MD_HL, I"^superkind") H_C_U(KIND_SHADED_MD_HL, I"^shaded_in_index") H_C_U(KIND_FINITE_DOMAIN_MD_HL, I"^finite_domain") H_C_U(KIND_HAS_PROPERTIES_MD_HL, I"^has_properties") H_C_U(KIND_UNDERSTANDABLE_MD_HL, I"^understandable") H_C_U(KIND_INDEX_DEFAULT_MD_HL, I"^index_default") H_C_U(KIND_INSTANCE_COUNT_MD_HL, I"^instance_count") H_C_U(KIND_BRIEF_INFERENCES_MD_HL, I"^brief_inferences") H_C_U(KIND_INFERENCES_MD_HL, I"^inferences") H_C_I(WEAK_ID_HL) H_C_I(ICOUNT_HL) H_C_U(ENUMERATION_ARRAY_MD_HL, I"^enumeration_array") H_C_U(FWMATRIX_SIZE_HL, I"FWMATRIX_SIZE") H_C_U(NUM_DOORS_HL, I"NUM_DOORS") H_C_U(NUM_ROOMS_HL, I"NUM_ROOMS") H_C_U(KIND_XREF_SYMBOL_HL, I"kind_ref") H_F_U(MKDEF_FN_HL, I"mkdef_fn") H_F_U(DECREMENT_FN_HL, I"decrement_fn") H_F_U(INCREMENT_FN_HL, I"increment_fn") H_F_U(PRINT_FN_HL, I"print_fn") H_F_G(PRINT_DASH_FN_HL, I"print_fn", I"E") H_F_U(RANGER_FN_HL, I"ranger_fn") H_F_U(INDEXING_FN_HL, I"indexing_fn") H_F_U(DEFAULT_CLOSURE_FN_HL, I"default_closure_fn") H_F_U(GPR_FN_HL, I"gpr_fn") H_F_U(INSTANCE_GPR_FN_HL, I"instance_gpr_fn") H_C_U(INSTANCE_LIST_HL, I"instance_list") H_F_U(SHOWME_FN_HL, I"showme_fn") H_C_S(FIRST_INSTANCE_HL, I"_First") H_C_S(NEXT_INSTANCE_HL, I"_Next") H_C_S(INSTANCES_ARRAY_HL, I"_Array") H_C_T(BASE_IK_1_HL, I"IK1_Count") H_C_T(BASE_IK_2_HL, I"IK2_Count") H_C_T(BASE_IK_3_HL, I"IK3_Count") H_C_T(BASE_IK_4_HL, I"IK4_Count") H_C_T(BASE_IK_5_HL, I"IK5_Count") H_C_T(BASE_IK_6_HL, I"IK6_Count") H_C_T(BASE_IK_7_HL, I"IK7_Count") H_C_T(BASE_IK_8_HL, I"IK8_Count") H_C_T(BASE_IK_9_HL, I"IK9_Count") H_C_T(BASE_IK_10_HL, I"IK10_Count") H_C_S(BASE_IK_HL, I"_Count") H_C_G(KIND_CLASS_HL, I"K") H_BEGIN_AP(KIND_INLINE_PROPERTIES_HAP, I"inline_property", I"_inline_property") H_C_U(KIND_INLINE_PROPERTY_HL, I"inline") H_END H_BEGIN_AP(KIND_CONFORMANCE_HAP, I"conformance", I"_conformance") H_C_U(CONFORMED_TO_MD_HL, I"^conformed_to") H_END H_END H_BEGIN_AP(DERIVED_KIND_HAP, I"derived_kind", I"_derived_kind") H_C_U(DK_NEEDED_MD_HL, I"^default_value_needed") H_C_U(DK_STRONG_ID_HL, I"strong_id") H_C_G(DK_KIND_HL, I"DK") H_C_U(DK_DEFAULT_VALUE_HL, I"default_value") H_END H_BEGIN_AP(KIND_PROPERTIES_HAP, I"property", I"_property") H_END H_END H_BEGIN(LocationRequirements::completion_submodule(I, kinds)) H_BEGIN_AP(MULTIPLICATION_RULE_HAP, I"multiplication_rule", I"_multiplication_rule") H_C_U(SET_AT_MD_HL, I"^at") H_C_U(LEFT_OPERAND_MD_HL, I"^left_operand") H_C_U(RIGHT_OPERAND_MD_HL, I"^right_operand") H_C_U(RESULT_MD_HL, I"^result") H_C_U(LEFT_OPERAND_BM_MD_HL, I"^left_operand_benchmark") H_C_U(RIGHT_OPERAND_BM_MD_HL, I"^right_operand_benchmark") H_C_U(RESULT_BM_MD_HL, I"^result_benchmark") H_END H_END
- This code is used in §8.1.
enum LITERAL_PATTERNS_HAP enum LP_PRINT_FN_HL enum LP_PARSE_FN_HL
§8.1.32. Establish literal patterns8.1.32 =
submodule_identity *literals = LargeScale::register_submodule_identity(I"literal_patterns"); H_BEGIN(LocationRequirements::local_submodule(literals)) H_BEGIN_AP(LITERAL_PATTERNS_HAP, I"literal_pattern", I"_literal_pattern") H_F_U(LP_PRINT_FN_HL, I"print_fn") H_F_U(LP_PARSE_FN_HL, I"parse_fn") H_END H_END
- This code is used in §8.1.
enum MAPPING_HINTS_HAP enum MH_FROM_HL enum MH_TO_HL enum MH_DIR_HL enum MH_AS_DIR_HL enum MH_NAME_HL enum MH_SCOPE_LEVEL_HL enum MH_SCOPE_INSTANCE_HL enum MH_TEXT_HL enum MH_NUMBER_HL enum MH_ANNOTATION_HL enum MH_POINT_SIZE_HL enum MH_FONT_HL enum MH_COLOUR_HL enum MH_OFFSET_HL enum MH_OFFSET_FROM_HL
§8.1.34. Establish mapping hints8.1.34 =
submodule_identity *hints = LargeScale::register_submodule_identity(I"mapping_hints"); H_BEGIN(LocationRequirements::completion_submodule(I, hints)) H_BEGIN_AP(MAPPING_HINTS_HAP, I"mapping_hint", I"_mapping_hint") H_C_U(MH_FROM_HL, I"^from") H_C_U(MH_TO_HL, I"^to") H_C_U(MH_DIR_HL, I"^dir") H_C_U(MH_AS_DIR_HL, I"^as_dir") H_C_U(MH_NAME_HL, I"^name") H_C_U(MH_SCOPE_LEVEL_HL, I"^scope_level") H_C_U(MH_SCOPE_INSTANCE_HL, I"^scope_instance") H_C_U(MH_TEXT_HL, I"^text") H_C_U(MH_NUMBER_HL, I"^number") H_C_U(MH_ANNOTATION_HL, I"^annotation") H_C_U(MH_POINT_SIZE_HL, I"^point_size") H_C_U(MH_FONT_HL, I"^font") H_C_U(MH_COLOUR_HL, I"^colour") H_C_U(MH_OFFSET_HL, I"^offset") H_C_U(MH_OFFSET_FROM_HL, I"^offset_from") H_END H_END
- This code is used in §8.1.
enum CLOSURES_HAP enum CLOSURE_DATA_HL enum PHRASES_HAP enum REQUESTS_HAP enum PHRASE_SYNTAX_MD_HL enum PHRASE_FN_HL enum LABEL_STORAGES_HAP enum LABEL_ASSOCIATED_STORAGE_HL enum PHRASEBOOK_SUPER_HEADING_HAP enum PHRASEBOOK_SUPER_HEADING_TEXT_MD_HL enum PHRASEBOOK_HEADING_HAP enum PHRASEBOOK_HEADING_TEXT_MD_HL enum PHRASEBOOK_ENTRY_HAP enum PHRASEBOOK_ENTRY_TEXT_MD_HL
§8.1.36. Establish phrases8.1.36 =
submodule_identity *phrases = LargeScale::register_submodule_identity(I"phrases"); H_BEGIN(LocationRequirements::local_submodule(phrases)) H_BEGIN_AP(PHRASES_HAP, I"phrase", I"_to_phrase") H_BEGIN_AP(CLOSURES_HAP, I"closure", I"_closure") H_C_U(CLOSURE_DATA_HL, I"closure_data") H_END H_BEGIN_AP(REQUESTS_HAP, I"request", I"_request") H_C_U(PHRASE_SYNTAX_MD_HL, I"^phrase_syntax") H_F_U(PHRASE_FN_HL, I"phrase_fn") H_END H_END H_END H_BEGIN(LocationRequirements::any_enclosure()) H_BEGIN_AP(LABEL_STORAGES_HAP, I"label_storage", I"_label_storage") H_C_U(LABEL_ASSOCIATED_STORAGE_HL, I"label_associated_storage") H_END H_END H_BEGIN(LocationRequirements::completion_submodule(I, phrases)) H_BEGIN_AP(PHRASEBOOK_SUPER_HEADING_HAP, I"phrasebook_super_heading", I"_phrasebook_super_heading") H_C_U(PHRASEBOOK_SUPER_HEADING_TEXT_MD_HL, I"^text") H_BEGIN_AP(PHRASEBOOK_HEADING_HAP, I"phrasebook_heading", I"_phrasebook_heading") H_C_U(PHRASEBOOK_HEADING_TEXT_MD_HL, I"^text") H_BEGIN_AP(PHRASEBOOK_ENTRY_HAP, I"phrasebook_entry", I"_phrasebook_entry") H_C_U(PHRASEBOOK_ENTRY_TEXT_MD_HL, I"^text") H_END H_END H_END H_END
- This code is used in §8.1.
enum PROPERTIES_HAP enum PROPERTY_NAME_MD_HL enum PROPERTY_ORDER_MD_HL enum PROPERTY_ID_HL enum PROPERTY_HL
§8.1.38. Establish properties8.1.38 =
submodule_identity *properties = LargeScale::register_submodule_identity(I"properties"); H_BEGIN(LocationRequirements::local_submodule(properties)) H_BEGIN_AP(PROPERTIES_HAP, I"property", I"_property") H_C_U(PROPERTY_NAME_MD_HL, I"^name") H_C_U(PROPERTY_ORDER_MD_HL, I"^source_order") H_C_U(PROPERTY_ID_HL, I"property_id") H_C_G(PROPERTY_HL, I"P") H_END H_END
- This code is used in §8.1.
enum RELS_ASSERT_FALSE_HL enum RELS_ASSERT_TRUE_HL enum RELS_EQUIVALENCE_HL enum RELS_LIST_HL enum RELS_LOOKUP_ALL_X_HL enum RELS_LOOKUP_ALL_Y_HL enum RELS_LOOKUP_ANY_HL enum RELS_ROUTE_FIND_COUNT_HL enum RELS_ROUTE_FIND_HL enum RELS_SHOW_HL enum RELS_SYMMETRIC_HL enum RELS_TEST_HL enum RELS_X_UNIQUE_HL enum RELS_Y_UNIQUE_HL enum REL_BLOCK_HEADER_HL enum TTF_SUM_HL enum MEANINGLESS_RR_HL enum RELATIONS_HAP enum RELATION_NAME_MD_HL enum RELATION_DESCRIPTION_MD_HL enum RELATION_AT_MD_HL enum RELATION_TERM0_MD_HL enum RELATION_TERM1_MD_HL enum RELATION_VALUE_MD_HL enum RELATION_CREATOR_MD_HL enum RELATION_ID_HL enum RELATION_RECORD_HL enum BITMAP_HL enum ABILITIES_HL enum ROUTE_CACHE_HL enum HANDLER_FN_HL enum RELATION_INITIALISER_FN_HL enum GUARD_F0_FN_HL enum GUARD_F1_FN_HL enum GUARD_TEST_FN_HL enum GUARD_MAKE_TRUE_FN_HL enum GUARD_MAKE_FALSE_INAME_HL enum RELATION_FN_HL enum RELATION_CREATOR_FN_HL
§8.1.40. Establish relations8.1.40 =
submodule_identity *relations = LargeScale::register_submodule_identity(I"relations"); H_BEGIN(LocationRequirements::generic_submodule(I, relations)) H_C_T(RELS_ASSERT_FALSE_HL, I"RELS_ASSERT_FALSE") H_C_T(RELS_ASSERT_TRUE_HL, I"RELS_ASSERT_TRUE") H_C_T(RELS_EQUIVALENCE_HL, I"RELS_EQUIVALENCE") H_C_T(RELS_LIST_HL, I"RELS_LIST") H_C_T(RELS_LOOKUP_ALL_X_HL, I"RELS_LOOKUP_ALL_X") H_C_T(RELS_LOOKUP_ALL_Y_HL, I"RELS_LOOKUP_ALL_Y") H_C_T(RELS_LOOKUP_ANY_HL, I"RELS_LOOKUP_ANY") H_C_T(RELS_ROUTE_FIND_COUNT_HL, I"RELS_ROUTE_FIND_COUNT") H_C_T(RELS_ROUTE_FIND_HL, I"RELS_ROUTE_FIND") H_C_T(RELS_SHOW_HL, I"RELS_SHOW") H_C_T(RELS_SYMMETRIC_HL, I"RELS_SYMMETRIC") H_C_T(RELS_TEST_HL, I"RELS_TEST") H_C_T(RELS_X_UNIQUE_HL, I"RELS_X_UNIQUE") H_C_T(RELS_Y_UNIQUE_HL, I"RELS_Y_UNIQUE") H_C_T(REL_BLOCK_HEADER_HL, I"REL_BLOCK_HEADER") H_C_T(TTF_SUM_HL, I"TTF_sum") H_C_T(MEANINGLESS_RR_HL, I"MEANINGLESS_RR") H_END H_BEGIN(LocationRequirements::local_submodule(relations)) H_BEGIN_AP(RELATIONS_HAP, I"relation", I"_relation") H_C_U(RELATION_NAME_MD_HL, I"^name") H_C_U(RELATION_AT_MD_HL, I"^at") H_C_U(RELATION_DESCRIPTION_MD_HL, I"^description") H_C_U(RELATION_TERM0_MD_HL, I"^term0") H_C_U(RELATION_TERM1_MD_HL, I"^term1") H_C_U(RELATION_VALUE_MD_HL, I"^value") H_C_U(RELATION_CREATOR_MD_HL, I"^creator") H_C_U(RELATION_ID_HL, I"relation_id") H_C_G(RELATION_RECORD_HL, I"Rel_Record") H_C_U(BITMAP_HL, I"as_constant") H_C_U(ABILITIES_HL, I"abilities") H_C_U(ROUTE_CACHE_HL, I"route_cache") H_F_U(HANDLER_FN_HL, I"handler_fn") H_F_U(RELATION_INITIALISER_FN_HL, I"relation_initialiser_fn") H_F_U(GUARD_F0_FN_HL, I"guard_f0_fn") H_F_U(GUARD_F1_FN_HL, I"guard_f1_fn") H_F_U(GUARD_TEST_FN_HL, I"guard_test_fn") H_F_U(GUARD_MAKE_TRUE_FN_HL, I"guard_make_true_fn") H_F_U(GUARD_MAKE_FALSE_INAME_HL, I"guard_make_false_iname") H_F_U(RELATION_FN_HL, I"relation_fn") H_F_U(RELATION_CREATOR_FN_HL, I"creator_fn") H_END H_END
- This code is used in §8.1.
enum RBNO4_INAME_HL enum RBNO3_INAME_HL enum RBNO2_INAME_HL enum RBNO1_INAME_HL enum RBNO0_INAME_HL enum OUTCOMES_HAP enum OUTCOME_NAME_MD_HL enum OUTCOME_HL enum RULEBOOKS_HAP enum RULEBOOK_AT_MD_HL enum RULEBOOK_NAME_MD_HL enum RULEBOOK_PNAME_MD_HL enum RULEBOOK_VARC_MD_HL enum RULEBOOK_INDEX_ID_MD_HL enum RULEBOOK_RUN_FN_MD_HL enum RULEBOOK_ID_HL enum RULEBOOK_TRANS_ID_HL enum RULEBOOK_FOCUS_MD_HL enum RUN_FN_HL enum RULEBOOK_STV_CREATOR_FN_HL enum RULEBOOK_ENTRIES_HAP enum RULE_ENTRY_MD_HL enum TOOLTIP_TEXT_MD_HL enum NEXT_RULE_SPECIFICITY_MD_HL enum LAW_APPLIED_MD_HL enum BRULE_NAME_MD_HL enum RULE_INDEX_NAME_MD_HL enum RULE_FIRST_LINE_MD_HL enum RULE_INDEX_NUMBER_MD_HL enum BRULE_AT_MD_HL enum RULE_DURING_MD_HL enum RULE_DURING_TEXT_MD_HL enum RULE_ACTION_RELEVANCES_HAP enum RULE_ACTION_RELEVANCE_MD_HL enum RULEBOOK_PLACEMENTS_HAP enum PLACEMENT_TEXT_MD_HL enum PLACEMENT_AT_MD_HL enum RULEBOOK_AUTOMATIC_MD_HL enum RULEBOOK_DEFAULT_SUCCEEDS_MD_HL enum RULEBOOK_DEFAULT_FAILS_MD_HL enum RULEBOOK_OUTCOMES_HAP enum OUTCOME_TEXT_MD_HL enum OUTCOME_SUCCEEDS_MD_HL enum OUTCOME_FAILS_MD_HL enum OUTCOME_IS_DEFAULT_MD_HL
§8.1.42. Establish rulebooks8.1.42 =
submodule_identity *rulebooks = LargeScale::register_submodule_identity(I"rulebooks"); H_BEGIN(LocationRequirements::local_submodule(rulebooks)) H_BEGIN_AP(OUTCOMES_HAP, I"rulebook_outcome", I"_outcome") H_C_U(OUTCOME_NAME_MD_HL, I"^name") H_C_U(OUTCOME_HL, I"outcome") H_C_U(RBNO4_INAME_HL, I"RBNO4_OUTCOME") H_C_U(RBNO3_INAME_HL, I"RBNO3_OUTCOME") H_C_U(RBNO2_INAME_HL, I"RBNO2_OUTCOME") H_C_U(RBNO1_INAME_HL, I"RBNO1_OUTCOME") H_C_U(RBNO0_INAME_HL, I"RBNO0_OUTCOME") H_END H_BEGIN_AP(RULEBOOKS_HAP, I"rulebook", I"_rulebook") H_C_U(RULEBOOK_AT_MD_HL, I"^at") H_C_U(RULEBOOK_NAME_MD_HL, I"^name") H_C_U(RULEBOOK_PNAME_MD_HL, I"^printed_name") H_C_U(RULEBOOK_RUN_FN_MD_HL, I"^run_fn") H_C_U(RULEBOOK_VARC_MD_HL, I"^var_creator") H_C_U(RULEBOOK_INDEX_ID_MD_HL, I"^index_id") H_C_U(RULEBOOK_FOCUS_MD_HL, I"^focus") H_C_U(RULEBOOK_ID_HL, I"rulebook_id") H_C_U(RULEBOOK_TRANS_ID_HL, I"translated_rulebook_id") H_F_U(RUN_FN_HL, I"run_fn") H_F_U(RULEBOOK_STV_CREATOR_FN_HL, I"stv_creator_fn") H_BEGIN_AP(RULEBOOK_ENTRIES_HAP, I"entry", I"_rulebook_entry") H_C_U(RULE_ENTRY_MD_HL, I"^rule") H_C_U(TOOLTIP_TEXT_MD_HL, I"^tooltip") H_C_U(NEXT_RULE_SPECIFICITY_MD_HL, I"^specificity") H_C_U(LAW_APPLIED_MD_HL, I"^law") H_C_U(BRULE_NAME_MD_HL, I"^name") H_C_U(RULE_INDEX_NAME_MD_HL, I"^index_name") H_C_U(RULE_FIRST_LINE_MD_HL, I"^first_line") H_C_U(RULE_INDEX_NUMBER_MD_HL, I"^index_number") H_C_U(BRULE_AT_MD_HL, I"^at") H_C_U(RULE_DURING_MD_HL, I"^during") H_C_U(RULE_DURING_TEXT_MD_HL, I"^during_text") H_BEGIN_AP(RULE_ACTION_RELEVANCES_HAP, I"relevant_action", I"_relevant_action") H_C_U(RULE_ACTION_RELEVANCE_MD_HL, I"^action") H_END H_END H_BEGIN_AP(RULEBOOK_PLACEMENTS_HAP, I"placement", I"_rulebook_placement") H_C_U(PLACEMENT_TEXT_MD_HL, I"^text") H_C_U(PLACEMENT_AT_MD_HL, I"^at") H_END H_C_U(RULEBOOK_AUTOMATIC_MD_HL, I"^automatically_generated") H_C_U(RULEBOOK_DEFAULT_SUCCEEDS_MD_HL, I"^default_succeeds") H_C_U(RULEBOOK_DEFAULT_FAILS_MD_HL, I"^default_fails") H_BEGIN_AP(RULEBOOK_OUTCOMES_HAP, I"outcome", I"_rulebook_outcome") H_C_U(OUTCOME_TEXT_MD_HL, I"^text") H_C_U(OUTCOME_SUCCEEDS_MD_HL, I"^succeeds") H_C_U(OUTCOME_FAILS_MD_HL, I"^fails") H_C_U(OUTCOME_IS_DEFAULT_MD_HL, I"^is_default") H_END H_END H_END
- This code is used in §8.1.
enum RULES_HAP enum RULE_ANCHOR_HL enum RULE_NAME_MD_HL enum RULE_PREAMBLE_MD_HL enum RULE_PNAME_MD_HL enum RULE_AT_MD_HL enum RULE_VALUE_MD_HL enum RULE_TIMED_MD_HL enum RULE_TIMED_FOR_MD_HL enum TIMED_RULE_TRIGGER_HAP enum RULE_USED_AT_MD_HL enum SHELL_FN_HL enum RULE_FN_HL enum EXTERIOR_RULE_HL enum RESPONDER_FN_HL enum RESPONSES_HAP enum AS_CONSTANT_HL enum AS_BLOCK_CONSTANT_HL enum PARKING_ARRAY_HL enum LAUNCHER_HL enum RESP_VALUE_MD_HL enum RULE_MD_HL enum MARKER_MD_HL enum INDEX_TEXT_MD_HL enum GROUP_HL enum DEFERRED_RESPONSES_HAP enum DEF_RESPONSE_ID_HL enum RULE_APPLICABILITY_CONDITIONS_HAP enum AC_TEXT_MD_HL enum AC_AT_MD_HL
§8.1.44. Establish rules8.1.44 =
submodule_identity *rules = LargeScale::register_submodule_identity(I"rules"); H_BEGIN(LocationRequirements::local_submodule(rules)) H_BEGIN_AP(RULES_HAP, I"rule", I"_rule") H_C_U(RULE_ANCHOR_HL, I"anchor") H_C_U(RULE_NAME_MD_HL, I"^name") H_C_U(RULE_PREAMBLE_MD_HL, I"^preamble") H_C_U(RULE_PNAME_MD_HL, I"^printed_name") H_C_U(RULE_AT_MD_HL, I"^at") H_C_U(RULE_VALUE_MD_HL, I"^value") H_C_U(RULE_TIMED_MD_HL, I"^timed") H_C_U(RULE_TIMED_FOR_MD_HL, I"^timed_for") H_BEGIN_AP(TIMED_RULE_TRIGGER_HAP, I"timed_rule_trigger", I"_timed_rule_trigger") H_C_U(RULE_USED_AT_MD_HL, I"^used_at") H_END H_F_U(SHELL_FN_HL, I"shell_fn") H_F_U(RULE_FN_HL, I"rule_fn") H_C_U(EXTERIOR_RULE_HL, I"exterior_rule") H_F_S(RESPONDER_FN_HL, I"responder_fn", I"M") H_BEGIN_AP(RESPONSES_HAP, I"response", I"_response") H_C_U(RESP_VALUE_MD_HL, I"^value") H_C_U(RULE_MD_HL, I"^rule") H_C_U(MARKER_MD_HL, I"^marker") H_C_U(INDEX_TEXT_MD_HL, I"^index_text") H_C_U(GROUP_HL, I"^group") H_C_U(AS_CONSTANT_HL, I"response_id") H_C_U(AS_BLOCK_CONSTANT_HL, I"as_block_constant") H_C_U(PARKING_ARRAY_HL, I"response_local_parking") H_F_U(LAUNCHER_HL, I"launcher") H_END H_BEGIN_AP(DEFERRED_RESPONSES_HAP, I"deferred_response", I"_deferred_response") H_C_U(DEF_RESPONSE_ID_HL, I"deferred_response_id") H_END H_BEGIN_AP(RULE_APPLICABILITY_CONDITIONS_HAP, I"applicability_condition", I"_applicability_condition") H_C_U(AC_TEXT_MD_HL, I"^text") H_C_U(AC_AT_MD_HL, I"^at") H_END H_END H_END
- This code is used in §8.1.
enum TABLES_HAP enum TABLE_NAME_MD_HL enum TABLE_PNAME_MD_HL enum TABLE_VALUE_MD_HL enum RANKING_TABLE_MD_HL enum TABLE_ROWS_MD_HL enum TABLE_BLANK_ROWS_MD_HL enum TABLE_BLANK_ROWS_FOR_MD_HL enum TABLE_DEFINES_MD_HL enum TABLE_DEFINES_TEXT_MD_HL enum TABLE_DEFINES_AT_MD_HL enum TABLE_ID_HL enum TABLE_DATA_HL enum TABLE_COLUMN_USAGES_HAP enum COLUMN_DATA_HL enum COLUMN_IDENTITY_HL enum COLUMN_BITS_HL enum COLUMN_BLANKS_HL enum COLUMN_BLANK_DATA_HL enum TABLE_CONTRIBUTION_HAP enum TABLE_CONTRIBUTION_AT_MD_HL enum TABLE_COLUMNS_HAP enum TABLE_COLUMN_ID_HL enum TABLE_COLUMN_NAME_MD_HL enum TABLE_COLUMN_CONTENTS_MD_HL enum TABLE_COLUMN_KIND_MD_HL
§8.1.46. Establish tables8.1.46 =
submodule_identity *tables = LargeScale::register_submodule_identity(I"tables"); H_BEGIN(LocationRequirements::local_submodule(tables)) H_BEGIN_AP(TABLES_HAP, I"table", I"_table") H_C_U(TABLE_NAME_MD_HL, I"^name") H_C_U(TABLE_PNAME_MD_HL, I"^printed_name") H_C_U(TABLE_VALUE_MD_HL, I"^value") H_C_U(RANKING_TABLE_MD_HL, I"^ranking_table") H_C_U(TABLE_ROWS_MD_HL, I"^rows") H_C_U(TABLE_BLANK_ROWS_MD_HL, I"^blank_rows") H_C_U(TABLE_BLANK_ROWS_FOR_MD_HL, I"^blank_rows_for_each") H_C_U(TABLE_DEFINES_MD_HL, I"^defines") H_C_U(TABLE_DEFINES_TEXT_MD_HL, I"^defines_text") H_C_U(TABLE_DEFINES_AT_MD_HL, I"^defines_at") H_C_U(TABLE_ID_HL, I"table_id") H_C_U(TABLE_DATA_HL, I"table_data") H_BEGIN_AP(TABLE_COLUMN_USAGES_HAP, I"column", I"_table_column_usage") H_C_U(COLUMN_DATA_HL, I"column_data") H_C_U(COLUMN_IDENTITY_HL, I"column_identity") H_C_U(COLUMN_BITS_HL, I"column_bits") H_C_U(COLUMN_BLANKS_HL, I"column_blanks") H_C_U(COLUMN_BLANK_DATA_HL, I"^column_blank_data") H_END H_BEGIN_AP(TABLE_CONTRIBUTION_HAP, I"contribution", I"_table_contribution") H_C_U(TABLE_CONTRIBUTION_AT_MD_HL, I"^at") H_END H_END H_END submodule_identity *table_columns = LargeScale::register_submodule_identity(I"table_columns"); H_BEGIN(LocationRequirements::local_submodule(table_columns)) H_BEGIN_AP(TABLE_COLUMNS_HAP, I"table_column", I"_table_column") H_C_U(TABLE_COLUMN_ID_HL, I"table_column_id") H_C_U(TABLE_COLUMN_NAME_MD_HL, I"^name") H_C_U(TABLE_COLUMN_CONTENTS_MD_HL, I"^contents") H_C_U(TABLE_COLUMN_KIND_MD_HL, I"^column_kind") H_END H_END
- This code is used in §8.1.
enum USE_OPTIONS_HAP enum USE_OPTION_MD_HL enum USE_OPTION_PNAME_MD_HL enum USE_OPTION_ON_MD_HL enum USE_OPTION_USED_AT_MD_HL enum SOURCE_FILE_SCOPED_MD_HL enum USED_IN_SOURCE_TEXT_MD_HL enum USED_IN_OPTIONS_MD_HL enum USED_IN_EXTENSION_MD_HL enum USE_OPTION_CV_MD_HL enum USE_OPTION_ID_HL
§8.1.48. Establish use options8.1.48 =
submodule_identity *use_options = LargeScale::register_submodule_identity(I"use_options"); H_BEGIN(LocationRequirements::local_submodule(use_options)) H_BEGIN_AP(USE_OPTIONS_HAP, I"use_option", I"_use_option") H_C_U(USE_OPTION_MD_HL, I"^name") H_C_U(USE_OPTION_USED_AT_MD_HL, I"^at") H_C_U(USE_OPTION_PNAME_MD_HL, I"^printed_name") H_C_U(USE_OPTION_ON_MD_HL, I"^active") H_C_U(SOURCE_FILE_SCOPED_MD_HL, I"^source_file_scoped") H_C_U(USED_IN_SOURCE_TEXT_MD_HL, I"^used_in_source_text") H_C_U(USED_IN_OPTIONS_MD_HL, I"^used_in_options") H_C_U(USED_IN_EXTENSION_MD_HL, I"^used_in_extension") H_C_U(USE_OPTION_CV_MD_HL, I"^configured_value") H_C_U(USE_OPTION_ID_HL, I"use_option_id") H_END H_END
- This code is used in §8.1.
enum VARIABLES_HAP enum VARIABLE_NAME_MD_HL enum VARIABLE_AT_MD_HL enum VARIABLE_HEADING_MD_HL enum VARIABLE_INDEXABLE_MD_HL enum VARIABLE_UNDERSTOOD_MD_HL enum VARIABLE_CONTENTS_MD_HL enum VARIABLE_DOCUMENTATION_MD_HL enum VARIABLE_COUNTERPART_MD_HL enum VARIABLE_HL enum COMMANDPROMPTTEXT_HL enum INITIAL_MAX_SCORE_HL
§8.1.50. Establish variables8.1.50 =
submodule_identity *variables = LargeScale::register_submodule_identity(I"variables"); H_BEGIN(LocationRequirements::local_submodule(variables)) H_BEGIN_AP(VARIABLES_HAP, I"variable", I"_variable") H_C_U(VARIABLE_NAME_MD_HL, I"^name") H_C_U(VARIABLE_AT_MD_HL, I"^at") H_C_U(VARIABLE_HEADING_MD_HL, I"^heading") H_C_U(VARIABLE_INDEXABLE_MD_HL, I"^indexable") H_C_U(VARIABLE_UNDERSTOOD_MD_HL, I"^understood") H_C_U(VARIABLE_CONTENTS_MD_HL, I"^contents") H_C_U(VARIABLE_DOCUMENTATION_MD_HL, I"^documentation") H_C_U(VARIABLE_COUNTERPART_MD_HL, I"^counterpart") H_C_G(VARIABLE_HL, I"V") H_F_T(COMMANDPROMPTTEXT_HL, I"command_prompt_text_fn", I"CommandPromptText") H_C_T(INITIAL_MAX_SCORE_HL, I"INITIAL_MAX_SCORE") H_END H_END
- This code is used in §8.1.
enum LITERALS_HAP enum TEXT_LITERAL_HL enum LIST_LITERAL_HL enum TEXT_SUBSTITUTION_HL enum TEXT_SUBSTITUTION_FN_HL enum PROPOSITIONS_HAP enum PROPOSITION_HL enum RTP_HL enum BLOCK_CONSTANTS_HAP enum BLOCK_CONSTANT_HL enum BOX_QUOTATIONS_HAP enum BOX_FLAG_HL enum BOX_QUOTATION_FN_HL enum GROUPS_TOGETHER_HAP enum GROUP_TOGETHER_FN_HL enum LOOPS_OVER_SCOPE_HAP enum LOOP_OVER_SCOPE_FN_HL enum DIGIT_MANAGERS_HAP enum DIGIT_MANAGER_HL
§8.1.52. Establish enclosed matter8.1.52 =
H_BEGIN(LocationRequirements::any_enclosure()) H_BEGIN_AP(LITERALS_HAP, I"literal", I"_literal") H_C_U(TEXT_LITERAL_HL, I"text") H_C_U(LIST_LITERAL_HL, I"list") H_C_U(TEXT_SUBSTITUTION_HL, I"ts_array") H_F_U(TEXT_SUBSTITUTION_FN_HL, I"ts_fn") H_END H_BEGIN_AP(PROPOSITIONS_HAP, I"proposition", I"_proposition") H_F_U(PROPOSITION_HL, I"prop") H_END H_BEGIN_AP(BLOCK_CONSTANTS_HAP, I"block_constant", I"_block_constant") H_C_U(BLOCK_CONSTANT_HL, I"bc") H_END H_BEGIN_AP(BOX_QUOTATIONS_HAP, I"block_constant", I"_box_quotation") H_C_U(BOX_FLAG_HL, I"quotation_flag") H_F_U(BOX_QUOTATION_FN_HL, I"quotation_fn") H_END H_BEGIN_AP(GROUPS_TOGETHER_HAP, I"group_together", I"_group_together") H_F_U(GROUP_TOGETHER_FN_HL, I"group_together_fn") H_END H_BEGIN_AP(LOOPS_OVER_SCOPE_HAP, I"loop_over_scope", I"_loop_over_scope") H_F_G(LOOP_OVER_SCOPE_FN_HL, I"loop_over_scope_fn", I"LOS") H_END H_C_U(RTP_HL, I"rtp") H_BEGIN_AP(DIGIT_MANAGERS_HAP, I"digit_manager", I"_digit_manager") H_C_U(DIGIT_MANAGER_HL, I"dm") H_END H_END
- This code is used in §8.1.
enum K_OBJECT_XPACKAGE from 0 enum K_NUMBER_XPACKAGE enum K_TIME_XPACKAGE enum K_TRUTH_STATE_XPACKAGE enum CAPSHORTNAME_HL enum DECIMAL_TOKEN_INNER_HL enum TIME_TOKEN_INNER_HL enum TRUTH_STATE_TOKEN_INNER_HL
H_BEGIN(LocationRequirements::this_exotic_package(K_OBJECT_XPACKAGE)) H_C_T(CAPSHORTNAME_HL, I"cap_short_name") H_END H_BEGIN(LocationRequirements::this_exotic_package(K_NUMBER_XPACKAGE)) H_F_T(DECIMAL_TOKEN_INNER_HL, I"gpr_fn", I"DECIMAL_TOKEN_INNER") H_END H_BEGIN(LocationRequirements::this_exotic_package(K_TIME_XPACKAGE)) H_F_T(TIME_TOKEN_INNER_HL, I"gpr_fn", I"TIME_TOKEN_INNER") H_END H_BEGIN(LocationRequirements::this_exotic_package(K_TRUTH_STATE_XPACKAGE)) H_F_T(TRUTH_STATE_TOKEN_INNER_HL, I"gpr_fn", I"TRUTH_STATE_TOKEN_INNER") H_END
- This code is used in §8.1.
§8.2.1. Architectural symbols. These are built-in constants (and one built-in variable, self) which come from the platform we are compiling to. See Large-Scale Structure (in building).
There are other architectural symbols besides these, but these are the only ones which the //inform7//-compiled code needs to refer to.
enum SELF_HL enum NULL_HL enum MAX_POSITIVE_NUMBER_HL enum MIN_NEGATIVE_NUMBER_HL
§8.2.2. Establish architectural resources8.2.2 =
H_BEGIN(LocationRequirements::architectural_package(I)) H_C_T(SELF_HL, I"self") H_C_T(NULL_HL, I"NULL") H_C_T(MAX_POSITIVE_NUMBER_HL, I"MAX_POSITIVE_NUMBER") H_C_T(MIN_NEGATIVE_NUMBER_HL, I"MIN_NEGATIVE_NUMBER") H_END
- This code is used in §8.2.
§8.3. Note that because these are automatically created by the building machinery anyway, we need to make sure that a call to Hierarchy::find does not create a duplicate with a name like NULL_1. This is a race condition, and the easiest way to avoid it is to force the issue now:
Prevent architectural symbols from being doubly defined8.3 =
inter_name *self_iname = Hierarchy::find(SELF_HL); self_iname->symbol = LargeScale::find_architectural_symbol(I, I"self"); InterNames::to_symbol(Hierarchy::find(MAX_POSITIVE_NUMBER_HL)); InterNames::to_symbol(Hierarchy::find(MIN_NEGATIVE_NUMBER_HL)); InterNames::to_symbol(Hierarchy::find(NULL_HL));
- This code is used in §8.
§9. Heaven knows, that all seems like plenty, but there's one final case. Neptune files inside kits — which define built-in kinds like "number" — need to make reference to constants in those kits which give their default values. For example, the "description of K" kind constructor is created by BasicInformKit, and its default value compiles to the value Prop_Falsity. This is a function also defined in BasicInformKit. But there is no id PROP_FALSITY_HL because the main compiler doesn't want to hardwire this: perhaps the implementation in the kit will change at some point, after all.
So the compiler reserves a block of location IDs to be used by default values of kinds in kits. On demand, it then allocates these to be used; so, for example, Prop_Falsity might be given KIND_DEFAULT5_HL.
There are only a few of these, and the absolute limit here doesn't seem problematic right now.
enum KIND_DEFAULT1_HL enum KIND_DEFAULT2_HL enum KIND_DEFAULT3_HL enum KIND_DEFAULT4_HL enum KIND_DEFAULT5_HL enum KIND_DEFAULT6_HL enum KIND_DEFAULT7_HL enum KIND_DEFAULT8_HL enum KIND_DEFAULT9_HL enum KIND_DEFAULT10_HL enum KIND_DEFAULT11_HL enum KIND_DEFAULT12_HL enum KIND_DEFAULT13_HL enum KIND_DEFAULT14_HL enum KIND_DEFAULT15_HL enum KIND_DEFAULT16_HL define MAX_KIND_DEFAULTS 16
int no_kind_defaults_used; kind_constructor *kind_defaults_used[MAX_KIND_DEFAULTS]; int Hierarchy::kind_default(kind_constructor *con, text_stream *Inter_constant_name) { for (int i=0; i<no_kind_defaults_used; i++) if (con == kind_defaults_used[i]) return KIND_DEFAULT1_HL + i; if (no_kind_defaults_used >= MAX_KIND_DEFAULTS) internal_error("too many Neptune file-defined kinds have default values"); location_requirement plug = LocationRequirements::plug(); int hl = KIND_DEFAULT1_HL + no_kind_defaults_used; kind_defaults_used[no_kind_defaults_used++] = con; HierarchyLocations::con(Emit::tree(), hl, Inter_constant_name, plug); return hl; }
§10. A few of the above locations were "exotic packages", which are not really very exotic, but which are locations not easily falling into patterns. Here they are:
package_request *Hierarchy::exotic_package(int x) { switch (x) { case K_OBJECT_XPACKAGE: return RTKindConstructors::kind_package(K_object); case K_NUMBER_XPACKAGE: return RTKindConstructors::kind_package(K_number); case K_TIME_XPACKAGE: return RTKindConstructors::kind_package(K_time); case K_TRUTH_STATE_XPACKAGE: return RTKindConstructors::kind_package(K_truth_state); } internal_error("unknown exotic package"); return NULL; }
§11. Finding where to put things. So, for example, Hierarchy::find(ACTIVITY_VAR_CREATORS_HL) returns the iname at which this array should be placed, by calling, e.g., EmitArrays::begin_word.
inter_name *Hierarchy::find(int id) { return HierarchyLocations::iname(Emit::tree(), id); }
§12. That's fine for one-off inames. But now suppose we have this:
H_BEGIN_AP(EXTERNAL_FILES_HAP, I"external_file", I"_external_file") H_C_U(FILE_HL, I"file") H_C_U(IFID_HL, I"ifid") H_END
...and we are compiling a file, so that we need a FILE_HL iname. To get that, we call Hierarchy::make_iname_in(FILE_HL, P), where P represents the _external_file package holding it. (P can in turn be obtained using the functions below.)
If this is called where P is some other package — i.e., not of package type _external_file — an internal error is thrown, in order to enforce the rules.
inter_name *Hierarchy::make_iname_in(int id, package_request *P) { return HierarchyLocations::make_iname_in(Emit::tree(), id, P); }
§13. There are then some variations on this function. This version adds the wording W to the name, just to make the Inter code more comprehensible. An example would be ACTIVITY_VALUE_HL, declared abover as H_C_G(ACTIVITY_VALUE_HL, I"V"). The resulting name "generated" (hence the G in H_C_G) might be, for example, V1_starting_the_virtual_mach. The number 1 guarantees uniqueness; the (truncated) text following is purely for the reader's convenience.
inter_name *Hierarchy::make_iname_with_memo(int id, package_request *P, wording W) { return HierarchyLocations::make_iname_with_memo(Emit::tree(), id, P, W); } inter_name *Hierarchy::make_iname_with_shorter_memo(int id, package_request *P, wording W) { return HierarchyLocations::make_iname_with_shorter_memo(Emit::tree(), id, P, W); }
§14. And this further elaboration supplies the number to use, in place of the 1. This is needed only for kinds, where the kits expect to find classes called, e.g., K7_backdrop, even though in some circumstances this may not be number 7 in class inheritance tree order.
inter_name *Hierarchy::make_iname_with_memo_and_value(int id, package_request *P, wording W, int x) { inter_name *iname = HierarchyLocations::make_iname_with_memo_and_value(Emit::tree(), id, P, W, x); return iname; } inter_name *Hierarchy::make_iname_with_shorter_memo_and_value(int id, package_request *P, wording W, int x) { inter_name *iname = HierarchyLocations::make_iname_with_shorter_memo_and_value(Emit::tree(), id, P, W, x); return iname; }
§15. When a translated name has to be generated from the name of something related to it (e.g. by adding a prefix or suffix), the following should be used:
inter_name *Hierarchy::derive_iname_in(int id, inter_name *from, package_request *P) { return HierarchyLocations::derive_iname_in(Emit::tree(), id, from, P); } inter_name *Hierarchy::derive_iname_in_translating(int id, inter_name *from, package_request *P) { return HierarchyLocations::derive_iname_in_translating(Emit::tree(), id, from, P); }
§16. For the handful of names with "imposed translation", where the caller has to supply the translated name, the following should be used:
inter_name *Hierarchy::make_iname_with_specific_translation(int id, text_stream *name, package_request *P) { return HierarchyLocations::make_iname_with_specific_translation(Emit::tree(), id, name, P); }
§17. Availability. Just as the code generated by the compiler needs to be able to access code in the kits, so also the other way around: code in a kit may need to call a function which we're compiling. Kits can only see those inames which we "make available", using the following, which creates a socket. Again, see The Wiring (in bytecode) for more.
void Hierarchy::make_available(inter_name *iname) { text_stream *ma_as = InterNames::get_translation(iname); if (Str::len(ma_as) == 0) ma_as = InterNames::to_text(iname); LargeScale::package_type(Emit::tree(), I"_linkage"); inter_symbol *S = InterNames::to_symbol(iname); Wiring::socket(Emit::tree(), ma_as, S); } void Hierarchy::make_available_one_per_name_only(inter_name *iname) { text_stream *ma_as = InterNames::get_translation(iname); if (Str::len(ma_as) == 0) ma_as = InterNames::to_text(iname); LargeScale::package_type(Emit::tree(), I"_linkage"); inter_symbol *S = InterNames::to_symbol(iname); Wiring::socket_one_per_name_only(Emit::tree(), ma_as, S); }
§18. Adding packages at attachment points. Consider the following example piece of declaration:
H_BEGIN(LocationRequirements::local_submodule(kinds)) H_BEGIN_AP(KIND_HAP, I"kind", I"_kind") ... H_END H_END
Here, the "attachment point" (AP) is a place where multiple packages can be placed, each with the same internal structure (defined by the ... part omitted here). kinds is a submodule name, and the "local" part means that each compilation unit will become its own module, which will have its own individual kinds submodule. Each of those will have multiple packages inside of package type _kind.
Well, given that picture, Hierarchy::package(C, KIND_HAP) will create a new such _kind package inside C. For example, it might return a new package main/locksmith_by_emily_short/kinds/K_lock.
package_request *Hierarchy::package(compilation_unit *C, int hap_id) { module_request *M = (C) ? (CompilationUnits::to_module_package(C)) : NULL; return HierarchyLocations::attach_new_package(Emit::tree(), M, NULL, hap_id); }
§19. If we just want the compilation unit in which a given sentence lies:
package_request *Hierarchy::local_package(int hap_id) { return Hierarchy::local_package_to(hap_id, current_sentence); } package_request *Hierarchy::local_package_to(int hap_id, parse_node *at) { return Hierarchy::package(CompilationUnits::find(at), hap_id); }
§20. There is just one package called synoptic, so there's no issue of what compilation unit is meant: that's why it's "synoptic".
package_request *Hierarchy::synoptic_package(int hap_id) { return HierarchyLocations::attach_new_package(Emit::tree(), NULL, NULL, hap_id); } package_request *Hierarchy::completion_package(int hap_id) { return HierarchyLocations::attach_new_package(Emit::tree(), NULL, NULL, hap_id); }
§21. Attachment points do not always have to be at the top level of submodules, as the KIND_HAP example was. For example:
H_BEGIN_AP(VERBS_HAP, I"verb", I"_verb") ... H_BEGIN_AP(VERB_FORMS_HAP, I"form", I"_verb_form") ... H_END H_END
Here a _verb_form package has to be created inside a _verb package. Calling Hierarchy::package_within(VERB_FORMS_HAP, P) indeed constructs a new one inside the package P; if P does not have type _verb, an internal error will automatically trip, in order to enforce the layout rules.
package_request *Hierarchy::package_within(int hap_id, package_request *super) { return HierarchyLocations::attach_new_package(Emit::tree(), NULL, super, hap_id); }
§22. Adding packages not at attachment points. Just a handful of packages are made other than with the *_HAP attachment point system, and for those:
package_request *Hierarchy::make_package_in(int id, package_request *P) { return HierarchyLocations::subpackage(Emit::tree(), id, P); }
§23. Metadata. These are convenient functions for marking up packages with metadata:
void Hierarchy::apply_metadata(package_request *P, int id, text_stream *value) { inter_name *iname = Hierarchy::make_iname_in(id, P); Emit::text_constant(iname, value); } void Hierarchy::apply_metadata_from_number(package_request *P, int id, inter_ti N) { inter_name *iname = Hierarchy::make_iname_in(id, P); Emit::numeric_constant(iname, N); } void Hierarchy::apply_metadata_from_iname(package_request *P, int id, inter_name *val) { inter_name *iname = Hierarchy::make_iname_in(id, P); Emit::iname_constant(iname, K_value, val); } void Hierarchy::apply_metadata_from_wording(package_request *P, int id, wording W) { TEMPORARY_TEXT(ANT) WRITE_TO(ANT, "%W", W); Hierarchy::apply_metadata(P, id, ANT); DISCARD_TEXT(ANT) } void Hierarchy::apply_metadata_from_raw_wording(package_request *P, int id, wording W) { TEMPORARY_TEXT(ANT) WRITE_TO(ANT, "%+W", W); Hierarchy::apply_metadata(P, id, ANT); DISCARD_TEXT(ANT) } void Hierarchy::apply_metadata_from_filename(package_request *P, int id, filename *F) { TEMPORARY_TEXT(as_text) WRITE_TO(as_text, "%f", F); Hierarchy::apply_metadata(P, id, as_text); DISCARD_TEXT(as_text) } void Hierarchy::apply_metadata_from_heading(package_request *P, int id, heading *h) { Hierarchy::apply_metadata_from_iname(P, id, CompletionModule::heading_id(h)); }