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 BYTECODE_MODULE TRUE

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

void BytecodeModule::start(void) {
    Register this module's memory allocation reasons2.1;
    Register this module's stream writers2.2;
    Register this module's debugging log aspects2.3;
    Register this module's debugging log writers2.4;

    InterInstruction::create_language();
    InterTypes::initialise_constructors();
}
void BytecodeModule::end(void) {
}

§2.1.

enumerate INTER_SYMBOLS_MREASON 
enumerate INTER_BYTECODE_MREASON 
enumerate INTER_LINKS_MREASON 
enumerate TREE_LIST_MREASON 

Register this module's memory allocation reasons2.1 =

    Memory::reason_name(INTER_SYMBOLS_MREASON, "inter symbols storage");
    Memory::reason_name(INTER_BYTECODE_MREASON, "inter bytecode storage");
    Memory::reason_name(INTER_LINKS_MREASON, "inter links storage");
    Memory::reason_name(TREE_LIST_MREASON, "inter tree location list storage");

§2.2. Register this module's stream writers2.2 =

    Writers::register_writer('t', &TextualInter::writer);
    Writers::register_writer('F', &InterInstruction::instruction_writer);

§2.3.

enumerate INTER_FILE_READ_DA 
enumerate INTER_MEMORY_DA 
enumerate INTER_BINARY_DA 
enumerate INTER_SYMBOLS_DA 
enumerate INTER_CONNECTORS_DA 
enumerate CONSTANT_DEPTH_CALCULATION_DA 

Register this module's debugging log aspects2.3 =

    Log::declare_aspect(INTER_MEMORY_DA, U"inter memory usage", FALSE, FALSE);
    Log::declare_aspect(INTER_FILE_READ_DA, U"intermediate file reading", FALSE, FALSE);
    Log::declare_aspect(INTER_BINARY_DA, U"inter binary", FALSE, FALSE);
    Log::declare_aspect(INTER_SYMBOLS_DA, U"inter symbols", FALSE, FALSE);
    Log::declare_aspect(INTER_CONNECTORS_DA, U"inter connectors", FALSE, FALSE);
    Log::declare_aspect(CONSTANT_DEPTH_CALCULATION_DA, U"constant depth calculation", FALSE, FALSE);

§2.4. Register this module's debugging log writers2.4 =

    Writers::register_logger('3', InterSymbol::log);
    Writers::register_logger('4', InterSymbolsTable::log);
    Writers::register_logger('5', InterBookmark::log);
    Writers::register_logger('6', InterPackage::log);