X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;ds=sidebyside;f=src%2Fstorage%2Fstorage.c;h=8b00a716308ffc9eceae0c1d8f1b88b785b904de;hb=23eeb22223e34cfae61897bc1b15f45c41cc6df5;hp=9f74f90d1025bf6a65740d5db48b3ee93279d3c0;hpb=094bc471373afa79a63c024909d57261fef00b2f;p=familia.git diff --git a/src/storage/storage.c b/src/storage/storage.c index 9f74f90..8b00a71 100644 --- a/src/storage/storage.c +++ b/src/storage/storage.c @@ -1,3 +1,4 @@ +#include #include #include "storage.h" @@ -6,6 +7,9 @@ struct familia_storage * _familia_storage_current; +extern void _familia_storage_positions_init(); +extern void _familia_storage_positions_free(); + struct familia_storage * familia_storage_get_current() { return _familia_storage_current; @@ -31,6 +35,8 @@ struct familia_storage * familia_storage_new() storage->families = NULL; storage->families_no = 0; + _familia_storage_positions_init(); + return storage; } @@ -57,6 +63,8 @@ void familia_storage_free(struct familia_storage * storage) storage->families = NULL; storage->families_no = 0; } + + _familia_storage_positions_free(); } void familia_storage_add_individual(struct familia_storage * storage, struct familia_individual * individual) @@ -191,3 +199,63 @@ void familia_storage_remove_family_by_id(struct familia_storage * storage, unsig } } +void familia_storage_dump_all() +{ + int i; + struct familia_storage * storage = NULL; + struct familia_family * family = NULL; + struct familia_individual * individual = NULL; + + storage = familia_storage_get_current(); + + for (i = 0; i < storage->individuals_no; i++) { + 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) { + int j; + struct familia_family * f = NULL; + struct familia_individual * i1 = NULL; + struct familia_individual * i2 = NULL; + + printf("\t Families:\n"); + for (j = 0; j < individual->families_no; j++) { + f = individual->families[j]; + i1 = familia_family_get_individual(f, Individual1); + i2 = familia_family_get_individual(f, Individual2); + + printf("\t > %s&%s\n", familia_individual_get_first_name(i1), familia_individual_get_first_name(i2)); + } + printf("\t Parents:\n"); + f = familia_individual_get_parents(individual); + i1 = familia_family_get_individual(f, Individual1); + i2 = familia_family_get_individual(f, Individual2); + + printf("\t > %s&%s\n", familia_individual_get_first_name(i1), familia_individual_get_first_name(i2)); + } + } + + + for (i = 0; i < storage->families_no; i++) { + int j; + struct familia_individual * i1 = NULL; + struct familia_individual * i2 = NULL; + + family = storage->families[i]; + + printf("Family (%d)\n", family->id); + i1 = familia_family_get_individual(family, Individual1); + i2 = familia_family_get_individual(family, Individual2); + printf("\t First parent: %s\n", familia_individual_get_first_name(i1)); + printf("\t Second parent: %s\n", familia_individual_get_first_name(i2)); + + 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", familia_individual_get_first_name(i1)); + } + } + } +}