Predeclaring the classes used in the six central Inform modules.
§1. For annoying reasons to do with code ordering constraints in C, we need to declare the classes used by the central Inform modules all at once and up front, here in core. (This enables them to be used as values of syntax tree annotations.) The central modules can't be independently compiled of each other or of core in any case.
Deep breath, then: the following macros define several hundred functions. We begin with core itself.
enum compilation_subtask_CLASS enum compile_task_data_CLASS
DECLARE_CLASS(compilation_subtask) DECLARE_CLASS(compile_task_data)
§2. assertions —
enum activity_CLASS enum activity_list_CLASS enum adjective_meaning_CLASS enum adjective_meaning_family_CLASS enum applicability_constraint_CLASS enum application_CLASS enum booking_CLASS enum booking_list_CLASS enum by_function_bp_data_CLASS enum constant_phrase_CLASS enum equivalence_bp_data_CLASS enum explicit_bp_data_CLASS enum generalisation_CLASS enum i6_memory_setting_CLASS enum id_body_CLASS enum imperative_defn_CLASS enum imperative_defn_family_CLASS enum implication_CLASS enum named_rulebook_outcome_CLASS enum parsed_use_option_setting_CLASS enum phrase_option_CLASS enum relation_guard_CLASS enum rule_CLASS enum rule_family_data_CLASS enum rulebook_CLASS enum rulebook_outcome_CLASS enum source_text_intervention_CLASS enum table_CLASS enum table_column_CLASS enum table_contribution_CLASS enum target_pragma_setting_CLASS enum to_family_data_CLASS enum use_option_CLASS
DECLARE_CLASS(activity) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(activity_list, 1000) DECLARE_CLASS(adjective_meaning_family) DECLARE_CLASS(adjective_meaning) DECLARE_CLASS(applicability_constraint) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(application, 100) DECLARE_CLASS(booking_list) DECLARE_CLASS(booking) DECLARE_CLASS(by_function_bp_data) DECLARE_CLASS(constant_phrase) DECLARE_CLASS(equivalence_bp_data) DECLARE_CLASS(explicit_bp_data) DECLARE_CLASS(generalisation) DECLARE_CLASS(i6_memory_setting) DECLARE_CLASS(id_body) DECLARE_CLASS(imperative_defn_family) DECLARE_CLASS(imperative_defn) DECLARE_CLASS(implication) DECLARE_CLASS(named_rulebook_outcome) DECLARE_CLASS(parsed_use_option_setting) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(phrase_option, 100) DECLARE_CLASS(relation_guard) DECLARE_CLASS(rule_family_data) DECLARE_CLASS(rule) DECLARE_CLASS(rulebook_outcome) DECLARE_CLASS(rulebook) DECLARE_CLASS(source_text_intervention) DECLARE_CLASS(table_column) DECLARE_CLASS(table) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(table_contribution, 100) DECLARE_CLASS(target_pragma_setting) DECLARE_CLASS(to_family_data) DECLARE_CLASS(use_option)
§3. values —
enum equation_CLASS enum equation_node_CLASS enum equation_symbol_CLASS enum instance_CLASS enum inv_token_problem_token_CLASS enum literal_list_CLASS enum literal_pattern_CLASS enum literal_pattern_name_CLASS enum literal_pattern_element_value_set_CLASS enum literal_pattern_element_value_pair_CLASS enum llist_entry_CLASS enum nonlocal_variable_CLASS enum response_message_CLASS enum text_substitution_CLASS enum unicode_lookup_value_CLASS
DECLARE_CLASS(equation) DECLARE_CLASS(equation_node) DECLARE_CLASS(equation_symbol) DECLARE_CLASS(instance) DECLARE_CLASS(inv_token_problem_token) DECLARE_CLASS(literal_list) DECLARE_CLASS(literal_pattern) DECLARE_CLASS(literal_pattern_name) DECLARE_CLASS(literal_pattern_element_value_set) DECLARE_CLASS(literal_pattern_element_value_pair) DECLARE_CLASS(llist_entry) DECLARE_CLASS(nonlocal_variable) DECLARE_CLASS(response_message) DECLARE_CLASS(text_substitution) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(unicode_lookup_value, 1000)
§4. knowledge —
enum comparative_bp_data_CLASS enum condition_of_subject_CLASS enum counting_data_CLASS enum either_or_property_data_CLASS enum inference_CLASS enum inference_family_CLASS enum inference_subject_CLASS enum inference_subject_family_CLASS enum measurement_definition_CLASS enum property_CLASS enum property_inference_data_CLASS enum property_permission_CLASS enum property_setting_bp_data_CLASS enum relation_inference_data_CLASS enum short_name_notice_CLASS enum shared_variable_CLASS enum shared_variable_set_CLASS enum shared_variable_access_list_CLASS enum value_property_data_CLASS
DECLARE_CLASS(comparative_bp_data) DECLARE_CLASS(condition_of_subject) DECLARE_CLASS(counting_data) DECLARE_CLASS(either_or_property_data) DECLARE_CLASS(inference) DECLARE_CLASS(inference_family) DECLARE_CLASS(inference_subject) DECLARE_CLASS(inference_subject_family) DECLARE_CLASS(measurement_definition) DECLARE_CLASS(property_permission) DECLARE_CLASS(property) DECLARE_CLASS(property_inference_data) DECLARE_CLASS(property_setting_bp_data) DECLARE_CLASS(relation_inference_data) DECLARE_CLASS(short_name_notice) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(shared_variable, 100) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(shared_variable_set, 100) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(shared_variable_access_list, 100) DECLARE_CLASS(value_property_data)
§5. imperative —
enum default_closure_request_CLASS enum invocation_options_CLASS enum local_variable_CLASS enum action_history_condition_record_CLASS enum past_tense_condition_record_CLASS enum pcalc_prop_deferral_CLASS enum stack_frame_box_CLASS enum local_block_value_CLASS enum local_parking_lot_CLASS
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(invocation_options, 100) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(local_variable, 100) DECLARE_CLASS(default_closure_request) DECLARE_CLASS(action_history_condition_record) DECLARE_CLASS(past_tense_condition_record) DECLARE_CLASS(pcalc_prop_deferral) DECLARE_CLASS(stack_frame_box) DECLARE_CLASS(local_block_value) DECLARE_CLASS(local_parking_lot)
§6. runtime —
enum adjective_iname_holder_CLASS enum backdrops_data_CLASS enum box_quotation_CLASS enum compilation_unit_CLASS enum deferred_response_iname_CLASS enum definition_CLASS enum door_dir_notice_CLASS enum door_to_notice_CLASS enum internal_test_CLASS enum internal_test_case_CLASS enum cached_kind_declaration_CLASS enum label_namespace_CLASS enum group_together_function_CLASS enum nascent_array_CLASS enum runtime_kind_structure_CLASS enum slash_gpr_CLASS enum test_scenario_CLASS enum to_phrase_request_CLASS
DECLARE_CLASS(adjective_iname_holder) DECLARE_CLASS(backdrops_data) DECLARE_CLASS(box_quotation) DECLARE_CLASS(compilation_unit) DECLARE_CLASS(definition) DECLARE_CLASS(deferred_response_iname) DECLARE_CLASS(door_dir_notice) DECLARE_CLASS(door_to_notice) DECLARE_CLASS(internal_test) DECLARE_CLASS(internal_test_case) DECLARE_CLASS(cached_kind_declaration) DECLARE_CLASS(label_namespace) DECLARE_CLASS(group_together_function) DECLARE_CLASS(nascent_array) DECLARE_CLASS(runtime_kind_structure) DECLARE_CLASS(slash_gpr) DECLARE_CLASS(test_scenario) DECLARE_CLASS(to_phrase_request)
§7. index —
enum activity_crossref_CLASS
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(activity_crossref, 100)
§8. if —
enum action_name_CLASS enum actions_rcd_data_CLASS enum auxiliary_file_CLASS enum cached_understanding_CLASS enum dialogue_beat_CLASS enum dialogue_choice_CLASS enum dialogue_decision_CLASS enum dialogue_line_CLASS enum dialogue_node_CLASS enum direction_inference_data_CLASS enum explicit_action_CLASS enum found_in_inference_data_CLASS enum cg_line_CLASS enum cg_token_CLASS enum command_grammar_CLASS enum loop_over_scope_CLASS enum map_data_CLASS enum named_action_pattern_CLASS enum named_action_pattern_entry_CLASS enum noun_filter_token_CLASS enum parentage_here_inference_data_CLASS enum parentage_inference_data_CLASS enum parsing_data_CLASS enum parsing_pp_data_CLASS enum part_of_inference_data_CLASS enum performance_style_CLASS enum regions_data_CLASS enum release_instructions_CLASS enum scene_CLASS enum scenes_rcd_data_CLASS enum spatial_data_CLASS enum timed_rules_rfd_data_CLASS enum anl_clause_CLASS enum anl_entry_CLASS enum action_pattern_CLASS enum action_name_list_CLASS enum ap_clause_CLASS enum scene_connector_CLASS enum understanding_item_CLASS enum understanding_reference_CLASS
DECLARE_CLASS(action_name) DECLARE_CLASS(actions_rcd_data) DECLARE_CLASS(auxiliary_file) DECLARE_CLASS(cached_understanding) DECLARE_CLASS(dialogue_beat) DECLARE_CLASS(dialogue_choice) DECLARE_CLASS(dialogue_decision) DECLARE_CLASS(dialogue_line) DECLARE_CLASS(dialogue_node) DECLARE_CLASS(direction_inference_data) DECLARE_CLASS(found_in_inference_data) DECLARE_CLASS(cg_line) DECLARE_CLASS(cg_token) DECLARE_CLASS(command_grammar) DECLARE_CLASS(loop_over_scope) DECLARE_CLASS(map_data) DECLARE_CLASS(named_action_pattern) DECLARE_CLASS(named_action_pattern_entry) DECLARE_CLASS(noun_filter_token) DECLARE_CLASS(parentage_here_inference_data) DECLARE_CLASS(parentage_inference_data) DECLARE_CLASS(parsing_data) DECLARE_CLASS(parsing_pp_data) DECLARE_CLASS(part_of_inference_data) DECLARE_CLASS(performance_style) DECLARE_CLASS(regions_data) DECLARE_CLASS(release_instructions) DECLARE_CLASS(scene) DECLARE_CLASS(scenes_rcd_data) DECLARE_CLASS(spatial_data) DECLARE_CLASS(timed_rules_rfd_data) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(anl_clause, 1000) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(anl_entry, 1000) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(action_pattern, 100) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(action_name_list, 1000) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(ap_clause, 400) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(explicit_action, 100) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(scene_connector, 1000) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(understanding_item, 100) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(understanding_reference, 100)
§9. multimedia —
enum figures_data_CLASS enum sounds_data_CLASS enum files_data_CLASS enum internal_files_data_CLASS
DECLARE_CLASS(figures_data) DECLARE_CLASS(sounds_data) DECLARE_CLASS(files_data) DECLARE_CLASS(internal_files_data)