To compile the main/synoptic/activities submodule.

§1. Before this runs, activity packages are scattered all over the Inter tree. We must allocate each one a unique ID.

As this is called, Synoptic Utilities has already formed a list activity_nodes of packages of type _activity.

void SynopticActivities::compile(inter_tree *I, tree_inventory *inv) {
    if (TreeLists::len(inv->activity_nodes) > 0) {
        TreeLists::sort(inv->activity_nodes, Synoptic::module_order);
        for (int i=0; i<TreeLists::len(inv->activity_nodes); i++) {
            inter_package *pack = Inter::Package::defined_by_frame(inv->activity_nodes->list[i].node);
            inter_tree_node *D = Synoptic::get_definition(pack, I"activity_id");
            D->W.data[DATA_CONST_IFLD+1] = (inter_ti) i;
            D = Synoptic::get_optional_definition(pack, I"var_id");
            if (D) D->W.data[DATA_CONST_IFLD+1] = (inter_ti) (10000 + i);
        }
    }
    Define ACTIVITY_AFTER_RULEBOOKS array1.1;
    Define ACTIVITY_ATB_RULEBOOKS array1.2;
    Define ACTIVITY_BEFORE_RULEBOOKS array1.3;
    Define ACTIVITY_FOR_RULEBOOKS array1.4;
    Define ACTIVITY_VAR_CREATORS array1.5;
}

§1.1. Define ACTIVITY_AFTER_RULEBOOKS array1.1 =

    inter_name *iname = HierarchyLocations::find(I, ACTIVITY_AFTER_RULEBOOKS_HL);
    Synoptic::begin_array(I, iname);
    for (int i=0; i<TreeLists::len(inv->activity_nodes); i++) {
        inter_package *pack = Inter::Package::defined_by_frame(inv->activity_nodes->list[i].node);
        inter_symbol *vc_s = Metadata::read_symbol(pack, I"^after_rulebook");
        Synoptic::symbol_entry(vc_s);
    }
    Synoptic::end_array(I);

§1.2. Define ACTIVITY_ATB_RULEBOOKS array1.2 =

    inter_name *iname = HierarchyLocations::find(I, ACTIVITY_ATB_RULEBOOKS_HL);
    Produce::annotate_iname_i(iname, BYTEARRAY_IANN, 1);
    Synoptic::begin_array(I, iname);
    for (int i=0; i<TreeLists::len(inv->activity_nodes); i++) {
        inter_package *pack = Inter::Package::defined_by_frame(inv->activity_nodes->list[i].node);
        inter_ti ubf = Metadata::read_numeric(pack, I"^used_by_future");
        Synoptic::numeric_entry(ubf);
    }
    Synoptic::end_array(I);

§1.3. Define ACTIVITY_BEFORE_RULEBOOKS array1.3 =

    inter_name *iname = HierarchyLocations::find(I, ACTIVITY_BEFORE_RULEBOOKS_HL);
    Synoptic::begin_array(I, iname);
    for (int i=0; i<TreeLists::len(inv->activity_nodes); i++) {
        inter_package *pack = Inter::Package::defined_by_frame(inv->activity_nodes->list[i].node);
        inter_symbol *vc_s = Metadata::read_symbol(pack, I"^before_rulebook");
        Synoptic::symbol_entry(vc_s);
    }
    Synoptic::end_array(I);

§1.4. Define ACTIVITY_FOR_RULEBOOKS array1.4 =

    inter_name *iname = HierarchyLocations::find(I, ACTIVITY_FOR_RULEBOOKS_HL);
    Synoptic::begin_array(I, iname);
    for (int i=0; i<TreeLists::len(inv->activity_nodes); i++) {
        inter_package *pack = Inter::Package::defined_by_frame(inv->activity_nodes->list[i].node);
        inter_symbol *vc_s = Metadata::read_symbol(pack, I"^for_rulebook");
        Synoptic::symbol_entry(vc_s);
    }
    Synoptic::end_array(I);

§1.5. Define ACTIVITY_VAR_CREATORS array1.5 =

    inter_name *iname = HierarchyLocations::find(I, ACTIVITY_VAR_CREATORS_HL);
    Synoptic::begin_array(I, iname);
    for (int i=0; i<TreeLists::len(inv->activity_nodes); i++) {
        inter_package *pack = Inter::Package::defined_by_frame(inv->activity_nodes->list[i].node);
        inter_symbol *vc_s = Metadata::read_optional_symbol(pack, I"^var_creator");
        if (vc_s) Synoptic::symbol_entry(vc_s);
        else Synoptic::numeric_entry(0);
    }
    Synoptic::end_array(I);