1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <title>Libgedcom interface details</title>
6 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
10 <h1 align="center">Libgedcom interface details</h1>
16 <li><a href="#Record_identifiers">Record identifiers</a></li>
17 <li><a href="#Element_identifiers">Element identifiers</a></li>
18 <li><a href="#Gedcom_val_types">Gedcom_val types</a></li>
21 <li><a href="#struct_date_value">struct date_value</a></li>
22 <li><a href="#struct_date">struct date</a><br>
30 <hr width="100%" size="2">
31 <h2><a name="Record_identifiers"></a>Record identifiers</h2>
32 The following table describes the identifiers to be used in the record
33 callbacks. The last column gives the <a href="#Gedcom_val_types"><code>
34 Gedcom_val</code> type</a> of the <code>xref</code> argument in the header
38 <table width="100%" border="1" cellspacing="2" cellpadding="2">
41 <td valign="top" align="center"><b>Record</b><br>
43 <td valign="top" align="center"><b>Meaning</b><br>
45 <td valign="top" align="center"><b>Possible<br>
46 <code>xref</code> types</b><br>
50 <td valign="top"><code>REC_HEAD</code><br>
52 <td valign="top">The header of the GEDCOM file<br>
54 <td valign="top"><code>NULL</code><br>
58 <td valign="top"><code>REC_FAM</code><br>
60 <td valign="top">A record describing a family<br>
62 <td valign="top"><code>STRING</code><br>
66 <td valign="top"><code>REC_INDI</code><br>
68 <td valign="top">A record describing an individual<br>
70 <td valign="top"><code>STRING</code><br>
74 <td valign="top"><code>REC_OBJE</code><br>
76 <td valign="top">A record describing a multimedia object<br>
78 <td valign="top"><code>STRING</code><br>
82 <td valign="top"><code>REC_NOTE</code><br>
84 <td valign="top">A record describing a note<br>
86 <td valign="top"><code>STRING</code><br>
90 <td valign="top"><code>REC_REPO</code><br>
92 <td valign="top">A record describing a source repository<br>
94 <td valign="top"><code>STRING</code><br>
98 <td valign="top"><code>REC_SOUR</code><br>
100 <td valign="top">A record describing a source<br>
102 <td valign="top"><code>STRING</code><br>
106 <td valign="top"><code>REC_SUBN</code><br>
108 <td valign="top">A record describing the submission<br>
110 <td valign="top"><code>STRING</code><br>
114 <td valign="top"><code>REC_SUBM</code><br>
116 <td valign="top">A record describing the submitter<br>
118 <td valign="top"><code>STRING</code><br>
122 <td valign="top"><code>REC_USER</code><br>
124 <td valign="top">An application-specific record (the <code>tag</code>
125 in the start callback contains the actually used tag).<br>
127 <td valign="top"><code>NULL</code><br>
128 <code>STRING</code><br>
135 <hr width="100%" size="2">
136 <h2><a name="Element_identifiers"></a>Element identifiers</h2>
137 The following table describes the identifiers to be used in the element
138 callbacks. The last column gives the <a href="file:///home/verthezp/src/external/gedcom-parse/doc/interface.html#Gedcom_val_types"><code>
139 Gedcom_val</code> type</a> of the <code>val</code> argument in the element
143 <table cellpadding="2" cellspacing="2" border="1" width="100%">
146 <td valign="top" align="center"><b>Element</b><br>
148 <td valign="top" align="center"><b>Possible<br>
152 <td valign="top" align="center"><b>Used within</b><br>
154 <td valign="top" align="center"><b>Possible<br>
155 <code>val</code> types<br>
160 <td valign="top"><code>ELT_HEAD_SOUR</code><br>
162 <td valign="top"><code>SOUR</code><br>
164 <td valign="top"><code>REC_HEAD</code><br>
166 <td valign="top"><code>STRING</code><br>
170 <td valign="top"><code>ELT_HEAD_SOUR_VERS</code><br>
172 <td valign="top"><code>VERS</code><br>
174 <td valign="top"><code>ELT_HEAD_SOUR</code><br>
176 <td valign="top"><code>STRING</code><br>
180 <td valign="top"><code>ELT_HEAD_SOUR_NAME</code><br>
182 <td valign="top"><code>NAME</code><br>
184 <td valign="top"><code>ELT_HEAD_SOUR</code><br>
186 <td valign="top"><code>STRING</code><br>
190 <td valign="top"><code>ELT_HEAD_SOUR_CORP</code><br>
192 <td valign="top"><code>CORP</code><br>
194 <td valign="top"><code>ELT_HEAD_SOUR</code><br>
196 <td valign="top"><code>STRING</code><br>
200 <td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
202 <td valign="top"><code>DATA</code><br>
204 <td valign="top"><code>ELT_HEAD_SOUR</code><br>
206 <td valign="top"><code>STRING</code><br>
210 <td valign="top"><code>ELT_HEAD_SOUR_DATA_DATE</code><br>
212 <td valign="top"><code>DATE</code><br>
214 <td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
216 <td valign="top"><code>DATE</code><br>
220 <td valign="top"><code>ELT_HEAD_SOUR_DATA_COPR</code><br>
222 <td valign="top"><code>COPR</code><br>
224 <td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
226 <td valign="top"><code>STRING</code><br>
230 <td valign="top"><code>ELT_HEAD_DEST</code><br>
232 <td valign="top"><code>DEST</code><br>
234 <td valign="top"><code>REC_HEAD</code><br>
236 <td valign="top"><code>STRING</code><br>
240 <td valign="top"><code>ELT_HEAD_DATE</code><br>
242 <td valign="top"><code>DATE</code><br>
244 <td valign="top"><code>REC_HEAD</code><br>
246 <td valign="top"><code>DATE</code><br>
250 <td valign="top"><code>ELT_HEAD_DATE_TIME</code><br>
252 <td valign="top"><code>TIME</code><br>
254 <td valign="top"><code>ELT_HEAD_DATE</code><br>
256 <td valign="top"><code>STRING</code><br>
260 <td valign="top"><code>ELT_HEAD_SUBM</code><br>
262 <td valign="top"><code>SUBM</code><br>
264 <td valign="top"><code>REC_HEAD</code><br>
266 <td valign="top"><code>STRING</code><br>
270 <td valign="top"><code>ELT_HEAD_SUBN</code><br>
272 <td valign="top"><code>SUBN</code><br>
274 <td valign="top"><code>REC_HEAD</code><br>
276 <td valign="top"><code>STRING</code><br>
280 <td valign="top"><code>ELT_HEAD_FILE</code><br>
282 <td valign="top"><code>FILE</code><br>
284 <td valign="top"><code>REC_HEAD</code><br>
286 <td valign="top"><code>STRING</code><br>
290 <td valign="top"><code>ELT_HEAD_COPR</code><br>
292 <td valign="top"><code>COPR</code><br>
294 <td valign="top"><code>REC_HEAD</code><br>
296 <td valign="top"><code>STRING</code><br>
300 <td valign="top"><code>ELT_HEAD_GEDC</code><br>
302 <td valign="top"><code>GEDC</code><br>
304 <td valign="top"><code>REC_HEAD</code><br>
306 <td valign="top"><code>NULL</code><br>
310 <td valign="top"><code>ELT_HEAD_GEDC_VERS</code><br>
312 <td valign="top"><code>VERS</code><br>
314 <td valign="top"><code>ELT_HEAD_GEDC</code><br>
316 <td valign="top"><code>STRING</code><br>
320 <td valign="top"><code>ELT_HEAD_GEDC_FORM</code><br>
322 <td valign="top"><code>FORM</code><br>
324 <td valign="top"><code>ELT_HEAD_GEDC</code><br>
326 <td valign="top"><code>STRING</code><br>
330 <td valign="top"><code>ELT_HEAD_CHAR</code><br>
332 <td valign="top"><code>CHAR</code><br>
334 <td valign="top"><code>REC_HEAD</code><br>
336 <td valign="top"><code>STRING</code><br>
340 <td valign="top"><code>ELT_HEAD_CHAR_VERS</code><br>
342 <td valign="top"><code>VERS</code><br>
344 <td valign="top"><code>ELT_HEAD_CHAR</code><br>
346 <td valign="top"><code>STRING</code><br>
350 <td valign="top"><code>ELT_HEAD_LANG</code><br>
352 <td valign="top"><code>LANG</code><br>
354 <td valign="top"><code>REC_HEAD</code><br>
356 <td valign="top"><code>STRING</code><br>
360 <td valign="top"><code>ELT_HEAD_PLAC</code><br>
362 <td valign="top"><code>PLAC</code><br>
364 <td valign="top"><code>REC_HEAD</code><br>
366 <td valign="top"><code>NULL</code><br>
370 <td valign="top"><code>ELT_HEAD_PLAC_FORM</code><br>
372 <td valign="top"><code>FORM</code><br>
374 <td valign="top"><code>ELT_HEAD_PLAC</code><br>
376 <td valign="top"><code>STRING</code><br>
380 <td valign="top"><code>ELT_HEAD_NOTE</code><br>
382 <td valign="top"><code>NOTE</code><br>
384 <td valign="top"><code>REC_HEAD</code><br>
386 <td valign="top"><code>STRING</code><br>
390 <td valign="top"><code>ELT_FAM_HUSB</code><br>
392 <td valign="top"><code>HUSB</code><br>
394 <td valign="top"><code>REC_FAM</code><br>
396 <td valign="top"><code>STRING</code><br>
400 <td valign="top"><code>ELT_FAM_WIFE</code><br>
402 <td valign="top"><code>WIFE</code><br>
404 <td valign="top"><code>REC_FAM</code><br>
406 <td valign="top"><code>STRING</code><br>
410 <td valign="top"><code>ELT_FAM_CHIL</code><br>
412 <td valign="top"><code>CHIL</code><br>
414 <td valign="top"><code>REC_FAM</code><br>
416 <td valign="top"><code>STRING</code><br>
420 <td valign="top"><code>ELT_FAM_NCHI</code><br>
422 <td valign="top"><code>NCHI</code><br>
424 <td valign="top"><code>REC_FAM</code><br>
426 <td valign="top"><code>STRING</code><br>
430 <td valign="top"><code>ELT_FAM_SUBM</code><br>
432 <td valign="top"><code>SUBM</code><br>
434 <td valign="top"><code>REC_FAM</code><br>
436 <td valign="top"><code>STRING</code><br>
440 <td valign="top"><code>ELT_INDI_RESN</code><br>
442 <td valign="top"><code>RES</code><code>N</code><br>
444 <td valign="top"><code>REC_INDI</code><br>
446 <td valign="top"><code>STRING</code><br>
450 <td valign="top"><code>ELT_INDI_SEX</code><br>
452 <td valign="top"><code>SEX</code><br>
454 <td valign="top"><code>REC_INDI</code><br>
456 <td valign="top"><code>STRING</code><br>
460 <td valign="top"><code>ELT_INDI_SUBM</code><br>
462 <td valign="top"><code>SUBM</code><br>
464 <td valign="top"><code>REC_INDI</code><br>
466 <td valign="top"><code>STRING</code><br>
470 <td valign="top"><code>ELT_INDI_ALIA</code><br>
472 <td valign="top"><code>ALIA</code><br>
474 <td valign="top"><code>REC_INDI</code><br>
476 <td valign="top"><code>STRING</code><br>
480 <td valign="top"><code>ELT_INDI_ANCI</code><br>
482 <td valign="top"><code>ANCI</code><br>
484 <td valign="top"><code>REC_INDI</code><br>
486 <td valign="top"><code>STRING</code><br>
490 <td valign="top"><code>ELT_INDI_DESI</code><br>
492 <td valign="top"><code>DESI</code><br>
494 <td valign="top"><code>REC_INDI</code><br>
496 <td valign="top"><code>STRING</code><br>
500 <td valign="top"><code>ELT_INDI_RFN</code><br>
502 <td valign="top"><code>RFN</code><br>
504 <td valign="top"><code>REC_INDI</code><br>
506 <td valign="top"><code>STRING</code><br>
510 <td valign="top"><code>ELT_INDI_AFN</code><br>
512 <td valign="top"><code>AFN</code><br>
514 <td valign="top"><code>REC_INDI</code><br>
516 <td valign="top"><code>STRING</code><br>
520 <td valign="top"><code>ELT_OBJE_FORM</code><br>
522 <td valign="top"><code>FORM</code><br>
524 <td valign="top"><code>REC_OBJE</code><br>
526 <td valign="top"><code>STRING</code><br>
530 <td valign="top"><code>ELT_OBJE_TITL</code><br>
532 <td valign="top"><code>TITL</code><br>
534 <td valign="top"><code>REC_OBJE</code><br>
536 <td valign="top"><code>STRING</code><br>
540 <td valign="top"><code>ELT_OBJE_BLOB</code><br>
542 <td valign="top"><code>BLOB</code><br>
544 <td valign="top"><code>REC_OBJE</code><br>
546 <td valign="top"><code>NULL</code><br>
550 <td valign="top"><code>ELT_OBJE_BLOB_CONT</code><br>
552 <td valign="top"><code>CONT</code><br>
554 <td valign="top"><code>ELT_OBJE_BLOB</code><br>
556 <td valign="top"><code>STRING</code><br>
560 <td valign="top"><code>ELT_OBJE_OBJE</code><br>
562 <td valign="top"><code>OBJE</code><br>
564 <td valign="top"><code>REC_OBJE</code><br>
566 <td valign="top"><code>STRING</code><br>
570 <td valign="top"><code>ELT_REPO_NAME</code><br>
572 <td valign="top"><code>NAME</code><br>
574 <td valign="top"><code>REC_REPO</code><br>
576 <td valign="top"><code>STRING</code><br>
580 <td valign="top"><code>ELT_SOUR_DATA</code><br>
582 <td valign="top"><code>DATA</code><br>
584 <td valign="top"><code>REC_SOUR</code><br>
586 <td valign="top"><code>NULL</code><br>
590 <td valign="top"><code>ELT_SOUR_DATA_EVEN</code><br>
592 <td valign="top"><code>EVEN</code><br>
594 <td valign="top"><code>ELT_SOUR_DATA</code><br>
596 <td valign="top"><code>STRING</code><br>
600 <td valign="top"><code>ELT_SOUR_DATA_EVEN_DATE</code><br>
602 <td valign="top"><code>DATE</code><br>
604 <td valign="top"><code>ELT_SOUR_DATA_EVEN</code><br>
606 <td valign="top"><code>DATE</code><br>
610 <td valign="top"><code>ELT_SOUR_DATA_EVEN_PLAC</code><br>
612 <td valign="top"><code>PLAC</code><br>
614 <td valign="top"><code>ELT_SOUR_DATA_EVEN</code><br>
616 <td valign="top"><code>STRING</code><br>
620 <td valign="top"><code>ELT_SOUR_DATA_AGNC</code><br>
622 <td valign="top"><code>AGNC</code><br>
624 <td valign="top"><code>ELT_SOUR_DATA</code><br>
626 <td valign="top"><code>STRING</code><br>
630 <td valign="top"><code>ELT_SOUR_AUTH</code><br>
632 <td valign="top"><code>AUTH</code><br>
634 <td valign="top"><code>REC_SOUR</code><br>
636 <td valign="top"><code>STRING</code><br>
640 <td valign="top"><code>ELT_SOUR_TITL</code><br>
642 <td valign="top"><code>TITL</code><br>
644 <td valign="top"><code>REC_SOUR</code><br>
646 <td valign="top"><code>STRING</code><br>
650 <td valign="top"><code>ELT_SOUR_ABBR</code><br>
652 <td valign="top"><code>ABBR</code><br>
654 <td valign="top"><code>REC_SOUR</code><br>
656 <td valign="top"><code>STRING</code><br>
660 <td valign="top"><code>ELT_SOUR_PUBL</code><br>
662 <td valign="top"><code>PUBL</code><br>
664 <td valign="top"><code>REC_SOUR</code><br>
666 <td valign="top"><code>STRING</code><br>
670 <td valign="top"><code>ELT_SOUR_TEXT</code><br>
672 <td valign="top"><code>TEXT</code><br>
674 <td valign="top"><code>REC_SOUR</code><br>
676 <td valign="top"><code>STRING</code><br>
680 <td valign="top"><code>ELT_SUBN_SUBM</code><br>
682 <td valign="top"><code>SUBM</code><br>
684 <td valign="top"><code>REC_SUBN</code><br>
686 <td valign="top"><code>STRING</code><br>
690 <td valign="top"><code>ELT_SUBN_FAMF</code><br>
692 <td valign="top"><code>FAMF</code><br>
694 <td valign="top"><code>REC_SUBN</code><br>
696 <td valign="top"><code>STRING</code><br>
700 <td valign="top"><code>ELT_SUBN_TEMP</code><br>
702 <td valign="top"><code>TEMP</code><br>
704 <td valign="top"><code>REC_SUBN</code><br>
706 <td valign="top"><code>STRING</code><br>
710 <td valign="top"><code>ELT_SUBN_ANCE</code><br>
712 <td valign="top"><code>ANCE</code><br>
714 <td valign="top"><code>REC_SUBN</code><br>
716 <td valign="top"><code>STRING</code><br>
720 <td valign="top"><code>ELT_SUBN_DESC</code><br>
722 <td valign="top"><code>DESC</code><br>
724 <td valign="top"><code>REC_SUBN</code><br>
726 <td valign="top"><code>STRING</code><br>
730 <td valign="top"><code>ELT_SUBN_ORDI</code><br>
732 <td valign="top"><code>ORDI</code><br>
734 <td valign="top"><code>REC_SUBN</code><br>
736 <td valign="top"><code>STRING</code><br>
740 <td valign="top"><code>ELT_SUBN_RIN</code><br>
742 <td valign="top"><code>RIN</code><br>
744 <td valign="top"><code>REC_SUBN</code><br>
746 <td valign="top"><code>STRING</code><br>
750 <td valign="top"><code>ELT_SUBM_NAME</code><br>
752 <td valign="top"><nobr><code>NAME</code></nobr><br>
754 <td valign="top"><code>REC_SUBM</code><br>
756 <td valign="top"><code>STRING</code><br>
760 <td valign="top"><code>ELT_SUBM_LANG</code><br>
762 <td valign="top"><code>LANG</code><br>
764 <td valign="top"><code>REC_SUBM</code><br>
766 <td valign="top"><code>STRING</code><br>
770 <td valign="top"><code>ELT_SUBM_RFN</code><br>
772 <td valign="top"><code>RFN</code><br>
774 <td valign="top"><code>REC_SUBM</code><br>
776 <td valign="top"><code>STRING</code><br>
780 <td valign="top"><code>ELT_SUBM_RIN</code><br>
782 <td valign="top"><code>RIN</code><br>
784 <td valign="top"><code>REC_SUBM</code><br>
786 <td valign="top"><code>STRING</code><br>
790 <td valign="top"><code>ELT_SUB_ADDR</code><br>
792 <td valign="top"><code>ADDR</code><br>
794 <td valign="top"><code>ELT_HEAD_SOUR_CORP,<br>
795 REC_REPO, REC_SUBM,<br>
796 </code><code>ELT_SUB_FAM_EVT</code>,<br>
797 <code>ELT_SUB_FAM_EVT_EVEN,<br>
798 ELT_SUB_INDIV_ATTR,<br>
799 ELT_SUB_INDIV_RESI,<br>
800 ELT_SUB_INDIV_BIRT,<br>
801 ELT_SUB_INDIV_GEN,<br>
802 ELT_SUB_INDIV_ADOP<br>
806 <td valign="top"><code>STRING</code><br>
810 <td valign="top"><code>ELT_SUB_ADDR_CONT</code><br>
812 <td valign="top"><code>CONT</code><br>
814 <td valign="top"><code>ELT_SUB_ADDR</code><br>
816 <td valign="top"><code>STRING</code><br>
820 <td valign="top"><code>ELT_SUB_ADDR_ADR1</code><br>
822 <td valign="top"><code>ADR1</code><br>
824 <td valign="top"><code>ELT_SUB_ADDR</code><br>
826 <td valign="top"><code>STRING</code><br>
830 <td valign="top"><code>ELT_SUB_ADDR_ADR2</code><br>
832 <td valign="top"><code>ADR2</code><br>
834 <td valign="top"><code>ELT_SUB_ADDR</code><br>
836 <td valign="top"><code>STRING</code><br>
840 <td valign="top"><code>ELT_SUB_ADDR_CITY</code><br>
842 <td valign="top"><code>CITY</code><br>
844 <td valign="top"><code>ELT_SUB_ADDR</code><br>
846 <td valign="top"><code>STRING</code><br>
850 <td valign="top"><code>ELT_SUB_ADDR_STAE</code><br>
852 <td valign="top"><code>STAE</code><br>
854 <td valign="top"><code>ELT_SUB_ADDR</code><br>
856 <td valign="top"><code>STRING</code><br>
860 <td valign="top"><code>ELT_SUB_ADDR_POST</code><br>
862 <td valign="top"><code>POST</code><br>
864 <td valign="top"><code>ELT_SUB_ADDR</code><br>
866 <td valign="top"><code>STRING</code><br>
870 <td valign="top"><code>ELT_SUB_ADDR_CTRY</code><br>
872 <td valign="top"><code>CTRY</code><br>
874 <td valign="top"><code>ELT_SUB_ADDR</code><br>
876 <td valign="top"><code>STRING</code><br>
880 <td valign="top"><code>ELT_SUB_PHON</code><br>
882 <td valign="top"><code>PHON</code><br>
884 <td valign="top"><code>ELT_HEAD_SOUR_CORP,<br>
885 REC_REPO, REC_SUBM,<br>
886 </code><code>ELT_SUB_FAM_EVT,<br>
887 </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
888 ELT_SUB_INDIV_ATTR,<br>
889 ELT_SUB_INDIV_RESI,<br>
890 ELT_SUB_INDIV_BIRT,<br>
891 ELT_SUB_INDIV_GEN,<br>
892 ELT_SUB_INDIV_ADOP<br>
896 <td valign="top"><code>STRING</code><br>
900 <td valign="top"><code>ELT_SUB_ASSO</code><br>
902 <td valign="top"><code>ASSO</code><br>
904 <td valign="top"><code>REC_INDI</code><br>
906 <td valign="top"><code>STRING</code><br>
910 <td valign="top"><code>ELT_SUB_ASSO_TYPE</code><br>
912 <td valign="top"><code>TYPE</code><br>
914 <td valign="top"><code>ELT_SUB_ASSO</code><br>
916 <td valign="top"><code>STRING</code><br>
920 <td valign="top"><code>ELT_SUB_ASSO_RELA</code><br>
922 <td valign="top"><code>RELA</code><br>
924 <td valign="top"><code>ELT_SUB_ASSO</code><br>
926 <td valign="top"><code>STRING</code><br>
930 <td valign="top"><code>ELT_SUB_CHAN</code><br>
932 <td valign="top"><code>CHAN</code><br>
934 <td valign="top"><code>REC_FAM, REC_INDI,<br>
935 REC_OBJE, REC_NOTE,<br>
936 REC_REPO, REC_SOUR,<br>
940 <td valign="top"><code>NULL</code><br>
944 <td valign="top"><code>ELT_SUB_CHAN_DATE</code><br>
946 <td valign="top"><code>DATE</code><br>
948 <td valign="top"><code>ELT_SUB_CHAN</code><br>
950 <td valign="top"><code>DATE</code><br>
954 <td valign="top"><code>ELT_SUB_CHAN_TIME</code><br>
956 <td valign="top"><code>TIME</code><br>
958 <td valign="top"><code>ELT_SUB_CHAN_DATE</code><br>
960 <td valign="top"><code>STRING</code><br>
964 <td valign="top"><code>ELT_SUB_FAMC</code><br>
966 <td valign="top"><code>FAMC</code><br>
968 <td valign="top"><code>REC_INDI</code><br>
970 <td valign="top"><code>STRING</code><br>
974 <td valign="top"><code>ELT_SUB_FAMC_PEDI</code><br>
976 <td valign="top"><code>PEDI</code><br>
978 <td valign="top"><code>ELT_SUB_FAMC</code><br>
980 <td valign="top"><code>STRING</code><br>
984 <td valign="top"><code>ELT_SUB_CONT</code><br>
986 <td valign="top"><code>CONT</code><br>
988 <td valign="top"><code>ELT_HEAD_NOTE, REC_NOTE,<br>
989 ELT_SOUR_AUTH, ELT_SOUR_TITL,<br>
990 ELT_SOUR_PUBL, ELT_SOUR_TEXT,<br>
992 ELT_SUB_SOUR, ELT_SUB_SOUR_TEXT<br>
995 <td valign="top"><code>STRING</code><br>
999 <td valign="top"><code>ELT_SUB_CONC</code><br>
1001 <td valign="top"><code>CONC</code><br>
1003 <td valign="top"><code>ELT_HEAD_NOTE, REC_NOTE,<br>
1004 ELT_SOUR_AUTH, ELT_SOUR_TITL,<br>
1005 ELT_SOUR_PUBL, ELT_SOUR_TEXT,<br>
1007 ELT_SUB_SOUR, ELT_SUB_SOUR_TEXT<br>
1010 <td valign="top"><code>STRING</code><br>
1014 <td valign="top"><code>ELT_SUB_EVT_TYPE</code><br>
1016 <td valign="top"><code>TYPE</code><br>
1018 <td valign="top"><code>ELT_SUB_FAM_EVT,<br>
1019 </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
1020 ELT_SUB_INDIV_ATTR,<br>
1021 ELT_SUB_INDIV_RESI,<br>
1022 ELT_SUB_INDIV_BIRT,<br>
1023 ELT_SUB_INDIV_GEN,<br>
1024 ELT_SUB_INDIV_ADOP<br>
1027 <td valign="top"><code>STRING</code><br>
1031 <td valign="top"><code>ELT_SUB_EVT_DATE</code><br>
1033 <td valign="top"><code>DATE</code><br>
1035 <td valign="top"><code>ELT_SUB_FAM_EVT</code>,<br>
1036 <code>ELT_SUB_FAM_EVT_EVEN,<br>
1037 ELT_SUB_INDIV_ATTR</code><code>,<br>
1038 ELT_SUB_INDIV_RESI,<br>
1039 ELT_SUB_INDIV_BIRT,<br>
1040 ELT_SUB_INDIV_GEN,<br>
1041 ELT_SUB_INDIV_ADOP<br>
1046 <td valign="top"><code>DATE</code><br>
1050 <td valign="top"><code>ELT_SUB_EVT_AGE</code><br>
1052 <td valign="top"><code>AGE</code><br>
1054 <td valign="top"><code>ELT_SUB_FAM_EVT,<br>
1055 </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
1056 ELT_SUB_INDIV_ATTR,<br>
1057 ELT_SUB_INDIV_RESI</code><code>,<br>
1058 ELT_SUB_INDIV_BIRT,<br>
1059 ELT_SUB_INDIV_GEN,<br>
1060 ELT_SUB_INDIV_ADOP</code><br>
1064 <td valign="top"><code>STRING</code><br>
1068 <td valign="top"><code>ELT_SUB_EVT_AGNC</code><br>
1070 <td valign="top"><code>AGNC</code><br>
1072 <td valign="top"><code>ELT_SUB_FAM_EVT,<br>
1073 </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
1074 ELT_SUB_INDIV_ATTR,<br>
1075 ELT_SUB_INDIV_RESI</code><code>,<br>
1076 ELT_SUB_INDIV_BIRT,<br>
1077 ELT_SUB_INDIV_GEN,<br>
1078 ELT_SUB_INDIV_ADOP</code><br>
1082 <td valign="top"><code>STRING</code><br>
1086 <td valign="top"><code>ELT_SUB_EVT_CAUS</code><br>
1088 <td valign="top"><code>CAUS</code><br>
1090 <td valign="top"><code>ELT_SUB_FAM_EVT,<br>
1091 </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
1092 ELT_SUB_INDIV_ATTR,<br>
1093 ELT_SUB_INDIV_RESI</code><code>,<br>
1094 ELT_SUB_INDIV_BIRT,<br>
1095 ELT_SUB_INDIV_GEN,<br>
1096 ELT_SUB_INDIV_ADOP</code><br>
1100 <td valign="top"><code>STRING</code><br>
1104 <td valign="top"><code>ELT_SUB_FAM_EVT</code><br>
1106 <td valign="top"><code>ANUL, CENS, DIV,<br>
1107 DIVF, ENGA, MARR,<br>
1108 MARB, MARC, MARL,<br>
1111 <td valign="top"><code>REC_FAM</code><br>
1113 <td valign="top"><code>NULL<br>
1118 <td valign="top"><code>ELT_SUB_FAM_EVT_HUSB</code><br>
1120 <td valign="top"><code>HUSB</code><br>
1122 <td valign="top"><code>ELT_SUB_FAM_EVT</code>,<br>
1123 <code>ELT_SUB_FAM_EVT_EVEN</code><br>
1125 <td valign="top"><code>NULL</code><br>
1129 <td valign="top"><code>ELT_SUB_FAM_EVT_WIFE</code><br>
1131 <td valign="top"><code>WIFE</code><br>
1133 <td valign="top"><code>ELT_SUB_FAM_EVT</code>,<br>
1134 <code>ELT_SUB_FAM_EVT_EVEN</code><br>
1136 <td valign="top"><code>NULL</code><br>
1140 <td valign="top"><code>ELT_SUB_FAM_EVT_AGE</code><br>
1142 <td valign="top"><code>AGE</code><br>
1144 <td valign="top"><code>ELT_SUB_FAM_EVT_HUSB</code>,<br>
1145 <code>ELT_SUB_FAM_EVT_WIFE</code><br>
1147 <td valign="top"><code>STRING</code><br>
1151 <td valign="top"><code>ELT_SUB_FAM_EVT_EVEN</code><br>
1153 <td valign="top"><code>EVEN</code><br>
1155 <td valign="top"><code>REC_FAM</code><br>
1157 <td valign="top"><code>NULL</code><br>
1161 <td valign="top"><code>ELT_SUB_IDENT_REFN</code><br>
1163 <td valign="top"><code>REFN</code><br>
1165 <td valign="top"><code>REC_FAM, REC_INDI,<br>
1166 REC_OBJE, REC_NOTE,<br>
1167 REC_REPO, REC_SOUR<br>
1170 <td valign="top"><code>STRING</code><br>
1174 <td valign="top"><code>ELT_SUB_IDENT_REFN_TYPE</code><br>
1176 <td valign="top"><code>TYPE</code><br>
1178 <td valign="top"><code>ELT_SUB_IDENT_REFN</code><br>
1180 <td valign="top"><code>STRING</code><br>
1184 <td valign="top"><code>ELT_SUB_IDENT_RIN</code><br>
1186 <td valign="top"><code>RIN</code><br>
1188 <td valign="top"><code>REC_FAM, REC_INDI,<br>
1189 REC_OBJE, REC_NOTE,<br>
1190 REC_REPO, REC_SOUR<br>
1193 <td valign="top"><code>STRING</code><br>
1197 <td valign="top"><code>ELT_SUB_INDIV_ATTR</code><br>
1199 <td valign="top"><code>CAST, DSCR, EDUC,<br>
1200 IDNO, NATI, NCHR,<br>
1201 NMR, OCCU, PROP,<br>
1202 RELI, SSN, TITL</code><br>
1204 <td valign="top"><code>REC_INDI</code><br>
1206 <td valign="top"><code>STRING</code><br>
1210 <td valign="top"><code>ELT_SUB_INDIV_RESI</code><br>
1212 <td valign="top"><code>RESI</code><br>
1214 <td valign="top"><code>REC_INDI</code><br>
1216 <td valign="top"><code>NULL</code><br>
1220 <td valign="top"><code>ELT_SUB_INDIV_BIRT</code><br>
1222 <td valign="top"><code>BIRT, CHR</code><br>
1224 <td valign="top"><code>REC_INDI</code><br>
1226 <td valign="top"><code>NULL<br>
1231 <td valign="top"><code>ELT_SUB_INDIV_BIRT_FAMC</code><br>
1233 <td valign="top"><code>FAMC</code><br>
1235 <td valign="top"><code>ELT_SUB_INDIV_BIRT</code><br>
1237 <td valign="top"><code>STRING</code><br>
1241 <td valign="top"><code>ELT_SUB_INDIV_GEN</code><br>
1243 <td valign="top"><code>DEAT, BURI, CREM,<br>
1244 BAPM, BARM, BASM,<br>
1245 BLES, CHRA, CONF,<br>
1246 FCOM, ORDN, NATU,<br>
1247 EMIG, IMMI, CENS,<br>
1248 PROB, WILL, GRAD,<br>
1251 <td valign="top"><code>REC_INDI</code><br>
1253 <td valign="top"><code>NULL<br>
1258 <td valign="top"><code>ELT_SUB_INDIV_ADOP</code><br>
1260 <td valign="top"><code>ADOP</code><br>
1262 <td valign="top"><code>REC_INDI</code><br>
1264 <td valign="top"><code>NULL<br>
1269 <td valign="top"><code>ELT_SUB_INDIV_ADOP_FAMC</code><br>
1271 <td valign="top"><code>FAMC</code><br>
1273 <td valign="top"><code>ELT_SUB_INDIV_ADOP</code><br>
1275 <td valign="top"><code>STRING</code><br>
1279 <td valign="top"><code>ELT_SUB_INDIV_ADOP_FAMC_ADOP</code><br>
1281 <td valign="top"><code>ADOP</code><br>
1283 <td valign="top"><code>ELT_SUB_INDIV_ADOP_FAMC</code><br>
1285 <td valign="top"><code>STRING</code><br>
1289 <td valign="top"><code>ELT_SUB_INDIV_EVEN</code><br>
1291 <td valign="top"><code>EVEN</code><br>
1293 <td valign="top"><code>REC_INDI</code><br>
1295 <td valign="top"><code>NULL</code><br>
1299 <td valign="top"><code>ELT_SUB_LIO_BAPL</code><br>
1301 <td valign="top"><code>BAPL, CONL, ENDL</code><br>
1303 <td valign="top"><code>REC_INDI</code><br>
1305 <td valign="top"><code>NULL</code><br>
1309 <td valign="top"><code>ELT_SUB_LIO_BAPL_STAT</code><br>
1311 <td valign="top"><code>STAT</code><br>
1313 <td valign="top"><code></code><code>ELT_SUB_LIO_BAPL,<br>
1314 ELT_SUB_LIO_SLGC<br>
1317 <td valign="top"><code>STRING</code><br>
1321 <td valign="top"><code>ELT_SUB_LIO_BAPL_DATE</code><br>
1323 <td valign="top"><code>DATE</code><br>
1325 <td valign="top"><code>ELT_SUB_LIO_BAPL</code><code>,<br>
1326 ELT_SUB_LIO_SLGC<br>
1330 <td valign="top"><code>DATE</code><br>
1334 <td valign="top"><code>ELT_SUB_LIO_BAPL_TEMP</code><br>
1336 <td valign="top"><code>TEMP</code><br>
1338 <td valign="top"><code>ELT_SUB_LIO_BAPL</code><code>,<br>
1339 ELT_SUB_LIO_SLGC<br>
1343 <td valign="top"><code>STRING</code><br>
1347 <td valign="top"><code>ELT_SUB_LIO_BAPL_PLAC</code><br>
1349 <td valign="top"><code>PLAC</code><br>
1351 <td valign="top"><code>ELT_SUB_LIO_BAPL</code><code>,<br>
1352 ELT_SUB_LIO_SLGC<br>
1356 <td valign="top"><code>STRING</code><br>
1360 <td valign="top"><code>ELT_SUB_LIO_SLGC</code><br>
1362 <td valign="top"><code>SLGC</code><br>
1364 <td valign="top"><code>REC_INDI</code><br>
1366 <td valign="top"><code>NULL</code><br>
1370 <td valign="top"><code>ELT_SUB_LIO_SLGC_FAMC</code><br>
1372 <td valign="top"><code>FAMC</code><br>
1374 <td valign="top"><code>ELT_SUB_LIO_SLGC</code><br>
1376 <td valign="top"><code>STRING</code><br>
1380 <td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
1382 <td valign="top"><code>SLGS</code><br>
1384 <td valign="top"><code>REC_FAM</code><br>
1386 <td valign="top"><code>NULL</code><br>
1390 <td valign="top"><code>ELT_SUB_LSS_SLGS_STAT</code><br>
1392 <td valign="top"><code>STAT</code><br>
1394 <td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
1396 <td valign="top"><code>STRING</code><br>
1400 <td valign="top"><code>ELT_SUB_LSS_SLGS_DATE</code><br>
1402 <td valign="top"><code>DATE</code><br>
1404 <td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
1406 <td valign="top"><code>DATE</code><br>
1410 <td valign="top"><code>ELT_SUB_LSS_SLGS_TEMP</code><br>
1412 <td valign="top"><code>TEMP</code><br>
1414 <td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
1416 <td valign="top"><code>STRING</code><br>
1420 <td valign="top"><code>ELT_SUB_LSS_SLGS_PLAC</code><br>
1422 <td valign="top"><code>PLAC</code><br>
1424 <td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
1426 <td valign="top"><code>STRING</code><br>
1430 <td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
1432 <td valign="top"><code>OBJE</code><br>
1434 <td valign="top"><code>REC_FAM, REC_INDI,<br>
1435 REC_SOUR, REC_SUBM,<br>
1436 </code><code>ELT_SUB_FAM_EVT,<br>
1437 ELT_SUB_FAM_EVT_EVEN,<br>
1438 ELT_SUB_INDIV_ATTR,<br>
1439 ELT_SUB_INDIV_RESI</code><code>,<br>
1440 ELT_SUB_INDIV_BIRT,<br>
1441 ELT_SUB_INDIV_GEN,<br>
1442 ELT_SUB_INDIV_ADOP,<br>
1443 ELT_SUB_SOUR</code><br>
1445 <td valign="top"><code>NULL</code><br>
1449 <td valign="top"><code>ELT_SUB_MULTIM_OBJE_FORM</code><br>
1451 <td valign="top"><code>FORM</code><br>
1453 <td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
1455 <td valign="top"><code>STRING</code><br>
1459 <td valign="top"><code>ELT_SUB_MULTIM_OBJE_TITL</code><br>
1461 <td valign="top"><code>TITL</code><br>
1463 <td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
1465 <td valign="top"><code>STRING</code><br>
1469 <td valign="top"><code>ELT_SUB_MULTIM_OBJE_FILE</code><br>
1471 <td valign="top"><code>FILE</code><br>
1473 <td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
1475 <td valign="top"><code>STRING</code><br>
1479 <td valign="top"><code>ELT_SUB_NOTE</code><br>
1481 <td valign="top"><code>NOTE</code><br>
1483 <td valign="top"><code>REC_FAM, REC_INDI,<br>
1484 REC_OBJE, REC_REPO,<br>
1485 REC_SOUR, ELT_SOUR_DATA,<br>
1486 ELT_SUB_ASSO, ELT_SUB_CHAN,<br>
1487 ELT_SUB_FAMC, </code><code>ELT_SUB_FAM_EVT,<br>
1488 ELT_SUB_FAM_EVT_EVEN,<br>
1489 ELT_SUB_INDIV_ATTR,<br>
1490 ELT_SUB_INDIV_RESI</code><code>,<br>
1491 ELT_SUB_INDIV_BIRT,<br>
1492 ELT_SUB_INDIV_GEN,<br>
1493 ELT_SUB_INDIV_ADOP,<br>
1494 ELT_SUB_LIO_BAPL,<br>
1495 ELT_SUB_LIO_SLGC,<br>
1496 ELT_SUB_LSS_SLGS,<br>
1497 ELT_SUB_MULTIM_OBJE,<br>
1498 ELT_SUB_PERS_NAME,<br>
1502 ELT_SUB_FAMS</code><br>
1504 <td valign="top"><code>NULL<br>
1509 <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1511 <td valign="top"><code>NAME</code><br>
1513 <td valign="top"><code>REC_INDI</code><br>
1515 <td valign="top"><code>STRING</code><br>
1519 <td valign="top"><code>ELT_SUB_PERS_NAME_NPFX</code><br>
1521 <td valign="top"><code>NPFX</code><br>
1523 <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1525 <td valign="top"><code>STRING</code><br>
1529 <td valign="top"><code>ELT_SUB_PERS_NAME_GIVN</code><br>
1531 <td valign="top"><code>GIVN</code><br>
1533 <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1535 <td valign="top"><code>STRING</code><br>
1539 <td valign="top"><code>ELT_SUB_PERS_NAME_NICK</code><br>
1541 <td valign="top"><code>NICK</code><br>
1543 <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1545 <td valign="top"><code>STRING</code><br>
1549 <td valign="top"><code>ELT_SUB_PERS_NAME_SPFX</code><br>
1551 <td valign="top"><code>SPFX</code><br>
1553 <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1555 <td valign="top"><code>STRING</code><br>
1559 <td valign="top"><code>ELT_SUB_PERS_NAME_SURN</code><br>
1561 <td valign="top"><code>SURN</code><br>
1563 <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1565 <td valign="top"><code>STRING</code><br>
1569 <td valign="top"><code>ELT_SUB_PERS_NAME_NSFX</code><br>
1571 <td valign="top"><code>NSFX</code><br>
1573 <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1575 <td valign="top"><code>STRING</code><br>
1579 <td valign="top"><code>ELT_SUB_PLAC</code><br>
1581 <td valign="top"><code>PLAC</code><br>
1583 <td valign="top"><code>ELT_SUB_FAM_EVT</code>,<br>
1584 <code>ELT_SUB_FAM_EVT_EVEN,<br>
1585 ELT_SUB_INDIV_ATTR,<br>
1586 ELT_SUB_INDIV_RESI</code><br>
1588 <td valign="top"><code>STRING</code><br>
1592 <td valign="top"><code>ELT_SUB_PLAC_FORM</code><br>
1594 <td valign="top"><code>FORM</code><br>
1596 <td valign="top"><code>ELT_SUB_PLAC</code><br>
1598 <td valign="top"><code>STRING</code><br>
1602 <td valign="top"><code>ELT_SUB_SOUR</code><br>
1604 <td valign="top"><code>SOUR</code><br>
1606 <td valign="top"><code>REC_FAM, REC_INDI,<br>
1607 REC_NOTE, ELT_SUB_ASSO<br>
1608 </code><code>ELT_SUB_FAM_EVT,<br>
1609 </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
1610 ELT_SUB_INDIV_ATTR,<br>
1611 ELT_SUB_INDIV_RESI</code><code>,<br>
1612 ELT_SUB_INDIV_BIRT,<br>
1613 ELT_SUB_INDIV_GEN,<br>
1614 ELT_SUB_INDIV_ADOP,<br>
1615 ELT_SUB_LIO_BAPL,<br>
1616 ELT_SUB_LIO_SLGC,<br>
1617 ELT_SUB_LSS_SLGS,<br>
1619 ELT_SUB_PERS_NAME,<br>
1620 ELT_SUB_PLAC</code><br>
1622 <td valign="top"><code>STRING</code><br>
1626 <td valign="top"><code>ELT_SUB_SOUR_PAGE</code><br>
1628 <td valign="top"><code>PAGE</code><br>
1630 <td valign="top"><code>ELT_SUB_SOUR</code><br>
1632 <td valign="top"><code>STRING</code><br>
1636 <td valign="top"><code>ELT_SUB_SOUR_EVEN</code><br>
1638 <td valign="top"><code>EVEN</code><br>
1640 <td valign="top"><code>ELT_SUB_SOUR</code><br>
1642 <td valign="top"><code>STRING</code><br>
1646 <td valign="top"><code>ELT_SUB_SOUR_EVEN_ROLE</code><br>
1648 <td valign="top"><code>ROLE</code><br>
1650 <td valign="top"><code>ELT_SUB_SOUR_EVEN</code><br>
1652 <td valign="top"><code>STRING</code><br>
1656 <td valign="top"><code>ELT_SUB_SOUR_DATA</code><br>
1658 <td valign="top"><code>DATA</code><br>
1660 <td valign="top"><code>ELT_SUB_SOUR</code><br>
1662 <td valign="top"><code>NULL</code><br>
1666 <td valign="top"><code>ELT_SUB_SOUR_DATA_DATE</code><br>
1668 <td valign="top"><code>DATE</code><br>
1670 <td valign="top"><code>ELT_SUB_SOUR_DATA</code><br>
1672 <td valign="top"><code>DATE</code><br>
1676 <td valign="top"><code>ELT_SUB_SOUR_TEXT</code><br>
1678 <td valign="top"><code>TEXT</code><br>
1680 <td valign="top"><code>ELT_SUB_SOUR<br>
1681 ELT_SUB_SOUR_DATA</code><br>
1683 <td valign="top"><code>STRING</code><br>
1687 <td valign="top"><code>ELT_SUB_SOUR_QUAY</code><br>
1689 <td valign="top"><code>QUAY</code><br>
1691 <td valign="top"><code>ELT_SUB_SOUR</code><br>
1693 <td valign="top"><code>STRING</code><br>
1697 <td valign="top"><code>ELT_SUB_REPO</code><br>
1699 <td valign="top"><code>REPO</code><br>
1701 <td valign="top"><code>REC_SOUR</code><br>
1703 <td valign="top"><code>STRING</code><br>
1707 <td valign="top"><code>ELT_SUB_REPO_CALN</code><br>
1709 <td valign="top"><code>CALN</code><br>
1711 <td valign="top"><code>ELT_SUB_REPO</code><br>
1713 <td valign="top"><code>STRING</code><br>
1717 <td valign="top"><code>ELT_SUB_REPO_CALN_MEDI</code><br>
1719 <td valign="top"><code>MEDI</code><br>
1721 <td valign="top"><code>ELT_SUB_REPO_CALN</code><br>
1723 <td valign="top"><code>STRING</code><br>
1727 <td valign="top"><code>ELT_SUB_FAMS</code><br>
1729 <td valign="top"><code>FAMS</code><br>
1731 <td valign="top"><code>REC_INDI</code><br>
1733 <td valign="top"><code>STRING</code><br>
1737 <td valign="top"><code>ELT_USER</code><br>
1739 <td valign="top"><code>any tag starting<br>
1740 with an underscore</code><br>
1742 <td valign="top"><code>anywhere</code><br>
1744 <td valign="top"><code>NULL<br>
1752 <hr width="100%" size="2">
1753 <h2><a name="Gedcom_val_types"></a>Gedcom_val types<br>
1755 Currently, the specific <code>Gedcom_val</code> types are (with <code>
1756 val</code> of type <code>Gedcom_val</code>):<br>
1759 <table cellpadding="2" cellspacing="2" border="1" width="100%">
1762 <td valign="top"><br>
1764 <td valign="top"><b>type checker</b><br>
1766 <td valign="top"><b>cast operator</b><br>
1770 <td valign="top">null value<br>
1772 <td valign="top"><code>GEDCOM_IS_NULL(val)</code><br>
1774 <td valign="top">N/A<br>
1778 <td valign="top">string<br>
1780 <td valign="top"><code>GEDCOM_IS_STRING(val)</code><br>
1782 <td valign="top"><code>char* str = GEDCOM_STRING(val);</code><br>
1786 <td valign="top">date<br>
1788 <td valign="top"><code>GEDCOM_IS_DATE(val)</code><br>
1790 <td valign="top"><code>struct date_value dv = GEDCOM_DATE(val);</code></td>
1797 The type checker returns a true or a false value according to the type
1798 of the value, but this is in principle only necessary in the rare circumstances
1799 that two types are possible, or where an optional value can be provided.
1800 In most cases, the type is fixed for a specific tag.<br>
1802 The null value is used for when the GEDCOM spec doesn't allow a value,
1803 or when an optional value is allowed but none is given.<br>
1805 The string value is the most general used value currently, for all those
1806 values that don't have a more specific meaning. In essence, the value
1807 that is returned by GEDCOM_STRING is always the same as the raw_value passed
1808 to the start callback, and is thus in fact redundant.<br>
1810 The date value is used for all elements that return a date.<br>
1813 <h3><a name="struct_date_value"></a>struct date_value</h3>
1814 This struct describes a date as given in the GEDCOM file, and has the
1815 following definition:<br>
1817 <blockquote><code>struct date_value {<br>
1818 Date_value_type type;<br>
1819 struct date date1;<br>
1820 struct date date2;<br>
1821 char phrase[MAX_PHRASE_LEN
1825 It depends on the first member, the type, which members are actually
1829 <table cellpadding="2" cellspacing="2" border="1" width="100%">
1832 <td valign="top" align="center"><b>Date_value_type</b><br>
1834 <td valign="top" align="center"><b>Meaning</b><br>
1836 <td valign="top" align="center"><b>Relevant members</b><br>
1840 <td valign="top"><code>DV_NO_MODIFIER</code><br>
1842 <td valign="top">just a simple date<br>
1844 <td valign="top">date1<br>
1848 <td valign="top"><code>DV_BEFORE</code><br>
1850 <td valign="top">a range (BEFORE date1)<br>
1852 <td valign="top">date1<br>
1856 <td valign="top"><code>DV_AFTER</code><br>
1858 <td valign="top">a range (AFTER date1)<br>
1860 <td valign="top">date1<br>
1864 <td valign="top"><code>DV_BETWEEN</code><br>
1866 <td valign="top">a range (BETWEEN date1 AND date2)<br>
1868 <td valign="top">date1, date2<br>
1872 <td valign="top"><code>DV_FROM</code><br>
1874 <td valign="top">a period (FROM date1)<br>
1876 <td valign="top">date1<br>
1880 <td valign="top"><code>DV_TO</code><br>
1882 <td valign="top">a period (TO date1)<br>
1884 <td valign="top">date1<br>
1888 <td valign="top"><code>DV_FROM_TO</code><br>
1890 <td valign="top">a period (FROM date1 TO date2)<br>
1892 <td valign="top">date1, date2<br>
1896 <td valign="top"><code>DV_ABOUT</code><br>
1898 <td valign="top">an approximation (ABOUT date1)<br>
1900 <td valign="top">date1<br>
1904 <td valign="top"><code>DV_CALCULATED</code><br>
1906 <td valign="top">an approximation (CALCULATED date1)<br>
1908 <td valign="top">date1<br>
1912 <td valign="top"><code>DV_ESTIMATED</code><br>
1914 <td valign="top">an approximation (ESTIMATED date1)<br>
1916 <td valign="top">date1<br>
1920 <td valign="top"><code>DV_INTERPRETED</code><br>
1922 <td valign="top">INTERPRETED date1 FROM a given free form date
1925 <td valign="top">date1, phrase<br>
1929 <td valign="top"><code>DV_PHRASE</code><br>
1931 <td valign="top">a free form date phrase<br>
1933 <td valign="top">phrase<br>
1941 <h3><a name="struct_date"></a>struct date<br>
1943 The <code>date1</code> and <code>date2</code> also have a strict syntax:<br>
1945 <blockquote><code>struct date {<br>
1946 Calendar_type cal;<br>
1947 char day_str[MAX_DAY_LEN + 1];<br>
1948 char month_str[MAX_MONTH_LEN
1950 char year_str[MAX_YEAR_LEN +
1953 int day;<br>
1954 int month;<br>
1955 int year;<br>
1956 Year_type year_type;<br>
1958 Date_type type;<br>
1959 long int sdn1;<br>
1960 long int sdn2;<br>
1963 The first four fields are the primary fields parsed from the value in
1964 the GEDCOM file. The <code>day_str</code>, <code>month_str</code>
1965 and <code> year_str</code> are the literal parts of the date that denote
1966 the day, month and year (the <code>day_str</code> and <code>month_str</code>
1967 can be empty) . The calendar type <code>cal</code> is one of (see
1968 calendar overview <i>LINK TBD</i>):<br>
1971 <li><code>CAL_GREGORIAN</code> : the Gregorian calendar</li>
1972 <li><code>CAL_JULIAN</code> : the Julian calendar</li>
1973 <li><code>CAL_HEBREW</code> : the Hebrew (Jewish) calendar</li>
1974 <li><code>CAL_FRENCH_REV</code> : the calendar used after the French
1976 <li><code>CAL_UNKNOWN</code> : an unknown calendar type</li>
1979 The next four fields are deduced from the first four:<br>
1982 <li>the <code>day</code> is just the numeric representation of the
1983 <code>day_str</code> (starting from 1), -1 if the <code>day_str</code>
1985 <li>the <code>month</code> is the month number of <code>month_str</code>
1986 in the given calendar type (also starting from 1), -1 if the <code>month_str</code>
1988 <li>the <code>year</code> is the numeric representation of the <code>
1989 year_str</code></li>
1992 It is possible that the <code>year_str</code> is given as e.g. "1677/78".
1993 This is coming from a date in a so called "annunciation style", where
1994 the year began on 25 March: "20 March 1677/78" is 20 March 1677 in "annunciation
1995 style" and 20 March 1678 in "circumcision style" (the current style). See
1996 calendar overview (<i>LINK TBD</i>).<br>
1998 In this case, the <code>year</code> will contain the "circumcision style"
1999 year (1678 in the example), and <code>year_type</code> will be <code>YEAR_DOUBLE.</code>
2000 Normal dates will have a <code>year_type</code> equal to <code>
2001 YEAR_SINGLE</code> .<br>
2003 Finally, the last three fields are probably the most interesting values
2004 for applications that want to process dates. Basically, the date is
2005 converted to a serial day number (aka Julian day), which is the unique day
2006 number since November 25, 4714 BC in the Gregorian calendar. The advantage
2007 of these day numbers is that they are unique and independent of the calendar
2008 system. Furthermore, date differences can just be computed by subtracting
2009 the serial day numbers.<br>
2011 However, since dates in GEDCOM are not necessarily exact (e.g. "MAR 1990"),
2012 it is not possible to represent all GEDCOM dates with 1 serial day number.
2013 Two cases can be distinguished:<br>
2016 <li>Exact dates (e.g. "25 MAR 1990"):</li>
2021 <blockquote>These are represented by a serial day number in <code>sdn1</code>
2022 and a <code>Date_type</code> equal to <code>DATE_EXACT</code>.<br>
2027 <li>Incomplete dates (e.g. "MAR 1990"):</li>
2032 <blockquote>These are represented by 2 serial day numbers (<code>
2033 sdn1</code> and <code>sdn2</code>) and a <code>Date_type</code> equal to
2034 <code>DATE_BOUNDED</code>.<br>
2036 For example, the Gregorian date "MAR 1990" is represented by the serial
2037 day numbers for "1 MAR 1990" and "31 MAR 1990", and the Gregorian date "1990"
2038 is represented by the serial day numbers for "1 JAN 1990" and "31 DEC 1990".
2039 Similarly for the other calendar types.<br>
2044 <hr width="100%" size="2">
2045 <pre>$Id$<br>$Name$<br></pre>