Added debugging code for dumping data from memory using GUI.
[familia.git] / src / storage / storage.c
index 272e6af264ce7ca41d34393a1f4b9ac6cc79e005..8b00a716308ffc9eceae0c1d8f1b88b785b904de 100644 (file)
@@ -1,3 +1,4 @@
+#include <stdio.h>
 #include <stdlib.h>
 
 #include "storage.h"
@@ -198,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));
+                       }
+               }
+       }
+}