#include "gedcom.h"
-Gedcom_ctxt start_record(Gedcom_rec rec, int level, char *xref, char *tag);
+Gedcom_ctxt start_record(Gedcom_rec rec,
+ int level, Gedcom_val xref, char *tag);
void end_record(Gedcom_rec rec, Gedcom_ctxt self);
Gedcom_ctxt start_element(Gedcom_elt elt, Gedcom_ctxt parent,
void end_element(Gedcom_elt elt, Gedcom_ctxt parent, Gedcom_ctxt self,
Gedcom_val parsed_value);
+extern Gedcom_val_struct val;
+
+#define GEDCOM_MAKE(VALUE, TYPE, MEMBER) \
+ (val.type = TYPE, val.value.MEMBER = VALUE, &val)
+
+#define GEDCOM_MAKE_NULL() \
+ GEDCOM_MAKE(NULL, GV_NULL, string_val)
+
+#define GEDCOM_MAKE_STRING(STRING) \
+ GEDCOM_MAKE(STRING, GV_CHAR_PTR, string_val)
+
+#define GEDCOM_MAKE_NULL_OR_STRING(STRING) \
+ (STRING == NULL ? \
+ GEDCOM_MAKE_NULL() : \
+ GEDCOM_MAKE_STRING(STRING)) \
+
+#define GEDCOM_MAKE_DATE(DATE) \
+ GEDCOM_MAKE(DATE, GV_DATE_VALUE, date_val)
+
#endif /* __INTERFACE_H */