X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Finterface.c;h=58604442e4671c4533ce32c228775913a21f1f7c;hb=7a161f98fa3efba595c96577e3ae7eda15b3dec3;hp=ec156bda512355d2720107c970e14588a0294eab;hpb=f6faf6cb1f47727f8693a0bc4e8b9c6b7aff3817;p=gedcom-parse.git diff --git a/gedcom/interface.c b/gedcom/interface.c index ec156bd..5860444 100644 --- a/gedcom/interface.c +++ b/gedcom/interface.c @@ -39,20 +39,24 @@ void gedcom_subscribe_to_record(Gedcom_rec rec, Gedcom_rec_start_cb cb_start, Gedcom_rec_end_cb cb_end) { - record_start_callback[rec] = cb_start; - record_end_callback[rec] = cb_end; + if (cb_start) { + record_start_callback[rec] = cb_start; + record_end_callback[rec] = cb_end; + } } void gedcom_subscribe_to_element(Gedcom_elt elt, Gedcom_elt_start_cb cb_start, Gedcom_elt_end_cb cb_end) { - element_start_callback[elt] = cb_start; - element_end_callback[elt] = cb_end; + if (cb_start) { + element_start_callback[elt] = cb_start; + element_end_callback[elt] = cb_end; + } } Gedcom_ctxt start_record(Gedcom_rec rec, - int level, char *xref, char *tag) + int level, Gedcom_val xref, char *tag) { Gedcom_rec_start_cb cb = record_start_callback[rec]; if (cb != NULL) @@ -89,3 +93,15 @@ void end_element(Gedcom_elt elt, Gedcom_ctxt parent, Gedcom_ctxt self, (*cb)(parent, self, parsed_value); } +char* val_type_str[] = { N_("null value"), + N_("character string"), + N_("date") }; + +void gedcom_cast_error(char* file, int line, + Gedcom_val_type tried_type, + Gedcom_val_type real_type) +{ + gedcom_warning + (_("Wrong cast of value in file %s, at line %d: %s instead of %s"), + file, line, _(val_type_str[tried_type]), _(val_type_str[real_type])); +}