#include "buffer.h"
#include "gedcom.h"
+#include "gedcom_internal.h"
typedef enum _COMPAT_RULES {
C_NO_SUBMITTER,
C_NO_SLGC_FAMC,
C_SUBM_COMM,
C_DOUBLE_DATES_4,
+ C_CONC_NEEDS_SPACE,
+ C_NO_GEDC_FORM,
+ C_NOTE_NOTE,
+ C_TAB_CHARACTER,
+ C_SUBM_CTRY,
+ C_NOTE_TOO_LONG,
+ C_NOTE_CONC_SOUR,
+ C_NONSTD_SOUR_TAGS,
C_NR_OF_RULES
} Compat_rule;
+extern struct safe_buffer compat_buffer;
+
void set_compatibility_program(const char* program);
void set_compatibility_version(const char* version);
void compute_compatibility();
int compat_mode(Compat_rule rule);
+void compat_close();
+/* C_NO_SUBMITTER */
void compat_generate_submitter_link(Gedcom_ctxt parent);
void compat_generate_submitter();
+/* C_NO_GEDC, C_NO_GEDC_FORM */
void compat_generate_gedcom(Gedcom_ctxt parent);
+void compat_generate_gedcom_form(Gedcom_ctxt parent);
+/* C_NO_CHAR */
int compat_generate_char(Gedcom_ctxt parent);
+/* C_HEAD_TIME */
+void compat_save_head_date_context(Gedcom_ctxt parent);
+Gedcom_ctxt compat_generate_head_time_start(int level, struct tag_struct ts,
+ char* value);
+void compat_generate_head_time_end(Gedcom_ctxt self);
+
+/* C_SUBM_CTRY */
+void compat_save_ctry_parent_context(Gedcom_ctxt parent);
+Gedcom_ctxt compat_generate_addr_ctry_start(int level, struct tag_struct ts,
+ char* value);
+void compat_generate_addr_ctry_end(Gedcom_ctxt self);
+void compat_free_ctry_parent_context();
+
+/* C_INDI_ATTR */
Gedcom_ctxt compat_generate_resi_start(Gedcom_ctxt parent);
void compat_generate_resi_end(Gedcom_ctxt parent, Gedcom_ctxt self);
+/* C_551_TAGS */
int compat_check_551_tag(const char* tag, struct safe_buffer* b);
+/* C_NO_SLGC_FAMC */
void compat_generate_slgc_famc_link(Gedcom_ctxt parent);
void compat_generate_slgc_famc_fam();
+/* C_SUBM_COMM */
int compat_check_subm_comm(const char* tag, const char* parent_tag,
struct safe_buffer* b);
void compat_close_subm_comm();
int compat_check_subm_comm_cont(const char* tag);
-Gedcom_ctxt compat_subm_comm_cont_start(Gedcom_ctxt parent, const char* str);
+Gedcom_ctxt compat_subm_comm_cont_start(Gedcom_ctxt parent, char* str);
void compat_subm_comm_cont_end(Gedcom_ctxt parent, Gedcom_ctxt self);
+/* C_DOUBLE_DATES_4 */
+void compat_date_start();
+int compat_date_check(struct date_value* dv, const char** curr_line);
+
+int compat_double_date_check(char* year2);
+
+/* C_NOTE_TOO_LONG */
+int compat_long_line(int level, int tag);
+char* compat_long_line_get_prefix(char* str);
+void compat_long_line_finish(Gedcom_ctxt parent, int level);
+
+/* C_NOTE_CONC_SOUR */
+Gedcom_ctxt compat_generate_note_sour_start(Gedcom_ctxt parent,
+ int level, struct tag_struct ts,
+ char* pointer);
+void compat_generate_note_sour_end(Gedcom_ctxt self);
+
+/* C_NONSTD_SOUR_TAGS */
+int compat_check_sour_tag(const char* tag, struct safe_buffer* b);
+Gedcom_ctxt compat_generate_nonstd_sour_start(Gedcom_ctxt parent, int level,
+ struct tag_struct ts,
+ char* value,
+ struct safe_buffer* b);
+void compat_generate_nonstd_sour_end(Gedcom_ctxt parent, Gedcom_ctxt self);
+int compat_generate_nonstd_sour_state();
+
#endif /* __COMPAT_H */