/* Header for interface.c
- Copyright (C) 2001 The Genes Development Team
+ Copyright (C) 2001, 2002 The Genes Development Team
This file is part of the Gedcom parser library.
Contributed by Peter Verthez <Peter.Verthez@advalvas.be>, 2001.
#ifndef __INTERFACE_H
#define __INTERFACE_H
+#include "gedcom_internal.h"
#include "gedcom.h"
-Gedcom_ctxt start_record(Gedcom_rec rec, int level, char *xref, char *tag);
-void end_record(Gedcom_rec rec, Gedcom_ctxt self);
+Gedcom_ctxt start_record(Gedcom_rec rec,
+ int level, Gedcom_val xref, struct tag_struct tag,
+ char *raw_value, Gedcom_val parsed_value);
+void end_record(Gedcom_rec rec, Gedcom_ctxt self,
+ Gedcom_val parsed_value);
Gedcom_ctxt start_element(Gedcom_elt elt, Gedcom_ctxt parent,
- int level, char *tag, char *raw_value,
+ int level, struct tag_struct tag, char *raw_value,
Gedcom_val parsed_value);
void end_element(Gedcom_elt elt, Gedcom_ctxt parent, Gedcom_ctxt self,
Gedcom_val parsed_value);
-extern Gedcom_val_struct val;
+extern Gedcom_val_struct val1;
+extern Gedcom_val_struct val2;
-#define GEDCOM_MAKE(VALUE, TYPE, MEMBER) \
- (val.type = TYPE, val.value.MEMBER = VALUE, &val)
+#define GEDCOM_MAKE(VAR, VALUE, TYPE, MEMBER) \
+ (VAR.type = TYPE, VAR.value.MEMBER = VALUE, &VAR)
-#define GEDCOM_MAKE_STRING(STRING) \
- GEDCOM_MAKE(STRING, GV_CHAR_PTR, string_val)
+#define GEDCOM_MAKE_NULL(VAR) \
+ GEDCOM_MAKE(VAR, NULL, GV_NULL, string_val)
-#define GEDCOM_MAKE_DATE(DATE) \
- GEDCOM_MAKE(DATE, GV_DATE_VALUE, date_val)
+#define GEDCOM_MAKE_STRING(VAR, STRING) \
+ GEDCOM_MAKE(VAR, STRING, GV_CHAR_PTR, string_val)
+
+#define GEDCOM_MAKE_NULL_OR_STRING(VAR, STRING) \
+ (STRING == NULL ? \
+ GEDCOM_MAKE_NULL(VAR) : \
+ GEDCOM_MAKE_STRING(VAR, STRING))
#endif /* __INTERFACE_H */