X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Fstorage%2Fstorage.c;h=c54e6a0026a8e0c2feee5d41208e93ca74de1085;hb=4faf7e4b4b91a9c320f7d60299162b09720f1e4a;hp=272e6af264ce7ca41d34393a1f4b9ac6cc79e005;hpb=46c09ea2689913bb459c5f04439647aa138dc196;p=familia.git diff --git a/src/storage/storage.c b/src/storage/storage.c index 272e6af..c54e6a0 100644 --- a/src/storage/storage.c +++ b/src/storage/storage.c @@ -1,3 +1,4 @@ +#include #include #include "storage.h" @@ -34,7 +35,7 @@ struct familia_storage * familia_storage_new() storage->families = NULL; storage->families_no = 0; - _familia_storage_positions_init(); +/* _familia_storage_positions_init();*/ return storage; } @@ -63,7 +64,7 @@ void familia_storage_free(struct familia_storage * storage) storage->families_no = 0; } - _familia_storage_positions_free(); +/* _familia_storage_positions_free();*/ } void familia_storage_add_individual(struct familia_storage * storage, struct familia_individual * individual) @@ -75,6 +76,7 @@ void familia_storage_add_individual(struct familia_storage * storage, struct fam tmp = realloc(storage->individuals, size * sizeof(struct familia_individual *)); if (tmp) { + individual->id = storage->individuals_no; storage->individuals = tmp; storage->individuals[storage->individuals_no] = individual; storage->individuals_no++; @@ -141,6 +143,7 @@ void familia_storage_add_family(struct familia_storage * storage, struct familia tmp = realloc(storage->families, size * sizeof(struct familia_family *)); if (tmp) { + family->id = storage->families_no; storage->families = tmp; storage->families[storage->families_no] = family; storage->families_no++; @@ -198,3 +201,77 @@ void familia_storage_remove_family_by_id(struct familia_storage * storage, unsig } } +void familia_storage_dump_all() +{ + unsigned int i; + struct familia_storage * storage = NULL; + struct familia_family * family = NULL; + struct familia_individual * individual = NULL; + struct familia_individual * i1 = NULL; + struct familia_individual * i2 = NULL; + + storage = familia_storage_get_current(); + + for (i = 0; i < storage->individuals_no; i++) { + struct familia_family * f = NULL; + + individual = storage->individuals[i]; + + printf("Individual (%d)\n", individual->id); + printf("\t First name: %s\n", individual->first_name); + printf("\t Last name: %s\n", individual->last_name); + + if (individual->families_no > 0) { + unsigned int j; + + printf("\t Families:\n"); + for (j = 0; j < individual->families_no; j++) { + f = individual->families[j]; + i1 = familia_family_get_parent(f, Individual1); + i2 = familia_family_get_parent(f, Individual2); + + printf("\t > %s&%s\n", + i1 ? familia_individual_get_first_name(i1) : "NULL", + i2 ? familia_individual_get_first_name(i2) : "NULL"); + } + } + + printf("\t Parents:\n"); + f = NULL; + f = familia_individual_get_parents(individual); + + if (f) { + i1 = familia_family_get_parent(f, Individual1); + i2 = familia_family_get_parent(f, Individual2); + + printf("\t > %s&%s\n", + i1 ? familia_individual_get_first_name(i1) : "NULL", + i2 ? familia_individual_get_first_name(i2) : "NULL"); + } + else { + printf("\t (none)\n"); + } + } + + + for (i = 0; i < storage->families_no; i++) { + unsigned int j; + + family = storage->families[i]; + + printf("Family (%d)\n", family->id); + i1 = familia_family_get_parent(family, Individual1); + printf("\t First parent: %s\n", i1 ? familia_individual_get_first_name(i1) : "NULL"); + + i2 = familia_family_get_parent(family, Individual2); + printf("\t Second parent: %s\n", i2 ? familia_individual_get_first_name(i2) : "NULL"); + + printf("\t Children:\n"); + if (family->children_no > 0) { + for (j = 0; j < family->children_no; j++) { + i1 = family->children[j]; + printf("\t > %s\n", i1 ? familia_individual_get_first_name(i1) : "NULL"); + } + } + } +}