+#define DEFINE_SUB_DELETEFUNC(STRUCTTYPE) \
+ int SUB_DELETEFUNC(STRUCTTYPE)(struct STRUCTTYPE** obj) \
+ { \
+ int result = 1; \
+ if (obj && *obj) { \
+ CLEANFUNC(STRUCTTYPE)(*obj); \
+ free(*obj); \
+ *obj = NULL; \
+ result = 0; \
+ } \
+ return result; \
+ }
+
+#define DEFINE_MAKELINKFUNC(STRUCTTYPE,XREF_TYPE) \
+ struct xref_value* MAKELINKFUNC(STRUCTTYPE)(struct STRUCTTYPE* obj) \
+ { \
+ struct xref_value* xr = NULL; \
+ if (obj && obj->xrefstr) { \
+ xr = gedcom_get_by_xref(obj->xrefstr); \
+ } \
+ return xr; \
+ }
+