Put common code in gom_internal.h
authorPeter Verthez <Peter.Verthez@advalvas.be>
Sun, 8 Dec 2002 13:11:04 +0000 (13:11 +0000)
committerPeter Verthez <Peter.Verthez@advalvas.be>
Sun, 8 Dec 2002 13:11:04 +0000 (13:11 +0000)
gom/header.c
gom/multimedia.c
gom/note.c
gom/note_sub.c
gom/source.c
gom/source_citation.c

index 69fb4dff4c33bc9a0a1070f96bbdc495a2f72714..c5360012f37b1acc42cc6ec19f7f8b52cbfbcb41 100644 (file)
@@ -61,26 +61,8 @@ STRING_CB(header, head_lang_start, language)
 NULL_CB(header, head_plac_start)
 STRING_CB(header, head_plac_form_start, place_hierarchy)
 NULL_CB(header, head_note_start) /* the end callback will fill the value */
+STRING_END_CB(header, head_note_end, note)
      
-void head_note_end(_ELT_END_PARAMS_)
-{
-  Gom_ctxt ctxt = (Gom_ctxt)self;
-
-  if (! ctxt)
-    NO_CONTEXT;
-  else {
-    struct header *head = SAFE_CTXT_CAST(header, ctxt);
-    if (head) {
-      char *str = GEDCOM_STRING(parsed_value);
-      char *newvalue = strdup(str);
-      if (! newvalue)
-       MEMORY_ERROR;
-      else
-       head->note = newvalue;
-    }
-  }
-}
-
 void header_add_address(Gom_ctxt ctxt, struct address* addr)
 {
   struct header *head = SAFE_CTXT_CAST(header, ctxt);
index 13c8b3eaee6db3953778fcd57bfd7269e01737d1..8ae88023e65c72ddf748d0f47a4ddc4be10b0b14 100644 (file)
@@ -38,28 +38,10 @@ REC_CB(multimedia, obje_start, make_multimedia_record)
 GET_REC_BY_XREF(multimedia, XREF_OBJE, gom_get_multimedia_by_xref)
 STRING_CB(multimedia, obje_form_start, form)
 STRING_CB(multimedia, obje_titl_start, title)     
-NULL_CB(multimedia, obje_blob_start)     
+NULL_CB(multimedia, obje_blob_start)
+STRING_END_CB(multimedia, obje_blob_end, data)
 XREF_CB(multimedia, obje_obje_start, continued, make_multimedia_record)
 
-void obje_blob_end(_ELT_END_PARAMS_)
-{
-  Gom_ctxt ctxt = (Gom_ctxt)self;
-
-  if (! ctxt)
-    NO_CONTEXT;
-  else {
-    struct multimedia *obj = SAFE_CTXT_CAST(multimedia, ctxt);
-    if (obj) {
-      char *str = GEDCOM_STRING(parsed_value);
-      char *newvalue = strdup(str);
-      if (! newvalue)
-       MEMORY_ERROR;
-      else
-       obj->data = newvalue;
-    }
-  }
-}
-
 Gedcom_ctxt obje_blob_cont_start(_ELT_PARAMS_)
 {
   Gom_ctxt ctxt = (Gom_ctxt)parent;
index b3ff3700ef9ea159bf2abdf1cdf5bd97580227a8..41dab5f5697bb3df1e6d639c6ed36f6e5ea0590d 100644 (file)
@@ -46,35 +46,12 @@ Gedcom_ctxt note_start(_REC_PARAMS_)
     note = make_note_record(xr->string);
     xr->object = (Gedcom_ctxt) note;
   }
-  if (note) {
-    note->text = strdup(GEDCOM_STRING(parsed_value));
-    if (! note->text)
-      MEMORY_ERROR;
-    else
-      result = MAKE_GOM_CTXT(rec, note, xr->object);
-  }
+  if (note)
+    result = MAKE_GOM_CTXT(rec, note, xr->object);
   return (Gedcom_ctxt)result;
 }
 
-void note_end(_REC_END_PARAMS_)
-{
-  Gom_ctxt ctxt = (Gom_ctxt)self;
-
-  if (! ctxt)
-    NO_CONTEXT;
-  else {
-    struct note *note = SAFE_CTXT_CAST(note, ctxt);
-    if (note) {
-      char *str = GEDCOM_STRING(parsed_value);
-      char *newvalue = strdup(str);
-      if (! newvalue)
-       MEMORY_ERROR;
-      else
-       note->text = newvalue;
-    }
-  }
-}
-
+STRING_END_REC_CB(note, note_end, text)
 GET_REC_BY_XREF(note, XREF_NOTE, gom_get_note_by_xref)
      
 Gedcom_ctxt sub_cont_conc_start(_ELT_PARAMS_)
