Setting up the use of this module.
DECLARE_ANNOTATION_FUNCTIONS(action_meaning, action_pattern) DECLARE_ANNOTATION_FUNCTIONS(constant_action_name, action_name) DECLARE_ANNOTATION_FUNCTIONS(constant_action_pattern, action_pattern) DECLARE_ANNOTATION_FUNCTIONS(constant_grammar_verb, grammar_verb) DECLARE_ANNOTATION_FUNCTIONS(constant_named_action_pattern, named_action_pattern) DECLARE_ANNOTATION_FUNCTIONS(constant_scene, scene)
define IF_MODULE TRUE
§3. To begin with, this module needs to allocate memory:
enum action_name_MT enum auxiliary_file_MT enum backdrop_found_in_notice_MT enum cached_understanding_MT enum command_index_entry_MT enum connected_submap_MT enum door_dir_notice_MT enum door_to_notice_MT enum EPS_map_level_MT enum grammar_line_MT enum grammar_verb_MT enum loop_over_scope_MT enum map_data_MT enum named_action_pattern_MT enum noun_filter_token_MT enum parse_name_notice_MT enum parsing_data_MT enum parsing_pp_data_MT enum regions_data_MT enum reserved_command_verb_MT enum rubric_holder_MT enum scene_MT enum short_name_notice_MT enum slash_gpr_MT enum spatial_data_MT enum action_name_list_array_MT enum action_pattern_array_MT enum ap_optional_clause_array_MT enum scene_connector_array_MT enum understanding_item_array_MT enum understanding_reference_array_MT
ALLOCATE_INDIVIDUALLY(action_name) ALLOCATE_INDIVIDUALLY(auxiliary_file) ALLOCATE_INDIVIDUALLY(backdrop_found_in_notice) ALLOCATE_INDIVIDUALLY(cached_understanding) ALLOCATE_INDIVIDUALLY(command_index_entry) ALLOCATE_INDIVIDUALLY(connected_submap) ALLOCATE_INDIVIDUALLY(door_dir_notice) ALLOCATE_INDIVIDUALLY(door_to_notice) ALLOCATE_INDIVIDUALLY(EPS_map_level) ALLOCATE_INDIVIDUALLY(grammar_line) ALLOCATE_INDIVIDUALLY(grammar_verb) ALLOCATE_INDIVIDUALLY(loop_over_scope) ALLOCATE_INDIVIDUALLY(map_data) ALLOCATE_INDIVIDUALLY(named_action_pattern) ALLOCATE_INDIVIDUALLY(noun_filter_token) ALLOCATE_INDIVIDUALLY(parse_name_notice) ALLOCATE_INDIVIDUALLY(parsing_data) ALLOCATE_INDIVIDUALLY(parsing_pp_data) ALLOCATE_INDIVIDUALLY(regions_data) ALLOCATE_INDIVIDUALLY(reserved_command_verb) ALLOCATE_INDIVIDUALLY(rubric_holder) ALLOCATE_INDIVIDUALLY(scene) ALLOCATE_INDIVIDUALLY(short_name_notice) ALLOCATE_INDIVIDUALLY(slash_gpr) ALLOCATE_INDIVIDUALLY(spatial_data) ALLOCATE_IN_ARRAYS(action_name_list, 1000) ALLOCATE_IN_ARRAYS(action_pattern, 100) ALLOCATE_IN_ARRAYS(ap_optional_clause, 400) ALLOCATE_IN_ARRAYS(scene_connector, 1000) ALLOCATE_IN_ARRAYS(understanding_item, 100) ALLOCATE_IN_ARRAYS(understanding_reference, 100) MAKE_ANNOTATION_FUNCTIONS(action_meaning, action_pattern) MAKE_ANNOTATION_FUNCTIONS(constant_action_name, action_name) MAKE_ANNOTATION_FUNCTIONS(constant_action_pattern, action_pattern) MAKE_ANNOTATION_FUNCTIONS(constant_grammar_verb, grammar_verb) MAKE_ANNOTATION_FUNCTIONS(constant_named_action_pattern, named_action_pattern) MAKE_ANNOTATION_FUNCTIONS(constant_scene, scene)
§4. The beginning. (The client doesn't need to call the start and end routines, because the foundation module does that automatically.)
COMPILE_WRITER(action_pattern *, PL::Actions::Patterns::log) COMPILE_WRITER(grammar_verb *, PL::Parsing::Verbs::log) COMPILE_WRITER(grammar_line *, PL::Parsing::Lines::log) COMPILE_WRITER(action_name_list *, PL::Actions::Lists::log) COMPILE_WRITER(action_name *, PL::Actions::log) void IFModule::start(void) { <Register this module's stream writers 4.1>; <Register this module's debugging log aspects 4.3>; <Register this module's debugging log writers 4.4>; <Register this module's command line switches 4.5>; }
The function IFModule::start appears nowhere else.
§4.1.
<Register this module's stream writers 4.1> =
;
This code is used in §4.
enum GRAMMAR_DA enum GRAMMAR_CONSTRUCTION_DA
§4.3.
<Register this module's debugging log aspects 4.3> =
Log::declare_aspect(GRAMMAR_DA, L"grammar", FALSE, FALSE); Log::declare_aspect(GRAMMAR_CONSTRUCTION_DA, L"grammar construction", FALSE, FALSE);
This code is used in §4.
§4.4.
<Register this module's debugging log writers 4.4> =
REGISTER_WRITER('A', PL::Actions::Patterns::log); REGISTER_WRITER('G', PL::Parsing::Verbs::log); REGISTER_WRITER('g', PL::Parsing::Lines::log); REGISTER_WRITER('L', PL::Actions::Lists::log); REGISTER_WRITER('l', PL::Actions::log);
This code is used in §4.
§4.5.
<Register this module's command line switches 4.5> =
;
This code is used in §4.
void IFModule::end(void) { }
The function IFModule::end appears nowhere else.