-void citation_cleanup(struct source_citation* cit);
-void citation_add_note(Gom_ctxt ctxt, struct note_sub* note);
-void citation_add_mm_link(Gom_ctxt ctxt, struct multimedia_link* mm);
-void citation_add_to_desc(NL_TYPE type, Gom_ctxt ctxt, char* str);
-void citation_add_to_text(NL_TYPE type, Gom_ctxt ctxt, char* str);
-void citation_add_user_data(Gom_ctxt ctxt, struct user_data* data);
+int write_citations(Gedcom_write_hndl hndl, int parent,
+ struct source_citation* cit);
+
+DECLARE_SUB_MAKEFUNC(source_citation);
+
+DECLARE_UNREFALLFUNC(source_citation);
+DECLARE_CLEANFUNC(source_citation);
+DECLARE_ADDFUNC2(source_citation, note_sub);
+DECLARE_ADDFUNC2(source_citation, multimedia_link);
+DECLARE_ADDFUNC2(source_citation, user_data);