<hr width="100%" size="2">
<h2><a name="Record_identifiers"></a>Record identifiers</h2>
The following table describes the identifiers to be used in the record
- callbacks. The last columns gives the <a href="#Gedcom_val_types"><code>
+ callbacks. The last columns give the <a href="#Gedcom_val_types"><code>
Gedcom_val</code> type</a> of the <code>xref</code> and <code>
-val</code><code> </code> arguments in the header start callback.<br>
+val</code><code> </code> arguments in the record start and end callback.<br>
<br>
<table width="100%" border="1" cellspacing="2" cellpadding="2">
<td valign="top" align="center"><b>Possible<br>
<code>xref</code> types</b><br>
</td>
- <td valign="top" align="center"><b>Possible<br>
- <code>val</code> types<br>
- </b><br>
- </td>
+ <td valign="top" align="center"><b>Possible start<br>
+ <code>val</code> types</b><br>
+ </td><td valign="top" align="center"><b>Possible end<br>
+ <code>val</code> types</b><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>REC_HEAD</code><br>
<td valign="top"><code>NULL</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>REC_FAM</code><br>
<td valign="top"><code>XREF_PTR(FAM)</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>REC_INDI</code><br>
<td valign="top"><code>XREF_PTR(INDI)</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>REC_OBJE</code><br>
<td valign="top"><code>XREF_PTR(OBJE)</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>REC_NOTE</code><br>
<td valign="top"><code>XREF_PTR(NOTE)</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>STRING</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>REC_REPO</code><br>
<td valign="top"><code>XREF_PTR(REPO)</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>REC_SOUR</code><br>
<td valign="top"><code>XREF_PTR(SOUR)</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>REC_SUBN</code><br>
<td valign="top"><code>XREF_PTR(SUBN)</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>REC_SUBM</code><br>
<td valign="top"><code>XREF_PTR(SUBM</code>)<br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>REC_USER</code><br>
<td valign="top"><code>NULL<br>
STRING<br>
XREF_PTR(USER)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
</tbody>
<hr width="100%" size="2">
<h2><a name="Element_identifiers"></a>Element identifiers</h2>
The following table describes the identifiers to be used in the element
- callbacks. The last column gives the <a href="file:///home/verthezp/src/external/gedcom-parse/doc/interface.html#Gedcom_val_types"><code>
+ callbacks. The last columns give the <a href="file:///home/verthezp/src/external/gedcom-parse/doc/interface.html#Gedcom_val_types"><code>
Gedcom_val</code> type</a> of the <code>val</code> argument in the
-element start callback.<br>
+element start and end callback.<br>
<br>
<table cellpadding="2" cellspacing="2" border="1" width="100%">
</td>
<td valign="top" align="center"><b>Used within</b><br>
</td>
- <td valign="top" align="center"><b>Possible<br>
+ <td valign="top" align="center"><b>Possible start<br>
<code>val</code> types<br>
</b><br>
- </td>
+ </td><td valign="top" align="center"><b>Possible end<br>
+ <code>val</code> types</b><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_SOUR</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_SOUR_VERS</code><br>
<td valign="top"><code>ELT_HEAD_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_SOUR_NAME</code><br>
<td valign="top"><code>ELT_HEAD_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_SOUR_CORP</code><br>
<td valign="top"><code>ELT_HEAD_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
<td valign="top"><code>ELT_HEAD_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_SOUR_DATA_DATE</code><br>
<td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
</td>
<td valign="top"><code>DATE</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_SOUR_DATA_COPR</code><br>
<td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_DEST</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_DATE</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>DATE</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_DATE_TIME</code><br>
<td valign="top"><code>ELT_HEAD_DATE</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_SUBM</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>XREF_PTR(SUBM)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_SUBN</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>XREF_PTR(SUBN)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_FILE</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_COPR</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_GEDC</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_GEDC_VERS</code><br>
<td valign="top"><code>ELT_HEAD_GEDC</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_GEDC_FORM</code><br>
<td valign="top"><code>ELT_HEAD_GEDC</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_CHAR</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_CHAR_VERS</code><br>
<td valign="top"><code>ELT_HEAD_CHAR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_LANG</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_PLAC</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_PLAC_FORM</code><br>
<td valign="top"><code>ELT_HEAD_PLAC</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_HEAD_NOTE</code><br>
<td valign="top"><code>REC_HEAD</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>STRING</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_FAM_HUSB</code><br>
<td valign="top"><code>REC_FAM</code><br>
</td>
<td valign="top"><code>XREF_PTR(INDI)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_FAM_WIFE</code><br>
<td valign="top"><code>REC_FAM</code><br>
</td>
<td valign="top"><code>XREF_PTR(INDI)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_FAM_CHIL</code><br>
<td valign="top"><code>REC_FAM</code><br>
</td>
<td valign="top"><code>XREF_PTR(INDI)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_FAM_NCHI</code><br>
<td valign="top"><code>REC_FAM</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_FAM_SUBM</code><br>
<td valign="top"><code>REC_FAM</code><br>
</td>
<td valign="top"><code>XREF_PTR(SUBM)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_INDI_RESN</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_INDI_SEX</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_INDI_SUBM</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>XREF_PTR(SUBM)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_INDI_ALIA</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>XREF_PTR(INDI)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_INDI_ANCI</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>XREF_PTR(SUBM)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_INDI_DESI</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>XREF_PTR(SUBM)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_INDI_RFN</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_INDI_AFN</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_OBJE_FORM</code><br>
<td valign="top"><code>REC_OBJE</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_OBJE_TITL</code><br>
<td valign="top"><code>REC_OBJE</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_OBJE_BLOB</code><br>
<td valign="top"><code>REC_OBJE</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>STRING</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_OBJE_BLOB_CONT</code><br>
<td valign="top"><code>ELT_OBJE_BLOB</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_OBJE_OBJE</code><br>
<td valign="top"><code>REC_OBJE</code><br>
</td>
<td valign="top"><code>XREF_PTR(OBJE)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_REPO_NAME</code><br>
<td valign="top"><code>REC_REPO</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SOUR_DATA</code><br>
<td valign="top"><code>REC_SOUR</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SOUR_DATA_EVEN</code><br>
<td valign="top"><code>ELT_SOUR_DATA</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SOUR_DATA_EVEN_DATE</code><br>
<td valign="top"><code>ELT_SOUR_DATA_EVEN</code><br>
</td>
<td valign="top"><code>DATE</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SOUR_DATA_EVEN_PLAC</code><br>
<td valign="top"><code>ELT_SOUR_DATA_EVEN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SOUR_DATA_AGNC</code><br>
<td valign="top"><code>ELT_SOUR_DATA</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SOUR_AUTH</code><br>
<td valign="top"><code>REC_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>STRING</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SOUR_TITL</code><br>
<td valign="top"><code>REC_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>STRING</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SOUR_ABBR</code><br>
<td valign="top"><code>REC_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SOUR_PUBL</code><br>
<td valign="top"><code>REC_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>STRING</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SOUR_TEXT</code><br>
<td valign="top"><code>REC_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>STRING</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUBN_SUBM</code><br>
<td valign="top"><code>REC_SUBN</code><br>
</td>
<td valign="top"><code>XREF_PTR(SUBM)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUBN_FAMF</code><br>
<td valign="top"><code>REC_SUBN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUBN_TEMP</code><br>
<td valign="top"><code>REC_SUBN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUBN_ANCE</code><br>
<td valign="top"><code>REC_SUBN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUBN_DESC</code><br>
<td valign="top"><code>REC_SUBN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUBN_ORDI</code><br>
<td valign="top"><code>REC_SUBN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUBN_RIN</code><br>
<td valign="top"><code>REC_SUBN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUBM_NAME</code><br>
<td valign="top"><code>REC_SUBM</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUBM_LANG</code><br>
<td valign="top"><code>REC_SUBM</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUBM_RFN</code><br>
<td valign="top"><code>REC_SUBM</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUBM_RIN</code><br>
<td valign="top"><code>REC_SUBM</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_ADDR</code><br>
ELT_SUB_INDIV_EVEN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>STRING</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_ADDR_CONT</code><br>
<td valign="top"><code>ELT_SUB_ADDR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_ADDR_ADR1</code><br>
<td valign="top"><code>ELT_SUB_ADDR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_ADDR_ADR2</code><br>
<td valign="top"><code>ELT_SUB_ADDR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_ADDR_CITY</code><br>
<td valign="top"><code>ELT_SUB_ADDR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_ADDR_STAE</code><br>
<td valign="top"><code>ELT_SUB_ADDR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_ADDR_POST</code><br>
<td valign="top"><code>ELT_SUB_ADDR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_ADDR_CTRY</code><br>
<td valign="top"><code>ELT_SUB_ADDR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_PHON</code><br>
ELT_SUB_INDIV_EVEN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_ASSO</code><br>
XREF_PTR(SOUR),<br>
XREF_PTR(SUBM),<br>
XREF_PTR(SUBN)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_ASSO_TYPE</code><br>
<td valign="top"><code>ELT_SUB_ASSO</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_ASSO_RELA</code><br>
<td valign="top"><code>ELT_SUB_ASSO</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_CHAN</code><br>
</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_CHAN_DATE</code><br>
<td valign="top"><code>ELT_SUB_CHAN</code><br>
</td>
<td valign="top"><code>DATE</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_CHAN_TIME</code><br>
<td valign="top"><code>ELT_SUB_CHAN_DATE</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_FAMC</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>XREF_PTR(FAM)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_FAMC_PEDI</code><br>
<td valign="top"><code>ELT_SUB_FAMC</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_CONT</code><br>
ELT_SUB_SOUR, ELT_SUB_SOUR_TEXT<br>
</code><br>
</td>
- <td valign="top"><code>STRING</code><br>
- </td>
+ <td valign="top"><code>NULL<br>STRING</code><br>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_CONC</code><br>
</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_EVT_TYPE</code><br>
ELT_SUB_INDIV_EVEN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_EVT_DATE</code><br>
ELT_SUB_INDIV_EVEN</code><br>
</td>
<td valign="top"><code>DATE</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_EVT_AGE</code><br>
ELT_SUB_INDIV_EVEN</code><br>
</td>
<td valign="top"><code>AGE</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_EVT_AGNC</code><br>
ELT_SUB_INDIV_EVEN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_EVT_CAUS</code><br>
ELT_SUB_INDIV_EVEN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_FAM_EVT</code><br>
</td>
<td valign="top"><code>NULL<br>
STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_FAM_EVT_HUSB</code><br>
<code>ELT_SUB_FAM_EVT_EVEN</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_FAM_EVT_WIFE</code><br>
<code>ELT_SUB_FAM_EVT_EVEN</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_FAM_EVT_AGE</code><br>
<code>ELT_SUB_FAM_EVT_WIFE</code><br>
</td>
<td valign="top"><code>AGE</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_FAM_EVT_EVEN</code><br>
<td valign="top"><code>REC_FAM</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_IDENT_REFN</code><br>
</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_IDENT_REFN_TYPE</code><br>
<td valign="top"><code>ELT_SUB_IDENT_REFN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_IDENT_RIN</code><br>
</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_INDIV_ATTR</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_INDIV_RESI</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_INDIV_BIRT</code><br>
</td>
<td valign="top"><code>NULL<br>
STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_INDIV_BIRT_FAMC</code><br>
<td valign="top"><code>ELT_SUB_INDIV_BIRT</code><br>
</td>
<td valign="top"><code>XREF_PTR(FAM)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_INDIV_GEN</code><br>
</td>
<td valign="top"><code>NULL<br>
STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_INDIV_ADOP</code><br>
</td>
<td valign="top"><code>NULL<br>
STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_INDIV_ADOP_FAMC</code><br>
<td valign="top"><code>ELT_SUB_INDIV_ADOP</code><br>
</td>
<td valign="top"><code>XREF_PTR(FAM)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_INDIV_ADOP_FAMC_ADOP</code><br>
<td valign="top"><code>ELT_SUB_INDIV_ADOP_FAMC</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_INDIV_EVEN</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LIO_BAPL</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LIO_BAPL_STAT</code><br>
</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LIO_BAPL_DATE</code><br>
<br>
</td>
<td valign="top"><code>DATE</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LIO_BAPL_TEMP</code><br>
<br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LIO_BAPL_PLAC</code><br>
<br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LIO_SLGC</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LIO_SLGC_FAMC</code><br>
<td valign="top"><code>ELT_SUB_LIO_SLGC</code><br>
</td>
<td valign="top"><code>XREF_PTR(FAM)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
<td valign="top"><code>REC_FAM</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LSS_SLGS_STAT</code><br>
<td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LSS_SLGS_DATE</code><br>
<td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
</td>
<td valign="top"><code>DATE</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LSS_SLGS_TEMP</code><br>
<td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_LSS_SLGS_PLAC</code><br>
<td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
<td valign="top"><code>NULL<br>
XREF_PTR(OBJE)<br>
</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_MULTIM_OBJE_FORM</code><br>
<td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_MULTIM_OBJE_TITL</code><br>
<td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_MULTIM_OBJE_FILE</code><br>
<td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_NOTE</code><br>
STRING<br>
XREF_PTR(NOTE)<br>
</code><br>
- </td>
+ </td><td valign="top"><code>STRING<br>
+ <br>
+NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_PERS_NAME_NPFX</code><br>
<td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_PERS_NAME_GIVN</code><br>
<td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_PERS_NAME_NICK</code><br>
<td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_PERS_NAME_SPFX</code><br>
<td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_PERS_NAME_SURN</code><br>
<td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_PERS_NAME_NSFX</code><br>
<td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_PLAC</code><br>
ELT_SUB_INDIV_EVEN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_PLAC_FORM</code><br>
<td valign="top"><code>ELT_SUB_PLAC</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_SOUR</code><br>
</td>
<td valign="top"><code>STRING<br>
XREF_PTR(SOUR)</code><br>
- </td>
+ </td><td valign="top"><code>STRING<br>
+NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_SOUR_PAGE</code><br>
<td valign="top"><code>ELT_SUB_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_SOUR_EVEN</code><br>
<td valign="top"><code>ELT_SUB_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_SOUR_EVEN_ROLE</code><br>
<td valign="top"><code>ELT_SUB_SOUR_EVEN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_SOUR_DATA</code><br>
<td valign="top"><code>ELT_SUB_SOUR</code><br>
</td>
<td valign="top"><code>NULL</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_SOUR_DATA_DATE</code><br>
<td valign="top"><code>ELT_SUB_SOUR_DATA</code><br>
</td>
<td valign="top"><code>DATE</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_SOUR_TEXT</code><br>
ELT_SUB_SOUR_DATA</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_SOUR_QUAY</code><br>
<td valign="top"><code>ELT_SUB_SOUR</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_REPO</code><br>
<td valign="top"><code>REC_SOUR</code><br>
</td>
<td valign="top"><code>XREF_PTR(REPO)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_REPO_CALN</code><br>
<td valign="top"><code>ELT_SUB_REPO</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_REPO_CALN_MEDI</code><br>
<td valign="top"><code>ELT_SUB_REPO_CALN</code><br>
</td>
<td valign="top"><code>STRING</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_SUB_FAMS</code><br>
<td valign="top"><code>REC_INDI</code><br>
</td>
<td valign="top"><code>XREF_PTR(FAM)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
<tr>
<td valign="top"><code>ELT_USER</code><br>
<td valign="top"><code>NULL<br>
STRING<br>
XREF_PTR(USER)</code><br>
- </td>
+ </td><td valign="top"><code>NULL</code><br>
+ </td>
+
</tr>
</tbody>
<tr>
<td valign="top"><code>DV_PHRASE</code><br>
</td>
- <td valign="top">a free form date phrase<br>
+ <td valign="top">a free form date phrase
+(date1 and date2 can contain meaningful values, if the dates could be parsed,
+but did not result in a valid date; the sdn values will then still be -1)<br>
</td>
<td valign="top">phrase<br>
</td>
</tbody>
</table>
<br>
+The following function creates a new <code>date_value</code> struct and initializes it properly, or copies an existing date value:
+<blockquote><code>struct date_value* <b>gedcom_new_date_value</b> (const struct date_value* copy_from);<br></code></blockquote>
+<code></code>If the parameter <code>copy_from</code> is <code>NULL</code>, a new value is created and given initial values. If it is non-<code>NULL</code>, the value is copied into a new date value.<br>
<h3><a name="date"></a>struct date<br>
</h3>
day numbers for "1 MAR 1990" and "31 MAR 1990", and the Gregorian date
"1990" is represented by the serial day numbers for "1 JAN 1990" and "31
DEC 1990". Similarly for the other calendar types.<br>
+</blockquote>
</blockquote>
+<blockquote>
+
+ </blockquote>
+<code></code>To ensure that an updated date value is consistent, i.e. all
+its struct fields are consistent with each other, the following function
+can be used:<br>
+<blockquote><code>int <b>gedcom_normalize_date</b> (Date_input compute_from, struct date_value* value);<br></code></blockquote>
+
+<code></code>The <code>compute_from</code> parameter determines which fields
+will be taken as input to compute the other fields. The following table
+gives an overview of the input and output parameters (the calendar type <code>cal</code> is always an input parameter, and should not be <code>CAL_UNKNOWN</code>):<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1" width="100%">
+ <tbody>
+ <tr>
+ <td valign="top" align="center"><b>compute_from</b><br>
+ </td>
+ <td valign="top" align="center"><b>input parameters</b><br>
+ </td>
+ <td valign="top" align="center"><b>output parameters</b><br>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top"><code>DI_FROM_STRINGS</code><br>
+ </td>
+ <td valign="top"><code>day_str, month_str, year_str</code><br>
+ </td>
+ <td valign="top"><code>day, month, year, year_type<br>
+type, sdn1, sdn2</code><br>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top"><code>DI_FROM_NUMBERS</code><br>
+ </td>
+ <td valign="top"><code>day, month, year, year_type</code><br>
+ </td>
+ <td valign="top"><code>day_str, month_str, year_str<br>
+
+type, sdn1, sdn2</code><br>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top"><code>DI_FROM_SDN</code><br>
+ </td>
+ <td valign="top"><code>type, sdn1, sdn2</code><br>
+ </td>
+ <td valign="top"><code>day, month, year<br>
+day_str, month_str, year_str</code><br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+If the type in the date value is <code>DV_PHRASE</code>, no conversions take
+place, otherwise one or both of the date structs are processed according
+to the table above, depending on the type. The function returns 0 in case of success, non-zero in case of an error.<br>
+<br>
+This function could also be used to convert a date from one calendar to another,
+because the serial day number is calendar independent (error handling is
+ignored in this example):<br>
+<blockquote><code>struct date_value* dv = gedcom_new_date_value(NULL);<br>
+dv->date1.cal = CAL_GREGORIAN;<br>
+dv->date1.day = 4</code>;<br>
+ <code>dv->date1.month = 2;<br>
+dv->date1.year = 1799;<br>
+dv->date1.year_type = YEAR_SINGLE;<br>
+gedcom_normalize_date(DI_FROM_NUMBERS, dv);<br>
+ <br>
+dv->date1.cal = CAL_FRENCH_REV;<br>
+gedcom_normalize_date(DI_FROM_SDN, dv);<br>
+/* the day, month and year are now filled in according to the French Revolution calendar */</code><br>
+ </blockquote>
+
+<blockquote>
+ </blockquote>
+
- <br>
-</blockquote>
<h3><a name="age_value"></a>struct age_value</h3>
This struct describes an age as given in the GEDCOM file, and has the
<ul>
<li><code> AGE_NO_MODIFIER</code> : no modifier</li><li><code>AGE_LESS_THAN</code><code></code> : the modifier '<' is added</li><li><code>AGE_GREATER_THAN </code>: the modifier '>' is added</li>
</ul>
-<br>
+The following function creates a new <code>age_value</code> struct and initializes it properly, or copies an existing age value:
+<blockquote><code>struct age_value* <b>gedcom_new_age_value</b> (const struct age_value* copy_from);<br></code></blockquote>
+
+<code></code>If the parameter <code>copy_from</code> is <code>NULL</code>, a new value is created and given initial values. If it is non-<code>NULL</code>, the value is copied into a new age value.<br>
<h3><a name="xref_value"></a>struct xref_value</h3>
This struct represents a cross-reference in the GEDCOM file (but note that
</blockquote>
<code>struct xref_value* <b>gedcom_link_xref</b> (Xref_type type, const char* key)<br>
struct xref_value* <b>gedcom_unlink_xref</b> (Xref_type type, const char* key)</code><br>
- <blockquote>Declare the xref_value corresponding to the given key as being
-used/no longer used (linked to or unlinked) as the given type. The
-use of these functions is not mandatory, but it can aid in spotting places in the code where xref_value objects are deleted while they are still referenced.<br>
+ <blockquote>Declare
+the xref_value corresponding to the given key as being used/no longer used
+(linked to or unlinked) as the given type. The use of these functions
+is not mandatory, but it can aid in spotting places in the code where xref_value
+objects are deleted while they are still referenced.<br>
<br>
Returns the xref_value object if success, and its use count is incremented/decremented. Returns <code>NULL</code> in one of the following cases:<br>
<ul>
<br>
<br>
<br>
+<br>
+<br>
+<br>
+<br>
</body></html>
\ No newline at end of file