/** * allocate **/ static VALUE t_allocate(VALUE klass) { VALUE obj; root_node root; obj = Data_Make_Struct(klass, struct _root_node, NULL, destroy_all, root); init_root_node(root); return obj; }
/** * intersection **/ static VALUE t_intersection(VALUE self, VALUE other) { root_node set0, set1, ret_set; VALUE ret; ret = Data_Make_Struct(rb_cRejuicerSet, struct _root_node, NULL, destroy_all, ret_set); init_root_node(ret_set); Data_Get_Struct(self, struct _root_node, set0); Data_Get_Struct(other, struct _root_node, set1); intersection(ret_set, set0, set1); return ret; }
/** * union **/ static VALUE t_union(VALUE self, VALUE other) { VALUE obj; root_node result_set, set0, set1; obj = Data_Make_Struct(rb_cFigureSet, struct _root_node, NULL, destroy_all, result_set); init_root_node(result_set); Data_Get_Struct(self, struct _root_node, set0); Data_Get_Struct(other, struct _root_node, set1); join(result_set, set0, set1); return obj; }
void generator::initialize(action *A_base, action *A_use, strong_generators *gens, INT depth, BYTE *prefix, INT verbose_level) { INT f_v = (verbose_level >= 1); INT f_vv = (verbose_level >= 2); if (f_v) { cout << "generator::initialize" << endl; cout << "generator::initialize depth = " << depth << endl; } generator::f_prefix = TRUE; strcpy(generator::fname_base, prefix); generator::depth = depth; downstep_orbits_print_max_orbits = 50; downstep_orbits_print_max_points_per_orbit = INT_MAX; // !!! //f_allowed_to_show_group_elements = TRUE; if (f_vv) { cout << "generator::initialize calling gen->init" << endl; } init(A_base, A_use, gens, depth, verbose_level - 2); INT nb_oracle_nodes = 1000; if (f_vv) { cout << "generator::initialize calling gen->init_oracle" << endl; } init_oracle(nb_oracle_nodes, verbose_level - 1); if (f_vv) { cout << "generator::initialize calling gen->init_root_node" << endl; } init_root_node(verbose_level - 1); if (f_v) { cout << "generator::initialize done" << endl; } }
void generator::initialize_with_starter(action *A_base, action *A_use, strong_generators *gens, INT depth, BYTE *prefix, INT starter_size, INT *starter, strong_generators *Starter_Strong_gens, INT *starter_live_points, INT starter_nb_live_points, void *starter_canonize_data, INT (*starter_canonize)(INT *Set, INT len, INT *Elt, void *data, INT verbose_level), INT verbose_level) { INT f_v = (verbose_level >= 1); INT f_vv = (verbose_level >= 2); if (f_v) { cout << "generator::initialize_with_starter" << endl; } generator::f_prefix = TRUE; strcpy(generator::fname_base, prefix); generator::depth = depth; downstep_orbits_print_max_orbits = 50; downstep_orbits_print_max_points_per_orbit = INT_MAX; // !!! //f_allowed_to_show_group_elements = TRUE; if (f_vv) { cout << "generator::initialize_with_starter calling gen->init" << endl; } init(A_base, A_use, gens, //*gens, tl, depth, verbose_level - 2); if (f_vv) { cout << "generator::initialize_with_starter calling init_starter" << endl; } init_starter(starter_size, starter, Starter_Strong_gens, starter_live_points, starter_nb_live_points, starter_canonize_data, starter_canonize, verbose_level - 2); INT nb_oracle_nodes = 1000; if (f_vv) { cout << "generator::initialize_with_starter calling gen->init_oracle" << endl; } init_oracle(nb_oracle_nodes, verbose_level - 1); if (f_vv) { cout << "generator::initialize_with_starter calling gen->init_root_node" << endl; } init_root_node(verbose_level); if (f_v) { cout << "generator::initialize_with_starter done" << endl; } }