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)