Changes due to name change.
[gedcom-parse.git] / include / gedcom.h
1 /*  This program is free software; you can redistribute it and/or modify  *
2  *  it under the terms of the GNU General Public License as published by  *
3  *  the Free Software Foundation; either version 2 of the License, or     *
4  *  (at your option) any later version.                                   *
5
6  (C) 2001 by The Genes Development Team
7  Original author: Peter Verthez (Peter.Verthez@advalvas.be)
8 */
9
10 /* $Id$ */
11 /* $Name$ */
12
13 #ifndef __GEDCOM_H
14 #define __GEDCOM_H
15
16 #include <stdio.h>
17
18 typedef enum _REC {
19   REC_HEAD,
20   REC_FAM,
21   REC_INDI,
22   REC_OBJE,
23   REC_NOTE,
24   REC_REPO,
25   REC_SOUR,
26   REC_SUBN,
27   REC_SUBM,
28   REC_USER,
29   LAST_REC
30 } Gedcom_rec;
31
32 typedef enum _ELT {
33   ELT_HEAD_SOUR,
34   ELT_HEAD_SOUR_VERS,
35   ELT_HEAD_SOUR_NAME,
36   ELT_HEAD_SOUR_CORP,
37   ELT_HEAD_SOUR_DATA,
38   ELT_HEAD_SOUR_DATA_DATE,
39   ELT_HEAD_SOUR_DATA_COPR,
40   ELT_HEAD_DEST,
41   ELT_HEAD_DATE,
42   ELT_HEAD_DATE_TIME,
43   ELT_HEAD_SUBM,
44   ELT_HEAD_SUBN,
45   ELT_HEAD_FILE,
46   ELT_HEAD_COPR,
47   ELT_HEAD_GEDC,
48   ELT_HEAD_GEDC_VERS,
49   ELT_HEAD_GEDC_FORM,
50   ELT_HEAD_CHAR,
51   ELT_HEAD_CHAR_VERS,
52   ELT_HEAD_LANG,
53   ELT_HEAD_PLAC,
54   ELT_HEAD_PLAC_FORM,
55   ELT_HEAD_NOTE,
56   ELT_USER,
57   LAST_ELT
58 } Gedcom_elt;
59
60 typedef enum _MECH {
61   IMMED_FAIL,
62   DEFER_FAIL,
63   IGNORE_ERRORS
64 } Gedcom_err_mech;
65
66 typedef enum _MSG {
67   ERROR,
68   WARNING,
69   MESSAGE
70 } Gedcom_msg_type;
71
72 typedef void* Gedcom_ctxt;
73 typedef void* Gedcom_val;
74
75 typedef void
76         (*Gedcom_msg_handler)
77         (Gedcom_msg_type type, char *msg);
78
79 typedef Gedcom_ctxt
80         (*Gedcom_rec_start_cb)
81         (int level, char *xref, char *tag);
82 typedef void
83         (*Gedcom_rec_end_cb)
84         (Gedcom_ctxt self);
85
86 typedef Gedcom_ctxt
87         (*Gedcom_elt_start_cb)
88         (Gedcom_ctxt parent,
89          int level, char *tag, char *raw_value, Gedcom_val parsed_value);
90 typedef void
91         (*Gedcom_elt_end_cb)
92         (Gedcom_ctxt parent, Gedcom_ctxt self, Gedcom_val parsed_value);
93
94 typedef void
95         (*Gedcom_def_cb)
96         (Gedcom_ctxt parent, int level, char *tag, char *raw_value);
97
98 int     gedcom_parse_file(char* file_name);
99 void    gedcom_set_debug_level(int level, FILE* trace_output);
100 void    gedcom_set_error_handling(Gedcom_err_mech mechanism);
101 void    gedcom_set_compat_handling(int enable_compat);
102 void    gedcom_set_message_handler(Gedcom_msg_handler func);
103 void    gedcom_set_default_callback(Gedcom_def_cb func);
104
105 void    gedcom_subscribe_to_record(Gedcom_rec rec,
106                                    Gedcom_rec_start_cb cb_start,
107                                    Gedcom_rec_end_cb cb_end);
108 void    gedcom_subscribe_to_element(Gedcom_elt elt,
109                                     Gedcom_elt_start_cb cb_start,
110                                     Gedcom_elt_end_cb cb_end);
111
112 #endif /* __GEDCOM_H */