index 221dcfcf2a2f7b14ed41f8f79de976a5b389932a..662cf9fd54c80db5124e0688e8eb845fa10933bf 100644 (file)
@@ -113,25 +113,8 @@ Gedcom_ctxt sub_note_start(_ELT_PARAMS_)
   return (Gedcom_ctxt)result;
 }
 
-void sub_note_end(_ELT_END_PARAMS_)
-{
-  Gom_ctxt ctxt = (Gom_ctxt)self;
-
-  if (! ctxt)
-    NO_CONTEXT;
-  else {
-    struct note_sub *note = SAFE_CTXT_CAST(note_sub, ctxt);
-    if (note) {
-      char *str = GEDCOM_STRING(parsed_value);
-      char *newvalue = strdup(str);
-      if (! newvalue)
-       MEMORY_ERROR;
-      else
-       note->text = newvalue;
-    }
-  }
-}
-
+STRING_END_CB(note_sub, sub_note_end, text)
+     
 void note_sub_subscribe()
 {
   gedcom_subscribe_to_element(ELT_SUB_NOTE, sub_note_start, sub_note_end);
index 7ecb9777cf402834596d730e3ac679e5a307b0b3..57520eda9b1fc6443d38be5c39a2cd5f06169aa9 100644 (file)
@@ -43,88 +43,16 @@ GET_REC_BY_XREF(source, XREF_SOUR, gom_get_source_by_xref)
 NULL_CB(source, sour_data_start)
 STRING_CB(source, sour_data_agnc_start, data.agency)
 NULL_CB(source, sour_auth_start)  /* value set by end callback */
+STRING_END_CB(source, sour_auth_end, author)
 NULL_CB(source, sour_titl_start)  /* value set by end callback */
+STRING_END_CB(source, sour_titl_end, title)
 STRING_CB(source, sour_abbr_start, abbreviation)
 NULL_CB(source, sour_publ_start)  /* value set by end callback */
+STRING_END_CB(source, sour_publ_end, publication)
 NULL_CB(source, sour_text_start)  /* value set by end callback */
+STRING_END_CB(source, sour_text_end, text)
 XREF_CB(source, sour_repo_start, repository.link, make_repository_record)
 
-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;
-    }
-  }
-}
-
 void source_subscribe()
 {
   gedcom_subscribe_to_record(REC_SOUR, sour_start, def_rec_end);
index ef03835b47075e031df5f5024e2d7cb7e12dab9d..8aa6b51687a1311ad2bdaf8b9ff82acce69aeb6e 100644 (file)
@@ -113,6 +113,7 @@ void sub_citation_end(_ELT_END_PARAMS_)
          cit->description = newvalue;
       }
     }
+    destroy_gom_ctxt(ctxt);
   }
 }
 
@@ -136,33 +137,13 @@ Gedcom_ctxt sub_cit_text_start(_ELT_PARAMS_)
   return (Gedcom_ctxt)result;
 }
 
-void sub_cit_text_end(_ELT_END_PARAMS_)
-{
-  Gom_ctxt ctxt = (Gom_ctxt)self;
-
-  if (! ctxt)
-    NO_CONTEXT;
-  else {
-    if (GEDCOM_IS_STRING(parsed_value)) {
-      struct text *t = SAFE_CTXT_CAST(text, ctxt);
-      if (t) {
-       char *str = GEDCOM_STRING(parsed_value);
-       char *newvalue = strdup(str);
-       if (! newvalue)
-         MEMORY_ERROR;
-       else
-         t->text = newvalue;
-      }
-    }
-  }
-}
-
 STRING_CB(source_citation, sub_cit_page_start, page)
 STRING_CB(source_citation, sub_cit_even_start, event)
 STRING_CB(source_citation, sub_cit_even_role_start, role)
 NULL_CB(source_citation, sub_cit_data_start)
 DATE_CB(source_citation, sub_cit_data_date_start, date)
 STRING_CB(source_citation, sub_cit_quay_start, quality)
+STRING_END_CB(text, sub_cit_text_end, text)
      
 void citation_subscribe()
 {