X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Fstorage%2Findividual.c;h=f5a94df17e4b04895362c5662eb11a74b6e6da8c;hb=53d9ddd557f5c7543a14402a2a01b0119eadbbfa;hp=856796d1f9d7767914e7dbd86e44dd04d2d9de78;hpb=23eeb22223e34cfae61897bc1b15f45c41cc6df5;p=familia.git diff --git a/src/storage/individual.c b/src/storage/individual.c index 856796d..f5a94df 100644 --- a/src/storage/individual.c +++ b/src/storage/individual.c @@ -20,6 +20,8 @@ struct familia_individual * familia_individual_new() individual->last_name = NULL; individual->families = NULL; individual->families_no = 0; + individual->parents = NULL; + individual->birth = NULL; return individual; } @@ -48,6 +50,15 @@ void familia_individual_free(struct familia_individual * individual) individual->families_no = 0; } + if (individual->parents) { + individual->parents = NULL; + } + + if (individual->birth) { + free(individual->birth); + individual->birth = NULL; + } + free(individual); } @@ -74,10 +85,6 @@ void familia_individual_set_first_name(struct familia_individual * individual, c char * familia_individual_get_first_name(struct familia_individual * individual) { - if (!individual) { - return NULL; - } - return individual->first_name; } @@ -189,3 +196,33 @@ void familia_individual_remove_parents(struct familia_individual * individual) { individual->parents = NULL; } + +int familia_individual_nth_child_of_family(struct familia_individual * individual, struct familia_family * family) +{ + unsigned int i; + unsigned int children_no = family->children_no; + + for (i = 0; i < children_no; i++) { + if (family->children[i]->id == individual->id) { + return i; + } + } + + return -1; +} + +void familia_individual_set_birth_date(struct familia_individual * individual, struct date_value dv) +{ + /* TODO: Add multiple birth dates (in case there are many different sources) */ + if (!individual->birth) { + struct date_value * date = NULL; + date = gedcom_new_date_value(NULL); + + /* Just copy parsed date_value to newly allocated variable... */ + memcpy(date, &dv, sizeof(struct date_value)); + individual->birth = date; + } + else { + fprintf(stderr, "> Date has been already set, ignoring new one: %s\n", gedcom_date_to_string(&dv)); + } +} \ No newline at end of file