+void sour_auth_end(_ELT_END_PARAMS_)
+{
+ Gom_ctxt ctxt = (Gom_ctxt)self;
+
+ if (! ctxt)
+ NO_CONTEXT;
+ else {
+ struct source *sour = SAFE_CTXT_CAST(source, ctxt);
+ if (sour) {
+ char *str = GEDCOM_STRING(parsed_value);
+ char *newvalue = strdup(str);
+ if (! newvalue)
+ MEMORY_ERROR;
+ else
+ sour->author = newvalue;
+ }
+ }
+}
+
+void sour_titl_end(_ELT_END_PARAMS_)
+{
+ Gom_ctxt ctxt = (Gom_ctxt)self;
+
+ if (! ctxt)
+ NO_CONTEXT;
+ else {
+ struct source *sour = SAFE_CTXT_CAST(source, ctxt);
+ if (sour) {
+ char *str = GEDCOM_STRING(parsed_value);
+ char *newvalue = strdup(str);
+ if (! newvalue)
+ MEMORY_ERROR;
+ else
+ sour->title = newvalue;
+ }
+ }
+}
+
+void sour_publ_end(_ELT_END_PARAMS_)
+{
+ Gom_ctxt ctxt = (Gom_ctxt)self;
+
+ if (! ctxt)
+ NO_CONTEXT;
+ else {
+ struct source *sour = SAFE_CTXT_CAST(source, ctxt);
+ if (sour) {
+ char *str = GEDCOM_STRING(parsed_value);
+ char *newvalue = strdup(str);
+ if (! newvalue)
+ MEMORY_ERROR;
+ else
+ sour->publication = newvalue;
+ }
+ }
+}
+
+void sour_text_end(_ELT_END_PARAMS_)
+{
+ Gom_ctxt ctxt = (Gom_ctxt)self;
+
+ if (! ctxt)
+ NO_CONTEXT;
+ else {
+ struct source *sour = SAFE_CTXT_CAST(source, ctxt);
+ if (sour) {
+ char *str = GEDCOM_STRING(parsed_value);
+ char *newvalue = strdup(str);
+ if (! newvalue)
+ MEMORY_ERROR;
+ else
+ sour->text = newvalue;
+ }
+ }
+}
+