X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fuser_ref.c;h=1dac775aba5eb8cc633704ceb3a247b7c634fc71;hb=d8d5e051c5e0917e639a9320e9a4a01d6f0e83b3;hp=77b2b7d1ea32c6aaefed1497f32a49adcd753ae2;hpb=72689522e287ca3b2231e7d8881f0fe5bea48f15;p=gedcom-parse.git diff --git a/gom/user_ref.c b/gom/user_ref.c index 77b2b7d..1dac775 100644 --- a/gom/user_ref.c +++ b/gom/user_ref.c @@ -43,13 +43,8 @@ Gedcom_ctxt sub_user_ref_start(_ELT_PARAMS_) if (! ctxt) NO_CONTEXT; else { - struct user_ref_number *refn - = (struct user_ref_number *)malloc(sizeof(struct user_ref_number)); - - if (! refn) - MEMORY_ERROR; - else { - memset (refn, 0, sizeof(struct user_ref_number)); + struct user_ref_number *refn = SUB_MAKEFUNC(user_ref_number)(); + if (refn) { refn->value = strdup(GEDCOM_STRING(parsed_value)); if (! refn->value) { MEMORY_ERROR; @@ -81,6 +76,12 @@ Gedcom_ctxt sub_user_ref_start(_ELT_PARAMS_) return (Gedcom_ctxt)result; } +DEFINE_SUB_MAKEFUNC(user_ref_number) +DEFINE_SUB_ADDFUNC(user_ref_number) +DEFINE_SUB_FINDFUNC(user_ref_number) +DEFINE_SUB_REMOVEFUNC(user_ref_number) +DEFINE_SUB_MOVEFUNC(user_ref_number) + DEFINE_STRING_CB(user_ref_number, sub_user_ref_type_start, type) DEFINE_ADDFUNC2(user_ref_number, user_data, extra) @@ -126,6 +127,15 @@ void user_ref_subscribe() def_elt_end); } +void UNREFALLFUNC(user_ref_number)(struct user_ref_number* obj) +{ + if (obj) { + struct user_ref_number* runner; + for (runner = obj; runner; runner = runner->next) + UNREFALLFUNC(user_data)(runner->extra); + } +} + void CLEANFUNC(user_ref_number)(struct user_ref_number* refn) { if (refn) {