X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom.h;h=afaec3b121b5dc715bfe6204a36a792312b0974b;hb=bbbad21718d5b8670fa5095f23ea502d558695c8;hp=742473c09eba5640ce9b3c9049345a464f8d2097;hpb=d392d5f692337233acaf45d2a1a5158529440c16;p=gedcom-parse.git diff --git a/gedcom.h b/gedcom.h index 742473c..afaec3b 100644 --- a/gedcom.h +++ b/gedcom.h @@ -1,22 +1,100 @@ -/* $Id$ */ -/* $Name$ */ -#include -#include +#ifndef __EXTERNAL_H +#define __EXTERNAL_H + #include -#define MAXGEDCOMLEVEL 99 -#define MAXSTDTAGLENGTH 4 -#define GEDCOMTAGOFFSET 257 +typedef enum _REC { + REC_HEAD, + REC_FAM, + REC_INDI, + REC_OBJE, + REC_NOTE, + REC_REPO, + REC_SOUR, + REC_SUBN, + REC_SUBM, + REC_USER, + LAST_REC +} Gedcom_rec; + +typedef enum _ELT { + ELT_HEAD_SOUR, + ELT_HEAD_SOUR_VERS, + ELT_HEAD_SOUR_NAME, + ELT_HEAD_SOUR_CORP, + ELT_HEAD_SOUR_DATA, + ELT_HEAD_SOUR_DATA_DATE, + ELT_HEAD_SOUR_DATA_COPR, + ELT_HEAD_DEST, + ELT_HEAD_DATE, + ELT_HEAD_DATE_TIME, + ELT_HEAD_SUBM, + ELT_HEAD_SUBN, + ELT_HEAD_FILE, + ELT_HEAD_COPR, + ELT_HEAD_GEDC, + ELT_HEAD_GEDC_VERS, + ELT_HEAD_GEDC_FORM, + ELT_HEAD_CHAR, + ELT_HEAD_CHAR_VERS, + ELT_HEAD_LANG, + ELT_HEAD_PLAC, + ELT_HEAD_PLAC_FORM, + ELT_HEAD_NOTE, + ELT_USER, + LAST_ELT +} Gedcom_elt; -/* Error handling mechanisms */ typedef enum _MECH { IMMED_FAIL, DEFER_FAIL, IGNORE_ERRORS -} MECHANISM; +} Gedcom_err_mech; + +typedef enum _MSG { + ERROR, + WARNING, + MESSAGE +} Gedcom_msg_type; + +typedef void* Gedcom_ctxt; +typedef void* Gedcom_val; + +typedef void + (*Gedcom_msg_handler) + (Gedcom_msg_type type, char *msg); + +typedef Gedcom_ctxt + (*Gedcom_rec_start_cb) + (int level, char *xref, char *tag); +typedef void + (*Gedcom_rec_end_cb) + (Gedcom_ctxt self); + +typedef Gedcom_ctxt + (*Gedcom_elt_start_cb) + (Gedcom_ctxt parent, + int level, char *tag, char *raw_value, Gedcom_val parsed_value); +typedef void + (*Gedcom_elt_end_cb) + (Gedcom_ctxt parent, Gedcom_ctxt self, Gedcom_val parsed_value); + +typedef void + (*Gedcom_def_cb) + (Gedcom_ctxt parent, int level, char *tag, char *raw_value); + +int gedcom_parse_file(char* file_name); +void gedcom_set_debug_level(int level, FILE* trace_output); +void gedcom_set_error_handling(Gedcom_err_mech mechanism); +void gedcom_set_compat_handling(int enable_compat); +void gedcom_set_message_handler(Gedcom_msg_handler func); +void gedcom_set_default_callback(Gedcom_def_cb func); + +void gedcom_subscribe_to_record(Gedcom_rec rec, + Gedcom_rec_start_cb cb_start, + Gedcom_rec_end_cb cb_end); +void gedcom_subscribe_to_element(Gedcom_elt elt, + Gedcom_elt_start_cb cb_start, + Gedcom_elt_end_cb cb_end); -int gedcom_error(char* s, ...); -void gedcom_enable_debug(); -void gedcom_set_error_handling(MECHANISM mechanism); -int gedcom_parse(); -extern int line_no; +#endif /* __EXTERNAL_H */