Checked in external.h as gedcom.h (forgot to check in before...)
[gedcom-parse.git] / gedcom.h
1 #ifndef __EXTERNAL_H
2 #define __EXTERNAL_H
3
4 #include <stdio.h>
5
6 typedef enum _REC {
7   REC_HEAD,
8   REC_FAM,
9   REC_INDI,
10   REC_OBJE,
11   REC_NOTE,
12   REC_REPO,
13   REC_SOUR,
14   REC_SUBN,
15   REC_SUBM,
16   REC_USER,
17   LAST_REC
18 } Gedcom_rec;
19
20 typedef enum _ELT {
21   ELT_HEAD_SOUR,
22   ELT_HEAD_SOUR_VERS,
23   ELT_HEAD_SOUR_NAME,
24   ELT_HEAD_SOUR_CORP,
25   ELT_HEAD_SOUR_DATA,
26   ELT_HEAD_SOUR_DATA_DATE,
27   ELT_HEAD_SOUR_DATA_COPR,
28   ELT_HEAD_DEST,
29   ELT_HEAD_DATE,
30   ELT_HEAD_DATE_TIME,
31   ELT_HEAD_SUBM,
32   ELT_HEAD_SUBN,
33   ELT_HEAD_FILE,
34   ELT_HEAD_COPR,
35   ELT_HEAD_GEDC,
36   ELT_HEAD_GEDC_VERS,
37   ELT_HEAD_GEDC_FORM,
38   ELT_HEAD_CHAR,
39   ELT_HEAD_CHAR_VERS,
40   ELT_HEAD_LANG,
41   ELT_HEAD_PLAC,
42   ELT_HEAD_PLAC_FORM,
43   ELT_HEAD_NOTE,
44   ELT_USER,
45   LAST_ELT
46 } Gedcom_elt;
47
48 typedef enum _MECH {
49   IMMED_FAIL,
50   DEFER_FAIL,
51   IGNORE_ERRORS
52 } Gedcom_err_mech;
53
54 typedef enum _MSG {
55   ERROR,
56   WARNING,
57   MESSAGE
58 } Gedcom_msg_type;
59
60 typedef void* Gedcom_ctxt;
61 typedef void* Gedcom_val;
62
63 typedef void
64         (*Gedcom_msg_handler)
65         (Gedcom_msg_type type, char *msg);
66
67 typedef Gedcom_ctxt
68         (*Gedcom_rec_start_cb)
69         (int level, char *xref, char *tag);
70 typedef void
71         (*Gedcom_rec_end_cb)
72         (Gedcom_ctxt self);
73
74 typedef Gedcom_ctxt
75         (*Gedcom_elt_start_cb)
76         (Gedcom_ctxt parent,
77          int level, char *tag, char *raw_value, Gedcom_val parsed_value);
78 typedef void
79         (*Gedcom_elt_end_cb)
80         (Gedcom_ctxt parent, Gedcom_ctxt self, Gedcom_val parsed_value);
81
82 typedef void
83         (*Gedcom_def_cb)
84         (Gedcom_ctxt parent, int level, char *tag, char *raw_value);
85
86 int     gedcom_parse_file(char* file_name);
87 void    gedcom_set_debug_level(int level, FILE* trace_output);
88 void    gedcom_set_error_handling(Gedcom_err_mech mechanism);
89 void    gedcom_set_compat_handling(int enable_compat);
90 void    gedcom_set_message_handler(Gedcom_msg_handler func);
91 void    gedcom_set_default_callback(Gedcom_def_cb func);
92
93 void    gedcom_subscribe_to_record(Gedcom_rec rec,
94                                    Gedcom_rec_start_cb cb_start,
95                                    Gedcom_rec_end_cb cb_end);
96 void    gedcom_subscribe_to_element(Gedcom_elt elt,
97                                     Gedcom_elt_start_cb cb_start,
98                                     Gedcom_elt_end_cb cb_end);
99
100 #endif /* __EXTERNAL_H */