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 compile_task_data_CLASS
DECLARE_CLASS(compile_task_data)

§2. assertions

enum adjective_iname_holder_CLASS
enum adjective_meaning_CLASS
enum application_CLASS
enum generalisation_CLASS
enum i6_memory_setting_CLASS
enum implication_CLASS
enum relation_guard_CLASS
enum table_CLASS
enum table_column_CLASS
enum table_contribution_CLASS
enum use_option_CLASS
DECLARE_CLASS(adjective_iname_holder)
DECLARE_CLASS(adjective_meaning)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(application, 100)
DECLARE_CLASS(generalisation)
DECLARE_CLASS(i6_memory_setting)
DECLARE_CLASS(implication)
DECLARE_CLASS(relation_guard)
DECLARE_CLASS(table)
DECLARE_CLASS(table_column)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(table_contribution, 100)
DECLARE_CLASS(use_option)

§3. values

enum equation_CLASS
enum equation_node_CLASS
enum equation_symbol_CLASS
enum instance_CLASS
enum instance_usage_CLASS
enum inv_token_problem_token_CLASS
enum literal_list_CLASS
enum literal_pattern_CLASS
enum literal_pattern_name_CLASS
enum literal_text_CLASS
enum llist_entry_CLASS
enum nonlocal_variable_CLASS
enum response_message_CLASS
enum text_substitution_CLASS
DECLARE_CLASS(equation)
DECLARE_CLASS(equation_node)
DECLARE_CLASS(equation_symbol)
DECLARE_CLASS(instance)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(instance_usage, 200)
DECLARE_CLASS(inv_token_problem_token)
DECLARE_CLASS(literal_list)
DECLARE_CLASS(literal_pattern)
DECLARE_CLASS(literal_pattern_name)
DECLARE_CLASS(literal_text)
DECLARE_CLASS(llist_entry)
DECLARE_CLASS(nonlocal_variable)
DECLARE_CLASS(response_message)
DECLARE_CLASS(text_substitution)

§4. knowledge

enum activity_CLASS
enum activity_crossref_CLASS
enum activity_list_CLASS
enum applicability_condition_CLASS
enum booking_CLASS
enum comparative_bp_data_CLASS
enum counting_data_CLASS
enum inference_CLASS
enum inference_subject_CLASS
enum measurement_definition_CLASS
enum named_rulebook_outcome_CLASS
enum placement_affecting_CLASS
enum property_CLASS
enum property_permission_CLASS
enum property_of_value_storage_CLASS
enum rule_CLASS
enum rulebook_CLASS
enum rulebook_outcome_CLASS
enum stacked_variable_CLASS
enum stacked_variable_list_CLASS
enum stacked_variable_owner_CLASS
enum stacked_variable_owner_list_CLASS
DECLARE_CLASS(activity)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(activity_crossref, 100)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(activity_list, 1000)
DECLARE_CLASS(applicability_condition)
DECLARE_CLASS(booking)
DECLARE_CLASS(comparative_bp_data)
DECLARE_CLASS(counting_data)
DECLARE_CLASS(inference)
DECLARE_CLASS(inference_subject)
DECLARE_CLASS(measurement_definition)
DECLARE_CLASS(named_rulebook_outcome)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(placement_affecting, 100)
DECLARE_CLASS(property_of_value_storage)
DECLARE_CLASS(property_permission)
DECLARE_CLASS(property)
DECLARE_CLASS(rule)
DECLARE_CLASS(rulebook)
DECLARE_CLASS(rulebook_outcome)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(stacked_variable, 100)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(stacked_variable_list, 100)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(stacked_variable_owner, 100)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(stacked_variable_owner_list, 100)

§5. imperative

enum constant_phrase_CLASS
enum invocation_options_CLASS
enum local_variable_CLASS
enum past_tense_action_record_CLASS
enum past_tense_condition_record_CLASS
enum pcalc_prop_deferral_CLASS
enum ph_stack_frame_box_CLASS
enum phrase_CLASS
enum phrase_option_CLASS
enum pointer_allocation_CLASS
enum to_phrase_request_CLASS
enum use_as_event_CLASS
DECLARE_CLASS(constant_phrase)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(invocation_options, 100)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(local_variable, 100)
DECLARE_CLASS(past_tense_action_record)
DECLARE_CLASS(past_tense_condition_record)
DECLARE_CLASS(pcalc_prop_deferral)
DECLARE_CLASS(ph_stack_frame_box)
DECLARE_CLASS(phrase)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(phrase_option, 100)
DECLARE_CLASS(pointer_allocation)
DECLARE_CLASS(to_phrase_request)
DECLARE_CLASS(use_as_event)

§6. runtime

enum definition_CLASS
enum dval_written_CLASS
enum i6_inclusion_matter_CLASS
enum internal_test_case_CLASS
enum kind_interaction_CLASS
enum label_namespace_CLASS
enum list_together_routine_CLASS
enum nascent_array_CLASS
enum plugin_CLASS
enum plugin_call_CLASS
enum runtime_kind_structure_CLASS
enum test_scenario_CLASS
DECLARE_CLASS(definition)
DECLARE_CLASS(dval_written)
DECLARE_CLASS(i6_inclusion_matter)
DECLARE_CLASS(internal_test_case)
DECLARE_CLASS(kind_interaction)
DECLARE_CLASS(label_namespace)
DECLARE_CLASS(list_together_routine)
DECLARE_CLASS(nascent_array)
DECLARE_CLASS(plugin)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(plugin_call, 100)
DECLARE_CLASS(runtime_kind_structure)
DECLARE_CLASS(test_scenario)

§7. And finally index

enum contents_entry_CLASS
enum documentation_ref_CLASS
enum index_page_CLASS
enum index_element_CLASS
enum index_lexicon_entry_CLASS
DECLARE_CLASS(contents_entry)
DECLARE_CLASS(documentation_ref)
DECLARE_CLASS(index_element)
DECLARE_CLASS(index_page)
DECLARE_CLASS(index_lexicon_entry)