X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom.h;h=afaec3b121b5dc715bfe6204a36a792312b0974b;hb=378e28008bafd5b6a1a73bb3c37761fc08520b10;hp=995af0cc00e98f62b6ea5c4544e7cf63ea046b14;hpb=f9b06b95eb141eca5d4e9c4e1f298dfc356adf22;p=gedcom-parse.git diff --git a/gedcom.h b/gedcom.h index 995af0c..afaec3b 100644 --- a/gedcom.h +++ b/gedcom.h @@ -1,52 +1,100 @@ -/* This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - - (C) 2001 by The Genes Development Team - Original author: Peter Verthez (Peter.Verthez@advalvas.be) -*/ - -/* $Id$ */ -/* $Name$ */ - -#ifndef __GEDCOM_H -#define __GEDCOM_H -#include -#include +#ifndef __EXTERNAL_H +#define __EXTERNAL_H + #include -#include -#include -#ifdef DMALLOC -#include -#endif - -#define MAXGEDCLEVEL 99 -#define MAXGEDCLINELEN 255 -#define MAXGEDCTAGLEN 31 -#define MAXSTDTAGLEN 4 -#define MAXGEDCPTRLEN 22 -#define GEDCOMTAGOFFSET 257 - -/* Error handling mechanisms */ + +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; + 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 */