X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Finterface.c;h=58604442e4671c4533ce32c228775913a21f1f7c;hb=e33cdc26ace551aae08fcd71a9f0d460c89b789d;hp=5f7ceee13c06398cf0b90d399490155ecccb8548;hpb=35f77ce6bd3ccc27047eda0b3ef8d74c7a86c3d7;p=gedcom-parse.git diff --git a/gedcom/interface.c b/gedcom/interface.c index 5f7ceee..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,7 +93,15 @@ void end_element(Gedcom_elt elt, Gedcom_ctxt parent, Gedcom_ctxt self, (*cb)(parent, self, parsed_value); } -void gedcom_cast_error(char* file, int line) +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"), file, line); + 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])); }