X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fnote.c;h=0dd24430501862bc01cd71f800156e0f1c7caecf;hb=d069cfbd954ca8d53d780ce97d7da1d363bb51fe;hp=b3ff3700ef9ea159bf2abdf1cdf5bd97580227a8;hpb=5b045164f4a11b1f4d709820e784e1ca77b61b3f;p=gedcom-parse.git diff --git a/gom/note.c b/gom/note.c index b3ff370..0dd2443 100644 --- a/gom/note.c +++ b/gom/note.c @@ -46,35 +46,12 @@ Gedcom_ctxt note_start(_REC_PARAMS_) note = make_note_record(xr->string); xr->object = (Gedcom_ctxt) note; } - if (note) { - note->text = strdup(GEDCOM_STRING(parsed_value)); - if (! note->text) - MEMORY_ERROR; - else - result = MAKE_GOM_CTXT(rec, note, xr->object); - } + if (note) + result = MAKE_GOM_CTXT(rec, note, xr->object); return (Gedcom_ctxt)result; } -void note_end(_REC_END_PARAMS_) -{ - Gom_ctxt ctxt = (Gom_ctxt)self; - - if (! ctxt) - NO_CONTEXT; - else { - struct note *note = SAFE_CTXT_CAST(note, ctxt); - if (note) { - char *str = GEDCOM_STRING(parsed_value); - char *newvalue = strdup(str); - if (! newvalue) - MEMORY_ERROR; - else - note->text = newvalue; - } - } -} - +STRING_END_REC_CB(note, note_end, text) GET_REC_BY_XREF(note, XREF_NOTE, gom_get_note_by_xref) Gedcom_ctxt sub_cont_conc_start(_ELT_PARAMS_) @@ -167,3 +144,28 @@ struct note* make_note_record(const char* xrefstr) } return note; } + +int write_notes(Gedcom_write_hndl hndl) +{ + int result = 0; + struct note* obj; + + for (obj = gom_first_note; obj; obj = obj->next) { + result |= gedcom_write_record_str(hndl, REC_NOTE, 0, + obj->xrefstr, obj->text); + if (obj->citation) + result |= write_citations(hndl, REC_NOTE, obj->citation); + if (obj->ref) + result |= write_user_refs(hndl, REC_NOTE, obj->ref); + if (obj->record_id) + result |= gedcom_write_element_str(hndl, ELT_SUB_IDENT_RIN, 0, + REC_NOTE, obj->record_id); + if (obj->change_date) + result |= write_change_date(hndl, REC_NOTE, obj->change_date); + if (obj->extra) + result |= write_user_data(hndl, obj->extra); + } + + return result; +} +