17namespace layer4_classification {
18namespace poset_classification {
26 int f_v = (verbose_level >= 1);
35 cout <<
"poset_orbit_node::read_memory_object "
36 "node " << node << endl;
43 cout <<
"poset_orbit_node::read_memory_object "
44 "nb_strong_generators " << nb_strong_generators << endl;
46 if (nb_strong_generators) {
48 hdl_strong_generators =
NEW_int(nb_strong_generators);
50 for (i = 0; i < nb_strong_generators; i++) {
56 first_strong_generator_handle = -1;
58 for (i = 0; i < nb_strong_generators; i++) {
69 for (i = 0; i < A->
base_len(); i++) {
75 first_strong_generator_handle = -1;
80 cout <<
"poset_orbit_node::read_memory_object nb_extensions "
81 << nb_extensions << endl;
86 cout <<
"E allocated" << endl;
88 for (i = 0; i < nb_extensions; i++) {
90 cout <<
"poset_orbit_node::read_memory_object "
91 "extension " << i << endl;
99 cout <<
"poset_orbit_node::read_memory_object "
100 "pt = " << E[i].
get_pt() << endl;
105 cout <<
"poset_orbit_node::read_memory_object "
111 cout <<
"poset_orbit_node::read_memory_object "
112 "type = " << E[i].
get_type() << endl;
130 cout <<
"poset_orbit_node::read_memory_object type "
131 << E[i].
get_type() <<
" is illegal" << endl;
137 cout <<
"poset_orbit_node::read_memory_object node "
138 << node <<
" finished" << endl;
147 int f_v = (verbose_level >= 1);
156 cout <<
"poset_orbit_node::write_memory_object "
157 "node " << node << endl;
165 cout << node <<
" " << prev <<
" " << pt <<
" "
166 << nb_strong_generators << endl;
168 for (i = 0; i < nb_strong_generators; i++) {
174 if (nb_strong_generators) {
176 cout <<
"writing tl" << endl;
178 for (i = 0; i < A->
base_len(); i++) {
181 cout << tl[i] <<
" ";
190 cout <<
"nb_extensions=" << nb_extensions << endl;
193 for (i = 0; i < nb_extensions; i++) {
198 cout << i <<
" : " << E[i].
get_pt() <<
" : "
205 cout <<
"extension node, data=" << E[i].
get_data() << endl;
211 cout <<
"fusion node, hdl=" << E[i].
get_data() << endl;
220 cout <<
"poset_orbit_node::write_memory: type "
221 << E[i].
get_type() <<
" is illegal" << endl;
227 cout <<
"poset_orbit_node::write_memory_object node "
228 << node <<
" finished" << endl;
237 s += 2 *
sizeof(int);
238 s +=
sizeof(
long int);
247 if (nb_strong_generators) {
255 for (i = 0; i < nb_extensions; i++) {
256 s +=
sizeof(
long int);
257 s += 2 *
sizeof(int);
273 s += 2 *
sizeof(int);
283 ifstream &fp,
int verbose_level)
285 int f_v = (verbose_level >= 1);
288 cout <<
"poset_orbit_node::sv_read_file node " << node << endl;
292 if (nb_strong_generators) {
294 hdl = first_strong_generator_handle;
299 Schreier_vector = PC->get_schreier_vector_handler()->sv_read_file(
300 hdl, nb_strong_generators,
303 cout <<
"poset_orbit_node::sv_read_file node " << node
304 <<
" finished" << endl;
309 ofstream &fp,
int verbose_level)
311 int f_v = (verbose_level >= 1);
314 cout <<
"poset_orbit_node::sv_write_file node " << node << endl;
317 PC->get_schreier_vector_handler()->sv_write_file(Schreier_vector,
321 cout <<
"poset_orbit_node::sv_write_file node "
322 << node <<
" finished" << endl;
327 ifstream &fp,
int &nb_group_elements,
330 int f_v = (verbose_level >= 1);
331 int f_vv = (verbose_level >= 2);
338 fp.read((
char *) &node,
sizeof(
int));
340 cout <<
"poset_orbit_node::read_file node " << node << endl;
342 fp.read((
char *) &prev,
sizeof(
int));
343 fp.read((
char *) &pt,
sizeof(
long int));
344 fp.read((
char *) &nb_strong_generators,
sizeof(
int));
349 cout <<
"prev=" << prev << endl;
350 cout <<
"pt=" << pt << endl;
351 cout <<
"nb_strong_generators " << nb_strong_generators << endl;
353 if (nb_strong_generators) {
355 hdl_strong_generators =
NEW_int(nb_strong_generators);
357 for (i = 0; i < nb_strong_generators; i++) {
360 cout <<
"read element" << endl;
368 first_strong_generator_handle = -1;
369 for (i = 0; i < nb_strong_generators; i++) {
372 cout <<
"read element" << endl;
384 for (i = 0; i < A->
base_len(); i++) {
385 fp.read((
char *) &tl[i],
sizeof(
int));
388 cout <<
"read tl[" << i <<
"]=" << tl[i] << endl;
394 first_strong_generator_handle = -1;
397 fp.read((
char *) &nb_extensions,
sizeof(
int));
400 cout <<
"nb_extensions " << nb_extensions << endl;
404 cout <<
"E allocated" << endl;
406 for (i = 0; i < nb_extensions; i++) {
408 cout <<
"poset_orbit_node::read_file extension " << i << endl;
413 fp.read((
char *) &a,
sizeof(
long int));
417 cout <<
"pt = " << E[i].
get_pt() << endl;
419 fp.read((
char *) &b,
sizeof(
int));
425 fp.read((
char *) &b,
sizeof(
int));
429 cout <<
"type = " << E[i].
get_type() << endl;
433 fp.read((
char *) &b,
sizeof(
int));
442 cout <<
"read element" << endl;
447 fp.read((
char *) &b,
sizeof(
int));
449 fp.read((
char *) &b,
sizeof(
int));
454 cout <<
"poset_orbit_node::read_file: "
455 "type EXTENSION_TYPE_PROCESSING is illegal" << endl;
461 cout <<
"poset_orbit_node::read_file node "
462 << node <<
" finished" << endl;
467 ofstream &fp,
int &nb_group_elements,
478 cout <<
"poset_orbit_node::write_file node " << node << endl;
480 fp.write((
char *) &node,
sizeof(
int));
481 fp.write((
char *) &prev,
sizeof(
int));
482 fp.write((
char *) &pt,
sizeof(
long int));
483 fp.write((
char *) &nb_strong_generators,
sizeof(
int));
485 cout << node <<
" " << prev <<
" " << pt <<
" "
486 << nb_strong_generators << endl;
488 for (i = 0; i < nb_strong_generators; i++) {
493 if (nb_strong_generators) {
495 cout <<
"writing tl" << endl;
497 for (i = 0; i < A->
base_len(); i++) {
498 fp.write((
char *) &tl[i],
sizeof(
int));
500 cout << tl[i] <<
" ";
507 fp.write((
char *) &nb_extensions,
sizeof(
int));
509 cout <<
"nb_extensions=" << nb_extensions << endl;
511 for (i = 0; i < nb_extensions; i++) {
516 fp.write((
char *) &a,
sizeof(
long int));
518 fp.write((
char *) &b,
sizeof(
int));
520 fp.write((
char *) &b,
sizeof(
int));
522 cout << i <<
" : " << E[i].
get_pt()
524 <<
" : " << E[i].
get_type() << endl;
529 fp.write((
char *) &b,
sizeof(
int));
531 cout <<
"extension node, data=" << E[i].
get_data() << endl;
537 cout <<
"fusion node, hdl=" << E[i].
get_data() << endl;
542 fp.write((
char *) &b,
sizeof(
int));
544 fp.write((
char *) &b,
sizeof(
int));
548 cout <<
"poset_orbit_node::write_file: "
549 "type EXTENSION_TYPE_PROCESSING is illegal" << endl;
555 cout <<
"poset_orbit_node::write_file node "
556 << node <<
" finished" << endl;
565 int f_v = (verbose_level >= 1);
568 cout <<
"poset_orbit_node::save_schreier_forest"
571 if (PC->get_control()->f_export_schreier_trees) {
572 int orbit_no, nb_orbits;
575 for (orbit_no = 0; orbit_no < nb_orbits; orbit_no++) {
577 string fname_mask_full;
579 PC->create_shallow_schreier_tree_fname_mask(
583 fname_mask_full.assign(fname);
584 fname_mask_full.append(
".layered_graph");
592 cout <<
"poset_orbit_node::save_schreier_forest "
601 int f_v = (verbose_level >= 1);
602 int f_vv = (verbose_level >= 2);
605 cout <<
"poset_orbit_node::save_shallow_schreier_forest"
608 if (PC->get_control()->f_export_schreier_trees) {
610 cout <<
"poset_orbit_node::save_shallow_schreier_forest "
611 "f_export_schreier_trees is TRUE" << endl;
613 int orbit_no, nb_orbits;
616 if (Schreier_vector == NULL) {
617 cout <<
"poset_orbit_node::save_shallow_schreier_forest "
618 "Schreier_vector == NULL" << endl;
622 orbit_reps, nb_orbits);
624 cout <<
"poset_orbit_node::save_shallow_schreier_forest "
625 "nb_orbits = " << nb_orbits << endl;
627 for (orbit_no = 0; orbit_no < nb_orbits; orbit_no++) {
631 cout <<
"poset_orbit_node::save_shallow_schreier_forest "
632 "orbit " << orbit_no <<
" / " << nb_orbits << endl;
636 string fname_mask_full;
638 PC->create_shallow_schreier_tree_fname_mask(
642 fname_mask_full.assign(fname);
643 fname_mask_full.append(
".layered_graph");
646 orbit_no, orbit_reps[orbit_no],
653 cout <<
"poset_orbit_node::save_shallow_schreier_forest "
664 int f_v = (verbose_level >= 1);
667 cout <<
"poset_orbit_node::draw_schreier_forest"
670 if (PC->get_control()->f_draw_schreier_trees) {
673 int orbit_no, nb_orbits;
676 string fname_mask_latex;
677 PC->create_schreier_tree_fname_mask_base_tex(fname_mask_latex);
679 snprintf(str, 2000, fname_mask_latex.c_str(), node);
682 label_tex.assign(str);
686 for (orbit_no = 0; orbit_no < nb_orbits; orbit_no++) {
688 int f_has_point_labels =
FALSE;
689 long int *point_labels = NULL;
692 PC->create_schreier_tree_fname_mask_base(fname_mask);
694 snprintf(str, 2000, fname_mask.c_str(), node, orbit_no);
702 if (f_using_invariant_subset) {
703 f_has_point_labels =
TRUE;
708 cout <<
"poset_orbit_node::draw_schreier_forest"
710 cout <<
"Node " << node <<
" " << orbit_no
711 <<
" drawing schreier tree" << endl;
716 PC->get_control()->draw_options,
718 f_has_point_labels, point_labels,
722 Schreier->
latex(label_tex);
726 cout <<
"poset_orbit_node::draw_schreier_forest"
a collection of functions related to file io
for serialization of complex data types
void read_lint(long int *i)
void write_lint(long int i)
a permutation group in a fixed action.
void element_print_quick(void *elt, std::ostream &ost)
int coded_elt_size_in_char
void element_retrieve(int hdl, void *elt, int verbose_level)
void element_read_from_memory_object(int *Elt, orbiter_kernel_system::memory_object *m, int verbose_level)
void element_write_file_fp(int *Elt, std::ofstream &fp, int verbose_level)
void element_read_file_fp(int *Elt, std::ifstream &fp, int verbose_level)
void element_write_to_memory_object(int *Elt, orbiter_kernel_system::memory_object *m, int verbose_level)
int element_store(void *elt, int verbose_level)
void export_tree_as_layered_graph(int orbit_no, int orbit_rep, std::string &fname_mask, int verbose_level)
void count_number_of_orbits_and_get_orbit_reps(int *&orbit_reps, int &nb_orbits)
Schreier trees for orbits of groups on points.
void export_tree_as_layered_graph(int orbit_no, std::string &fname_mask, int verbose_level)
void draw_tree(std::string &fname, graphics::layered_graph_draw_options *Opt, int orbit_no, int f_has_point_labels, long int *point_labels, int verbose_level)
void latex(std::string &fname)
represents a flag in the poset classification algorithm; related to poset_orbit_node
void set_data1(int data1)
void set_data2(int data1)
void set_orbit_len(int orbit_len)
the poset classification algorithm
long int calc_size_on_file(actions::action *A, int verbose_level)
void read_memory_object(poset_classification *PC, actions::action *A, orbiter_kernel_system::memory_object *m, int &nb_group_elements, int verbose_level)
void draw_schreier_forest(poset_classification *PC, groups::schreier *Schreier, int f_using_invariant_subset, actions::action *AR, int verbose_level)
void sv_read_file(poset_classification *PC, std::ifstream &fp, int verbose_level)
void write_memory_object(poset_classification *PC, actions::action *A, orbiter_kernel_system::memory_object *m, int &nb_group_elements, int verbose_level)
void write_file(actions::action *A, std::ofstream &fp, int &nb_group_elements, int verbose_level)
void save_schreier_forest(poset_classification *PC, groups::schreier *Schreier, int verbose_level)
void sv_write_file(poset_classification *PC, std::ofstream &fp, int verbose_level)
void save_shallow_schreier_forest(poset_classification *PC, int verbose_level)
void read_file(actions::action *A, std::ifstream &fp, int &nb_group_elements, int verbose_level)
#define NEW_OBJECTS(type, n)
the orbiter library for the classification of combinatorial objects
#define EXTENSION_TYPE_PROCESSING
#define EXTENSION_TYPE_FUSION
#define EXTENSION_TYPE_EXTENSION
induced_actions::action_by_restriction * ABR