X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fsource_event.c;h=51a4b60cc765ff33782fc41475a4482afdb58efe;hb=d70e2fdb664f6723cd8a1c131fdbeb39cb75d7be;hp=fea635184a8c6652d087576837ed7be9a73d7c57;hpb=082066d0c776403b70c366f9a7d1333c7a9fac15;p=gedcom-parse.git diff --git a/gom/source_event.c b/gom/source_event.c index fea6351..51a4b60 100644 --- a/gom/source_event.c +++ b/gom/source_event.c @@ -53,7 +53,7 @@ Gedcom_ctxt sub_sour_even_start(_ELT_PARAMS_) else { switch (ctxt->ctxt_type) { case ELT_SOUR_DATA: - source_add_event(ctxt, evt); break; + ADDFUNC2(source,source_event)(ctxt, evt); break; default: UNEXPECTED_CONTEXT(ctxt->ctxt_type); } @@ -65,8 +65,10 @@ Gedcom_ctxt sub_sour_even_start(_ELT_PARAMS_) return (Gedcom_ctxt)result; } -DATE_CB(source_event, sub_sour_even_date_start, date_period) -STRING_CB(source_event, sub_sour_even_plac_start, jurisdiction) +DEFINE_DATE_CB(source_event, sub_sour_even_date_start, date_period) +DEFINE_STRING_CB(source_event, sub_sour_even_plac_start, jurisdiction) + +DEFINE_ADDFUNC2(source_event, user_data, extra) void source_event_subscribe() { @@ -78,20 +80,13 @@ void source_event_subscribe() sub_sour_even_plac_start, def_elt_end); } -void source_event_add_user_data(Gom_ctxt ctxt, struct user_data* data) -{ - struct source_event *obj = SAFE_CTXT_CAST(source_event, ctxt); - if (obj) - LINK_CHAIN_ELT(user_data, obj->extra, data); -} - -void source_event_cleanup(struct source_event* evt) +void CLEANFUNC(source_event)(struct source_event* evt) { if (evt) { SAFE_FREE(evt->recorded_events); SAFE_FREE(evt->date_period); SAFE_FREE(evt->jurisdiction); - DESTROY_CHAIN_ELTS(user_data, evt->extra, user_data_cleanup); + DESTROY_CHAIN_ELTS(user_data, evt->extra); } } @@ -106,6 +101,9 @@ int write_source_events(Gedcom_write_hndl hndl, int parent, for (obj = evt; obj; obj = obj->next) { result |= gedcom_write_element_str(hndl, ELT_SOUR_DATA_EVEN, 0, parent, obj->recorded_events); + if (obj->date_period) + result |= gedcom_write_element_date(hndl, ELT_SOUR_DATA_EVEN_DATE, 0, + ELT_SOUR_DATA_EVEN, obj->date_period); if (obj->jurisdiction) result |= gedcom_write_element_str(hndl, ELT_SOUR_DATA_EVEN_PLAC, 0, ELT_SOUR_DATA_EVEN, obj->jurisdiction);