X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fmultimedia_link.c;h=b2ee55925918c681fb28f201232de2affc275138;hb=866835ac8928d7e40919c2ca59799cb37023856f;hp=0b1c4eb85de6c9a00adfebbf8b727c600d63f297;hpb=763e8737b5118c5f23dca84a3290c2d805bbefe6;p=gedcom-parse.git diff --git a/gom/multimedia_link.c b/gom/multimedia_link.c index 0b1c4eb..b2ee559 100644 --- a/gom/multimedia_link.c +++ b/gom/multimedia_link.c @@ -46,10 +46,11 @@ Gedcom_ctxt sub_obje_start(_ELT_PARAMS_) else { struct multimedia_link *mm = SUB_MAKEFUNC(multimedia_link)(); if (mm) { + int type = ctxt_type(ctxt); if (GEDCOM_IS_XREF_PTR(parsed_value)) mm->reference = GEDCOM_XREF_PTR(parsed_value); - switch (ctxt->ctxt_type) { + switch (type) { case ELT_SUB_FAM_EVT: case ELT_SUB_FAM_EVT_EVEN: case ELT_SUB_INDIV_ATTR: @@ -70,7 +71,7 @@ Gedcom_ctxt sub_obje_start(_ELT_PARAMS_) case REC_SUBM: ADDFUNC2(submitter,multimedia_link)(ctxt, mm); break; default: - UNEXPECTED_CONTEXT(ctxt->ctxt_type); + UNEXPECTED_CONTEXT(type); } result = MAKE_GOM_CTXT(elt, multimedia_link, mm); } @@ -80,6 +81,10 @@ Gedcom_ctxt sub_obje_start(_ELT_PARAMS_) } DEFINE_SUB_MAKEFUNC(multimedia_link) +DEFINE_SUB_ADDFUNC(multimedia_link) +DEFINE_SUB_FINDFUNC(multimedia_link) +DEFINE_SUB_REMOVEFUNC(multimedia_link) +DEFINE_SUB_MOVEFUNC(multimedia_link) DEFINE_STRING_CB(multimedia_link, sub_obje_form_start, form) DEFINE_STRING_CB(multimedia_link, sub_obje_titl_start, title) @@ -100,6 +105,18 @@ void multimedia_link_subscribe() sub_obje_file_start, def_elt_end); } +void UNREFALLFUNC(multimedia_link)(struct multimedia_link* obj) +{ + if (obj) { + struct multimedia_link* runner; + for (runner = obj; runner; runner = runner->next) { + unref_xref_value(runner->reference); + UNREFALLFUNC(note_sub)(runner->note); + UNREFALLFUNC(user_data)(runner->extra); + } + } +} + void CLEANFUNC(multimedia_link)(struct multimedia_link* mm) { if (mm) {