Setting up the use of this module.

§1. This section simply sets up the module in ways expected by foundation, and contains no code of interest. The following constant exists only in tools which use this module:

define FINAL_MODULE TRUE

§2. This module defines the following classes:

enum code_generator_CLASS
enum code_generation_CLASS
enum generated_segment_CLASS
enum vanilla_function_CLASS
enum I6_generation_data_CLASS
enum C_generation_data_CLASS
enum vanilla_dword_CLASS
enum C_property_CLASS
enum C_pv_pair_CLASS
enum C_property_owner_CLASS
enum C_supported_opcode_CLASS
DECLARE_CLASS(code_generator)
DECLARE_CLASS(code_generation)
DECLARE_CLASS(generated_segment)
DECLARE_CLASS(vanilla_function)
DECLARE_CLASS(I6_generation_data)
DECLARE_CLASS(C_generation_data)
DECLARE_CLASS(vanilla_dword)
DECLARE_CLASS(C_property)
DECLARE_CLASS(C_pv_pair)
DECLARE_CLASS(C_property_owner)
DECLARE_CLASS(C_supported_opcode)

§3. Like all modules, this one must define a start and end function:

void FinalModule::start(void) {
    Register this module's memory allocation reasons3.2;
    Register this module's stream writers3.3;
    Register this module's debugging log aspects3.4;
    Register this module's debugging log writers3.5;
}
void FinalModule::end(void) {
}

§3.1.

enum CODE_GENERATION_MREASON

§3.2. Register this module's memory allocation reasons3.2 =

    Memory::reason_name(CODE_GENERATION_MREASON, "code generation workspace for objects");

§3.3. Register this module's stream writers3.3 =

    ;

enum PROPERTY_ALLOCATION_DA

§3.4. Register this module's debugging log aspects3.4 =

    Log::declare_aspect(PROPERTY_ALLOCATION_DA, U"property allocation", FALSE, FALSE);

§3.5. Register this module's debugging log writers3.5 =

    ;