X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fuser_rec.c;h=ba1dc5eca4145b42a2f5b0b1714bd5072ad27043;hb=bb2090762d3ae9355a04286c33b78d24736b783c;hp=90ffb0b995549443ce630451fcf7679290dd4f60;hpb=72689522e287ca3b2231e7d8881f0fe5bea48f15;p=gedcom-parse.git diff --git a/gom/user_rec.c b/gom/user_rec.c index 90ffb0b..ba1dc5e 100644 --- a/gom/user_rec.c +++ b/gom/user_rec.c @@ -241,12 +241,27 @@ Gedcom_ctxt user_elt_start(_ELT_PARAMS_) return (Gedcom_ctxt)result; } +DEFINE_SUB_MAKEFUNC(user_data) +DEFINE_SUB_ADDFUNC(user_data) +DEFINE_SUB_FINDFUNC(user_data) +DEFINE_SUB_REMOVEFUNC(user_data) +DEFINE_SUB_MOVEFUNC(user_data) + void user_rec_subscribe() { gedcom_subscribe_to_record(REC_USER, user_rec_start, def_rec_end); gedcom_subscribe_to_element(ELT_USER, user_elt_start, def_elt_end); } +void UNREFALLFUNC(user_data)(struct user_data *obj) +{ + if (obj) { + struct user_data* runner; + for (runner = obj; runner; runner = runner->next) + unref_xref_value(runner->xref_value); + } +} + void CLEANFUNC(user_data)(struct user_data* data) { if (data) { @@ -255,6 +270,14 @@ void CLEANFUNC(user_data)(struct user_data* data) } } +void UNREFALLFUNC(user_rec)(struct user_rec *obj) +{ + if (obj) { + unref_xref_value(obj->xref_value); + UNREFALLFUNC(user_data)(obj->extra); + } +} + void CLEANFUNC(user_rec)(struct user_rec* rec) { if (rec) { @@ -300,13 +323,14 @@ int write_user_data(Gedcom_write_hndl hndl, struct user_data* data) if (!data) return 1; - for (obj = data; data; data = data->next) { + for (obj = data; obj; obj = obj->next) { if (obj->xref_value) result |= gedcom_write_user_xref(hndl, obj->level, obj->tag, NULL, obj->xref_value); - else + else { result |= gedcom_write_user_str(hndl, obj->level, obj->tag, NULL, obj->str_value); + } } return result; }