#include "encoding.h"
#include "interface.h"
#include "date.h"
+#include "age.h"
#include "xref.h"
#include "compat.h"
int count_level = 0;
int fail = 0;
-int compat_enabled = 1;
int gedcom_high_level_debug = 0;
-int compatibility = 0;
Gedcom_err_mech error_mechanism = IMMED_FAIL;
Gedcom_val_struct val1;
Gedcom_val_struct val2;
char line_item_buf[MAXGEDCLINELEN * UTF_FACTOR + 1];
char *line_item_buf_ptr;
-enum _COMPAT {
- C_FTREE = 0x01,
- C_LIFELINES = 0x02
-};
-
/* These are defined at the bottom of the file */
void push_countarray();
void set_parenttag(char* tag);
void pop_countarray();
int count_tag(int tag);
int check_occurrence(int tag);
-void set_compatibility(char* program);
-int compat_mode(int flags);
#define CLEAR_BUFFER(BUF) \
memset(BUF, 0, sizeof(BUF));
asso_sect : OPEN DELIM TAG_ASSO mand_pointer
{ struct xref_value *xr = gedcom_parse_xref($4, XREF_USED,
- XREF_INDI);
+ XREF_ANY);
if (xr == NULL) HANDLE_ERROR;
$<ctxt>$ = start_element(ELT_SUB_ASSO,
PARENT, $1, $3, $4,
}
;
event_detail_age_sect : OPEN DELIM TAG_AGE mand_line_item
- { $<ctxt>$
+ { struct age_value age = gedcom_parse_age($4);
+ $<ctxt>$
= start_element(ELT_SUB_EVT_AGE,
PARENT, $1, $3, $4,
- GEDCOM_MAKE_STRING(val1, $4));
+ GEDCOM_MAKE_AGE(val1, age));
START(AGE, $<ctxt>$)
}
no_std_subs
;
fam_even_age_sect : OPEN DELIM TAG_AGE mand_line_item
- { $<ctxt>$ = start_element(ELT_SUB_FAM_EVT_AGE,
+ { struct age_value age = gedcom_parse_age($4);
+ $<ctxt>$ = start_element(ELT_SUB_FAM_EVT_AGE,
PARENT, $1, $3, $4,
- GEDCOM_MAKE_STRING(val1, $4));
+ GEDCOM_MAKE_AGE(val1, age));
START(AGE, $<ctxt>$)
}
no_std_subs
{
error_mechanism = mechanism;
}
-
-/* Compatibility handling */
-
-void gedcom_set_compat_handling(int enable_compat)
-{
- compat_enabled = enable_compat;
-}
-
-void set_compatibility(char* program)
-{
- if (compat_enabled) {
- if (! strncmp(program, "ftree", 6)) {
- gedcom_warning(_("Enabling compatibility with 'ftree'"));
- compatibility = C_FTREE;
- }
- else if (! strncmp(program, "LIFELINES", 9)) {
- /* Matches "LIFELINES 3.0.2" */
- gedcom_warning(_("Enabling compatibility with 'Lifelines'"));
- compatibility = C_LIFELINES;
- compat_at = 1;
- }
- else {
- compatibility = 0;
- }
- }
-}
-
-int compat_mode(int compat_flags)
-{
- return (compat_flags & compatibility);
-}
-