+/********************************************************************/
+/* C_HEAD_TIME */
+/********************************************************************/
+
+void compat_save_head_date_context(Gedcom_ctxt parent)
+{
+ compat_state[C_HEAD_TIME].vp = parent;
+}
+
+Gedcom_ctxt compat_generate_head_time_start(int level, struct tag_struct ts,
+ char* value)
+{
+ if (compat_options & COMPAT_ALLOW_OUT_OF_CONTEXT) {
+ Gedcom_ctxt parent = compat_state[C_HEAD_TIME].vp;
+ if (!value)
+ value = "-";
+ if (parent)
+ return start_element(ELT_HEAD_DATE_TIME,
+ parent, level, ts, value,
+ GEDCOM_MAKE_STRING(val1, value));
+ else
+ return NULL;
+ }
+ else {
+ gedcom_warning(_("Header change time '%s' lost in the compatibility (out of context)"),
+ value);
+ return NULL;
+ }
+}
+
+void compat_generate_head_time_end(Gedcom_ctxt self)
+{
+ if (compat_options & COMPAT_ALLOW_OUT_OF_CONTEXT) {
+ Gedcom_ctxt parent = compat_state[C_HEAD_TIME].vp;
+ if (parent)
+ end_element(ELT_HEAD_DATE_TIME,
+ parent, self, GEDCOM_MAKE_NULL(val1));
+ }
+}
+
+/********************************************************************/
+/* C_SUBM_CTRY */
+/********************************************************************/
+
+void compat_save_ctry_parent_context(Gedcom_ctxt parent)
+{
+ compat_state[C_SUBM_CTRY].vp = parent;
+}
+
+Gedcom_ctxt compat_generate_addr_ctry_start(int level, struct tag_struct ts,
+ char* value)
+{
+ if (compat_options & COMPAT_ALLOW_OUT_OF_CONTEXT) {
+ Gedcom_ctxt parent = compat_state[C_SUBM_CTRY].vp;
+ if (!value)
+ value = "-";
+ if (parent)
+ return start_element(ELT_SUB_ADDR_CTRY,
+ parent, level, ts, value,
+ GEDCOM_MAKE_STRING(val1, value));
+ else
+ return NULL;
+ }
+ else {
+ gedcom_warning(_("Country '%s' lost in the compatibility (out of context)"), value);
+ return NULL;
+ }
+}
+
+void compat_generate_addr_ctry_end(Gedcom_ctxt self)
+{
+ if (compat_options & COMPAT_ALLOW_OUT_OF_CONTEXT) {
+ Gedcom_ctxt parent = compat_state[C_SUBM_CTRY].vp;
+ if (parent)
+ end_element(ELT_SUB_ADDR_CTRY,
+ parent, self, GEDCOM_MAKE_NULL(val1));
+ }
+}
+
+void compat_free_ctry_parent_context()
+{
+ compat_state[C_SUBM_CTRY].vp = NULL;
+}
+