X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom.h;h=afaec3b121b5dc715bfe6204a36a792312b0974b;hb=bbbad21718d5b8670fa5095f23ea502d558695c8;hp=987a382d0676a0039245e0836bd2b40ab39f616f;hpb=a54348309c92f4d7a2dd66b4055122a7be19ca28;p=gedcom-parse.git diff --git a/gedcom.h b/gedcom.h index 987a382..afaec3b 100644 --- a/gedcom.h +++ b/gedcom.h @@ -1,39 +1,100 @@ -/* $Id$ */ -/* $Name$ */ +#ifndef __EXTERNAL_H +#define __EXTERNAL_H -#ifndef __GEDCOM_H -#define __GEDCOM_H -#include -#include #include -#include -#include -#define MAXGEDCLEVEL 99 -#define MAXGEDCLINELEN 256 -#define MAXGEDCTAGLEN 31 -#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); -int gedcom_error(char* s, ...); -int gedcom_warning(char* s, ...); -int gedcom_message(char* s, ...); -int gedcom_debug_print(char* s, ...); -void gedcom_set_debug_level(int level); -void gedcom_set_error_handling(MECHANISM mechanism); -void gedcom_set_compat_handling(int enable_compat); +typedef void + (*Gedcom_def_cb) + (Gedcom_ctxt parent, int level, char *tag, char *raw_value); -int gedcom_parse(); +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); -int gedcom_lex(); +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); -extern int line_no; -#endif /* __GEDCOM_H */ +#endif /* __EXTERNAL_H */