-STRING_CB(personal_name, sub_name_npfx_start, prefix)
-STRING_CB(personal_name, sub_name_givn_start, given)
-STRING_CB(personal_name, sub_name_nick_start, nickname)
-STRING_CB(personal_name, sub_name_spfx_start, surname_prefix)
-STRING_CB(personal_name, sub_name_surn_start, surname)
-STRING_CB(personal_name, sub_name_nsfx_start, suffix)
-
-void name_add_citation(Gom_ctxt ctxt, struct source_citation* cit)
-{
- struct personal_name *name = SAFE_CTXT_CAST(personal_name, ctxt);
- if (name)
- LINK_CHAIN_ELT(source_citation, name->citation, cit);
-}
-
-void name_add_note(Gom_ctxt ctxt, struct note_sub* note)
-{
- struct personal_name *name = SAFE_CTXT_CAST(personal_name, ctxt);
- if (name)
- LINK_CHAIN_ELT(note_sub, name->note, note);
-}
-
-void name_add_user_data(Gom_ctxt ctxt, struct user_data* data)
-{
- struct personal_name *obj = SAFE_CTXT_CAST(personal_name, ctxt);
- if (obj)
- LINK_CHAIN_ELT(user_data, obj->extra, data);
-}
+DEFINE_SUB_MAKEFUNC(personal_name)
+DEFINE_SUB_ADDFUNC(personal_name)
+DEFINE_SUB_FINDFUNC(personal_name)
+DEFINE_SUB_REMOVEFUNC(personal_name)
+DEFINE_SUB_MOVEFUNC(personal_name)
+
+DEFINE_STRING_CB(personal_name, sub_name_npfx_start, prefix)
+DEFINE_STRING_CB(personal_name, sub_name_givn_start, given)
+DEFINE_STRING_CB(personal_name, sub_name_nick_start, nickname)
+DEFINE_STRING_CB(personal_name, sub_name_spfx_start, surname_prefix)
+DEFINE_STRING_CB(personal_name, sub_name_surn_start, surname)
+DEFINE_STRING_CB(personal_name, sub_name_nsfx_start, suffix)
+
+DEFINE_ADDFUNC2(personal_name, source_citation, citation)
+DEFINE_ADDFUNC2(personal_name, note_sub, note)
+DEFINE_ADDFUNC2(personal_name, user_data, extra)