X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fchange_date.c;h=0e568691afe2401b5e45630a3c4533a5b7a53e49;hb=bb5284fc2cc6ee6694ed523e01ea454141a370b3;hp=8dd7fb3a97a166a135efd1a713de14daf1ac35ba;hpb=082066d0c776403b70c366f9a7d1333c7a9fac15;p=gedcom-parse.git diff --git a/gom/change_date.c b/gom/change_date.c index 8dd7fb3..0e56869 100644 --- a/gom/change_date.c +++ b/gom/change_date.c @@ -54,19 +54,19 @@ Gedcom_ctxt sub_chan_start(_ELT_PARAMS_) switch (ctxt->ctxt_type) { case REC_FAM: - family_set_change_date(ctxt, chan); break; + ADDFUNC2_NOLIST(family,change_date)(ctxt, chan); break; case REC_INDI: - individual_set_change_date(ctxt, chan); break; + ADDFUNC2_NOLIST(individual,change_date)(ctxt, chan); break; case REC_OBJE: - multimedia_set_change_date(ctxt, chan); break; + ADDFUNC2_NOLIST(multimedia,change_date)(ctxt, chan); break; case REC_NOTE: - note_set_change_date(ctxt, chan); break; + ADDFUNC2_NOLIST(note,change_date)(ctxt, chan); break; case REC_REPO: - repository_set_change_date(ctxt, chan); break; + ADDFUNC2_NOLIST(repository,change_date)(ctxt, chan); break; case REC_SOUR: - source_set_change_date(ctxt, chan); break; + ADDFUNC2_NOLIST(source,change_date)(ctxt, chan); break; case REC_SUBM: - submitter_set_change_date(ctxt, chan); break; + ADDFUNC2_NOLIST(submitter,change_date)(ctxt, chan); break; default: UNEXPECTED_CONTEXT(ctxt->ctxt_type); } @@ -77,8 +77,11 @@ Gedcom_ctxt sub_chan_start(_ELT_PARAMS_) return (Gedcom_ctxt)result; } -DATE_CB(change_date, sub_chan_date_start, date) -STRING_CB(change_date, sub_chan_time_start, time) +DEFINE_DATE_CB(change_date, sub_chan_date_start, date) +DEFINE_STRING_CB(change_date, sub_chan_time_start, time) + +DEFINE_ADDFUNC2(change_date, note_sub, note) +DEFINE_ADDFUNC2(change_date, user_data, extra) void change_date_subscribe() { @@ -89,27 +92,13 @@ void change_date_subscribe() def_elt_end); } -void change_date_add_note(Gom_ctxt ctxt, struct note_sub* note) -{ - struct change_date *chan = SAFE_CTXT_CAST(change_date, ctxt); - if (chan) - LINK_CHAIN_ELT(note_sub, chan->note, note); -} - -void change_date_add_user_data(Gom_ctxt ctxt, struct user_data* data) -{ - struct change_date *obj = SAFE_CTXT_CAST(change_date, ctxt); - if (obj) - LINK_CHAIN_ELT(user_data, obj->extra, data); -} - -void change_date_cleanup(struct change_date *chan) +void CLEANFUNC(change_date)(struct change_date *chan) { if (chan) { SAFE_FREE(chan->date); SAFE_FREE(chan->time); - DESTROY_CHAIN_ELTS(note_sub, chan->note, note_sub_cleanup); - DESTROY_CHAIN_ELTS(user_data, chan->extra, user_data_cleanup); + DESTROY_CHAIN_ELTS(note_sub, chan->note); + DESTROY_CHAIN_ELTS(user_data, chan->extra); } SAFE_FREE(chan); } @@ -122,6 +111,12 @@ int write_change_date(Gedcom_write_hndl hndl, int parent, if (!chan) return 1; result |= gedcom_write_element_str(hndl, ELT_SUB_CHAN, 0, parent, NULL); + if (chan->date) + result |= gedcom_write_element_date(hndl, ELT_SUB_CHAN_DATE, 0, + ELT_SUB_CHAN, chan->date); + if (chan->time) + result |= gedcom_write_element_str(hndl, ELT_SUB_CHAN_TIME, 0, + ELT_SUB_CHAN_DATE, chan->time); if (chan->note) result |= write_note_subs(hndl, ELT_SUB_CHAN, chan->note); if (chan->extra)