X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Fstorage%2Fstorage.c;h=c54e6a0026a8e0c2feee5d41208e93ca74de1085;hb=53d9ddd557f5c7543a14402a2a01b0119eadbbfa;hp=8b00a716308ffc9eceae0c1d8f1b88b785b904de;hpb=23eeb22223e34cfae61897bc1b15f45c41cc6df5;p=familia.git diff --git a/src/storage/storage.c b/src/storage/storage.c index 8b00a71..c54e6a0 100644 --- a/src/storage/storage.c +++ b/src/storage/storage.c @@ -35,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; } @@ -64,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) @@ -76,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++; @@ -142,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++; @@ -201,60 +203,74 @@ void familia_storage_remove_family_by_id(struct familia_storage * storage, unsig void familia_storage_dump_all() { - int i; + 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) { - int j; - struct familia_family * f = NULL; - struct familia_individual * i1 = NULL; - struct familia_individual * i2 = NULL; + unsigned int j; 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); + i1 = familia_family_get_parent(f, Individual1); + i2 = familia_family_get_parent(f, Individual2); - printf("\t > %s&%s\n", familia_individual_get_first_name(i1), familia_individual_get_first_name(i2)); + 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 = 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)); + } + + 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++) { - int j; - struct familia_individual * i1 = NULL; - struct familia_individual * i2 = NULL; + unsigned int j; 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)); + 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", familia_individual_get_first_name(i1)); + printf("\t > %s\n", i1 ? familia_individual_get_first_name(i1) : "NULL"); } } }