X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fevent.c;h=3b45643c06265bcd735d176cf1e25010009533f5;hb=d8d5e051c5e0917e639a9320e9a4a01d6f0e83b3;hp=2d05ee9f28f3ce96b9dbcae6d4a4a733e79ee32f;hpb=72689522e287ca3b2231e7d8881f0fe5bea48f15;p=gedcom-parse.git diff --git a/gom/event.c b/gom/event.c index 2d05ee9..3b45643 100644 --- a/gom/event.c +++ b/gom/event.c @@ -44,11 +44,8 @@ Gedcom_ctxt sub_evt_start(_ELT_PARAMS_) if (! ctxt) NO_CONTEXT; else { - struct event *evt = (struct event *)malloc(sizeof(struct event)); - if (! evt) - MEMORY_ERROR; - else { - memset (evt, 0, sizeof(struct event)); + struct event *evt = SUB_MAKEFUNC(event)(); + if (evt) { evt->event = parsed_tag; evt->event_name = strdup(tag); if (! evt->event_name) { @@ -93,11 +90,8 @@ Gedcom_ctxt sub_attr_start(_ELT_PARAMS_) if (! ctxt) NO_CONTEXT; else { - struct event *evt = (struct event *)malloc(sizeof(struct event)); - if (! evt) - MEMORY_ERROR; - else { - memset (evt, 0, sizeof(struct event)); + struct event *evt = SUB_MAKEFUNC(event)(); + if (evt) { evt->event = parsed_tag; evt->event_name = strdup(tag); if (! evt->event_name) { @@ -131,6 +125,12 @@ Gedcom_ctxt sub_attr_start(_ELT_PARAMS_) return (Gedcom_ctxt)result; } +DEFINE_SUB_MAKEFUNC(event) +DEFINE_SUB_ADDFUNC(event) +DEFINE_SUB_FINDFUNC(event) +DEFINE_SUB_REMOVEFUNC(event) +DEFINE_SUB_MOVEFUNC(event) + DEFINE_STRING_CB(event, sub_evt_type_start, type) DEFINE_DATE_CB(event, sub_evt_date_start, date) DEFINE_AGE_CB(event, sub_evt_age_start, age) @@ -226,6 +226,22 @@ void event_subscribe() sub_evt_caus_start, def_elt_end); } +void UNREFALLFUNC(event)(struct event* obj) +{ + if (obj) { + struct event* runner; + for (runner = obj; runner; runner = runner->next) { + UNREFALLFUNC(place)(runner->place); + UNREFALLFUNC(address)(runner->address); + UNREFALLFUNC(source_citation)(runner->citation); + UNREFALLFUNC(multimedia_link)(runner->mm_link); + UNREFALLFUNC(note_sub)(runner->note); + unref_xref_value(runner->family); + UNREFALLFUNC(user_data)(runner->extra); + } + } +} + void CLEANFUNC(event)(struct event* evt) { if (evt) {