Code to support rules like "At 12:03AM: ...".

§1. Timed events are stored in two simple arrays, processed by run-time code.

void RTTimedRules::TimedEventsTable(void) {
    inter_name *iname = Hierarchy::find(TIMEDEVENTSTABLE_HL);
    packaging_state save = Emit::named_table_array_begin(iname, K_value);
    int when_count = 0;
    id_body *idb;
    LOOP_OVER(idb, id_body) {
        int t = TimedRules::get_timing_of_event(idb->head_of_defn);
        if (t == NOT_A_TIMED_EVENT) continue;
        if (t == NO_FIXED_TIME) when_count++;
        else Emit::array_iname_entry(IDCompilation::iname(idb));
    }

    for (int i=0; i<when_count+1; i++) {
        Emit::array_numeric_entry(0);
        Emit::array_numeric_entry(0);
    }
    Emit::array_end(save);
    Hierarchy::make_available(Emit::tree(), iname);
}

void RTTimedRules::TimedEventTimesTable(void) {
    inter_name *iname = Hierarchy::find(TIMEDEVENTTIMESTABLE_HL);
    packaging_state save = Emit::named_table_array_begin(iname, K_number);
    int when_count = 0;
    id_body *idb;
    LOOP_OVER(idb, id_body) {
        int t = TimedRules::get_timing_of_event(idb->head_of_defn);
        if (t == NOT_A_TIMED_EVENT) continue;
        if (t == NO_FIXED_TIME) when_count++;
        else Emit::array_numeric_entry((inter_ti) t);
    }

    for (int i=0; i<when_count+1; i++) {
        Emit::array_numeric_entry(0);
        Emit::array_numeric_entry(0);
    }
    Emit::array_end(save);
    Hierarchy::make_available(Emit::tree(), iname);
}