+/**
+ * Sets date for the current event. Currently supports only individual birth.
+ * TODO: Implement all events.
+ */
+Gedcom_ctxt familia_gedcom_event_set_date(Gedcom_elt elt,
+ Gedcom_ctxt ctxt,
+ int level,
+ char* tag,
+ char* raw_value,
+ int parsed_tag,
+ Gedcom_val parsed_value)
+{
+ struct fged_timestampable_ctxt * tctxt = ctxt;
+
+ switch(tctxt->type) {
+ case BIRTH: {
+ struct date_value dv;
+ struct familia_individual * ind = NULL;
+
+ assert(GEDCOM_IS_DATE(parsed_value));
+
+ ind = ((struct fged_ctxt *)ctxt)->object;
+ dv = GEDCOM_DATE(parsed_value);
+
+ familia_individual_set_birth_date(ind, dv);
+ break;
+ }
+ };
+
+ return ctxt;
+}
+Gedcom_ctxt familia_gedcom_timestampable_ctxt_wrap(Gedcom_elt elt,
+ Gedcom_ctxt ctxt,
+ int level,
+ char* tag,
+ char* raw_value,
+ int parsed_tag,
+ Gedcom_val parsed_value)
+{
+ struct fged_timestampable_ctxt * tctxt = NULL;
+ tctxt = (struct fged_timestampable_ctxt *)malloc(sizeof(struct fged_timestampable_ctxt));
+ tctxt->ctxt = ctxt;
+ tctxt->type = UNSET;
+
+ switch(elt) {
+ case ELT_SUB_INDIV_BIRT:
+ tctxt->type = BIRTH;
+ break;
+ }
+ return tctxt;
+}
+
+void familia_gedcom_timestampable_ctxt_unwrap(Gedcom_elt elt,