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>
20 <li><a href="#struct_date_value">struct date_value</a></li>
21 <li><a href="#struct_date">struct date</a><br>
28 <hr width="100%" size="2">
29 <h2><a name="Record_identifiers"></a>Record identifiers</h2>
30 The following table describes the identifiers to be used in the record callbacks.
31 The last column gives the <a href="#Gedcom_val_types"><code>Gedcom_val</code>
32 type</a> of the <code>xref</code> argument in the header start callback.<br>
35 <table width="100%" border="1" cellspacing="2" cellpadding="2">
38 <td valign="top" align="center"><b>Record</b><br>
40 <td valign="top" align="center"><b>Meaning</b><br>
42 <td valign="top" align="center"><b>Possible<br>
43 <code>xref</code> types</b><br>
47 <td valign="top"><code>REC_HEAD</code><br>
49 <td valign="top">The header of the GEDCOM file<br>
51 <td valign="top"><code>NULL</code><br>
55 <td valign="top"><code>REC_FAM</code><br>
57 <td valign="top">A record describing a family<br>
59 <td valign="top"><code>STRING</code><br>
63 <td valign="top"><code>REC_INDI</code><br>
65 <td valign="top">A record describing an individual<br>
67 <td valign="top"><code>STRING</code><br>
71 <td valign="top"><code>REC_OBJE</code><br>
73 <td valign="top">A record describing a multimedia object<br>
75 <td valign="top"><code>STRING</code><br>
79 <td valign="top"><code>REC_NOTE</code><br>
81 <td valign="top">A record describing a note<br>
83 <td valign="top"><code>STRING</code><br>
87 <td valign="top"><code>REC_REPO</code><br>
89 <td valign="top">A record describing a source repository<br>
91 <td valign="top"><code>STRING</code><br>
95 <td valign="top"><code>REC_SOUR</code><br>
97 <td valign="top">A record describing a source<br>
99 <td valign="top"><code>STRING</code><br>
103 <td valign="top"><code>REC_SUBN</code><br>
105 <td valign="top">A record describing the submission<br>
107 <td valign="top"><code>STRING</code><br>
111 <td valign="top"><code>REC_SUBM</code><br>
113 <td valign="top">A record describing the submitter<br>
115 <td valign="top"><code>STRING</code><br>
119 <td valign="top"><code>REC_USER</code><br>
121 <td valign="top">An application-specific record (the <code>tag</code>
122 in the start callback contains the actually used tag).<br>
124 <td valign="top"><code>NULL</code><br>
125 <code>STRING</code><br>
132 <hr width="100%" size="2">
133 <h2><a name="Element_identifiers"></a>Element identifiers</h2>
134 The following table describes the identifiers to be used in the element callbacks.
135 The last column gives the <a href="file:///home/verthezp/src/external/gedcom-parse/doc/interface.html#Gedcom_val_types"><code>
136 Gedcom_val</code> type</a> of the <code>val</code> argument in the element
137 start callback. (TO BE COMPLETED)<br>
139 <table cellpadding="2" cellspacing="2" border="1" width="100%">
142 <td valign="top" align="center"><b>Element</b><br>
144 <td valign="top" align="center"><b>Possible<br>
148 <td valign="top" align="center"><b>Used within</b><br>
150 <td valign="top" align="center"><b>Possible<br>
151 <code>val</code> types<br>
156 <td valign="top"><code>ELT_HEAD_SOUR</code><br>
158 <td valign="top"><code>SOUR</code><br>
160 <td valign="top"><code>REC_HEAD</code><br>
162 <td valign="top"><code>STRING</code><br>
166 <td valign="top"><code>ELT_HEAD_SOUR_VERS</code><br>
168 <td valign="top"><code>VERS</code><br>
170 <td valign="top"><code>ELT_HEAD_SOUR</code><br>
172 <td valign="top"><code>STRING</code><br>
176 <td valign="top"><code>ELT_HEAD_SOUR_NAME</code><br>
178 <td valign="top"><code>NAME</code><br>
180 <td valign="top"><code>ELT_HEAD_SOUR</code><br>
182 <td valign="top"><code>STRING</code><br>
186 <td valign="top"><code>ELT_HEAD_SOUR_CORP</code><br>
188 <td valign="top"><code>CORP</code><br>
190 <td valign="top"><code>ELT_HEAD_SOUR</code><br>
192 <td valign="top"><code>STRING</code><br>
196 <td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
198 <td valign="top"><code>DATA</code><br>
200 <td valign="top"><code>ELT_HEAD_SOUR</code><br>
202 <td valign="top"><code>STRING</code><br>
206 <td valign="top"><code>ELT_HEAD_SOUR_DATA_DATE</code><br>
208 <td valign="top"><code>DATE</code><br>
210 <td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
212 <td valign="top"><code>DATE</code><br>
216 <td valign="top"><code>ELT_HEAD_SOUR_DATA_COPR</code><br>
218 <td valign="top"><code>COPR</code><br>
220 <td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
222 <td valign="top"><code>STRING</code><br>
226 <td valign="top"><code>ELT_HEAD_DEST</code><br>
228 <td valign="top"><code>DEST</code><br>
230 <td valign="top"><code>REC_HEAD</code><br>
232 <td valign="top"><code>STRING</code><br>
236 <td valign="top"><code>ELT_HEAD_DATE</code><br>
238 <td valign="top"><code>DATE</code><br>
240 <td valign="top"><code>REC_HEAD</code><br>
242 <td valign="top"><code>DATE</code><br>
246 <td valign="top"><code>ELT_HEAD_DATE_TIME</code><br>
248 <td valign="top"><code>TIME</code><br>
250 <td valign="top"><code>ELT_HEAD_DATE</code><br>
252 <td valign="top"><code>STRING</code><br>
256 <td valign="top"><code>ELT_HEAD_SUBM</code><br>
258 <td valign="top"><code>SUBM</code><br>
260 <td valign="top"><code>REC_HEAD</code><br>
262 <td valign="top"><code>STRING</code><br>
266 <td valign="top"><code>ELT_HEAD_SUBN</code><br>
268 <td valign="top"><code>SUBN</code><br>
270 <td valign="top"><code>REC_HEAD</code><br>
272 <td valign="top"><code>STRING</code><br>
276 <td valign="top"><code>ELT_HEAD_FILE</code><br>
278 <td valign="top"><code>FILE</code><br>
280 <td valign="top"><code>REC_HEAD</code><br>
282 <td valign="top"><code>STRING</code><br>
286 <td valign="top"><code>ELT_HEAD_COPR</code><br>
288 <td valign="top"><code>COPR</code><br>
290 <td valign="top"><code>REC_HEAD</code><br>
292 <td valign="top"><code>STRING</code><br>
296 <td valign="top"><code>ELT_HEAD_GEDC</code><br>
298 <td valign="top"><code>GEDC</code><br>
300 <td valign="top"><code>REC_HEAD</code><br>
302 <td valign="top"><code>NULL</code><br>
306 <td valign="top"><code>ELT_HEAD_GEDC_VERS</code><br>
308 <td valign="top"><code>VERS</code><br>
310 <td valign="top"><code>ELT_HEAD_GEDC</code><br>
312 <td valign="top"><code>STRING</code><br>
316 <td valign="top"><code>ELT_HEAD_GEDC_FORM</code><br>
318 <td valign="top"><code>FORM</code><br>
320 <td valign="top"><code>ELT_HEAD_GEDC</code><br>
322 <td valign="top"><code>STRING</code><br>
326 <td valign="top"><code>ELT_HEAD_CHAR</code><br>
328 <td valign="top"><code>CHAR</code><br>
330 <td valign="top"><code>REC_HEAD</code><br>
332 <td valign="top"><code>STRING</code><br>
336 <td valign="top"><code>ELT_HEAD_CHAR_VERS</code><br>
338 <td valign="top"><code>VERS</code><br>
340 <td valign="top"><code>ELT_HEAD_CHAR</code><br>
342 <td valign="top"><code>STRING</code><br>
346 <td valign="top"><code>ELT_HEAD_LANG</code><br>
348 <td valign="top"><code>LANG</code><br>
350 <td valign="top"><code>REC_HEAD</code><br>
352 <td valign="top"><code>STRING</code><br>
356 <td valign="top"><code>ELT_HEAD_PLAC</code><br>
358 <td valign="top"><code>PLAC</code><br>
360 <td valign="top"><code>REC_HEAD</code><br>
362 <td valign="top"><code>NULL</code><br>
366 <td valign="top"><code>ELT_HEAD_PLAC_FORM</code><br>
368 <td valign="top"><code>FORM</code><br>
370 <td valign="top"><code>ELT_HEAD_PLAC</code><br>
372 <td valign="top"><code>STRING</code><br>
376 <td valign="top"><code>ELT_HEAD_NOTE</code><br>
378 <td valign="top"><code>NOTE</code><br>
380 <td valign="top"><code>REC_HEAD</code><br>
382 <td valign="top"><code>STRING</code><br>
386 <td valign="top"><code>ELT_FAM_HUSB</code><br>
388 <td valign="top"><code>HUSB</code><br>
390 <td valign="top"><code>REC_FAM</code><br>
392 <td valign="top"><code>STRING</code><br>
396 <td valign="top"><code>ELT_FAM_WIFE</code><br>
398 <td valign="top"><code>WIFE</code><br>
400 <td valign="top"><code>REC_FAM</code><br>
402 <td valign="top"><code>STRING</code><br>
406 <td valign="top"><code>ELT_FAM_CHIL</code><br>
408 <td valign="top"><code>CHIL</code><br>
410 <td valign="top"><code>REC_FAM</code><br>
412 <td valign="top"><code>STRING</code><br>
416 <td valign="top"><code>ELT_FAM_NCHI</code><br>
418 <td valign="top"><code>NCHI</code><br>
420 <td valign="top"><code>REC_FAM</code><br>
422 <td valign="top"><code>STRING</code><br>
426 <td valign="top"><code>ELT_FAM_SUBM</code><br>
428 <td valign="top"><code>SUBM</code><br>
430 <td valign="top"><code>REC_FAM</code><br>
432 <td valign="top"><code>STRING</code><br>
436 <td valign="top"><code>ELT_INDI_RESN</code><br>
438 <td valign="top"><code>RES</code><code>N</code><br>
440 <td valign="top"><code>REC_INDI</code><br>
442 <td valign="top"><code>STRING</code><br>
446 <td valign="top"><code>ELT_INDI_SEX</code><br>
448 <td valign="top"><code>SEX</code><br>
450 <td valign="top"><code>REC_INDI</code><br>
452 <td valign="top"><code>STRING</code><br>
456 <td valign="top"><code>ELT_INDI_SUBM</code><br>
458 <td valign="top"><code>SUBM</code><br>
460 <td valign="top"><code>REC_INDI</code><br>
462 <td valign="top"><code>STRING</code><br>
466 <td valign="top"><code>ELT_INDI_ALIA</code><br>
468 <td valign="top"><code>ALIA</code><br>
470 <td valign="top"><code>REC_INDI</code><br>
472 <td valign="top"><code>STRING</code><br>
476 <td valign="top"><code>ELT_INDI_ANCI</code><br>
478 <td valign="top"><code>ANCI</code><br>
480 <td valign="top"><br>
482 <td valign="top"><code>STRING</code><br>
486 <td valign="top"><code>ELT_INDI_DESI</code><br>
488 <td valign="top"><code>DESI</code><br>
490 <td valign="top"><br>
492 <td valign="top"><code>STRING</code><br>
496 <td valign="top"><code>ELT_INDI_RFN</code><br>
498 <td valign="top"><code>RFN</code><br>
500 <td valign="top"><br>
502 <td valign="top"><code>STRING</code><br>
506 <td valign="top"><code>ELT_INDI_AFN</code><br>
508 <td valign="top"><code>AFN</code><br>
510 <td valign="top"><br>
512 <td valign="top"><code>STRING</code><br>
516 <td valign="top"><code>ELT_OBJE_FORM</code><br>
518 <td valign="top"><code>FORM</code><br>
520 <td valign="top"><br>
522 <td valign="top"><code>STRING</code><br>
526 <td valign="top"><code>ELT_OBJE_TITL</code><br>
528 <td valign="top"><code>TITL</code><br>
530 <td valign="top"><br>
532 <td valign="top"><code>STRING</code><br>
536 <td valign="top"><code>ELT_OBJE_BLOB</code><br>
538 <td valign="top"><code>BLOB</code><br>
540 <td valign="top"><br>
542 <td valign="top"><code>NULL</code><br>
546 <td valign="top"><code>ELT_OBJE_BLOB_CONT</code><br>
548 <td valign="top"><code>CONT</code><br>
550 <td valign="top"><br>
552 <td valign="top"><code>STRING</code><br>
556 <td valign="top"><code>ELT_OBJE_OBJE</code><br>
558 <td valign="top"><code>OBJE</code><br>
560 <td valign="top"><br>
562 <td valign="top"><code>STRING</code><br>
566 <td valign="top"><code>ELT_REPO_NAME</code><br>
568 <td valign="top"><code>NAME</code><br>
570 <td valign="top"><br>
572 <td valign="top"><code>STRING</code><br>
576 <td valign="top"><code>ELT_SOUR_DATA</code><br>
578 <td valign="top"><code>DATA</code><br>
580 <td valign="top"><br>
582 <td valign="top"><code>NULL</code><br>
586 <td valign="top"><code>ELT_SOUR_DATA_EVEN</code><br>
588 <td valign="top"><code>EVEN</code><br>
590 <td valign="top"><br>
592 <td valign="top"><code>STRING</code><br>
596 <td valign="top"><code>ELT_SOUR_DATA_EVEN_DATE</code><br>
598 <td valign="top"><code>DATE</code><br>
600 <td valign="top"><br>
602 <td valign="top"><code>DATE</code><br>
606 <td valign="top"><code>ELT_SOUR_DATA_EVEN_PLAC</code><br>
608 <td valign="top"><code>PLAC</code><br>
610 <td valign="top"><br>
612 <td valign="top"><code>STRING</code><br>
616 <td valign="top"><code>ELT_SOUR_DATA_AGNC</code><br>
618 <td valign="top"><code>AGNC</code><br>
620 <td valign="top"><br>
622 <td valign="top"><code>STRING</code><br>
626 <td valign="top"><code>ELT_SOUR_AUTH</code><br>
628 <td valign="top"><code>AUTH</code><br>
630 <td valign="top"><br>
632 <td valign="top"><code>STRING</code><br>
636 <td valign="top"><code>ELT_SOUR_TITL</code><br>
638 <td valign="top"><code>TITL</code><br>
640 <td valign="top"><br>
642 <td valign="top"><code>STRING</code><br>
646 <td valign="top"><code>ELT_SOUR_ABBR</code><br>
648 <td valign="top"><code>ABBR</code><br>
650 <td valign="top"><br>
652 <td valign="top"><code>STRING</code><br>
656 <td valign="top"><code>ELT_SOUR_PUBL</code><br>
658 <td valign="top"><code>PUBL</code><br>
660 <td valign="top"><br>
662 <td valign="top"><code>STRING</code><br>
666 <td valign="top"><code>ELT_SOUR_TEXT</code><br>
668 <td valign="top"><code>TEXT</code><br>
670 <td valign="top"><br>
672 <td valign="top"><code>STRING</code><br>
676 <td valign="top"><code>ELT_SUBN_SUBM</code><br>
678 <td valign="top"><code>SUBM</code><br>
680 <td valign="top"><br>
682 <td valign="top"><code>STRING</code><br>
686 <td valign="top"><code>ELT_SUBN_FAMF</code><br>
688 <td valign="top"><code>FAMF</code><br>
690 <td valign="top"><br>
692 <td valign="top"><code>STRING</code><br>
696 <td valign="top"><code>ELT_SUBN_TEMP</code><br>
698 <td valign="top"><code>TEMP</code><br>
700 <td valign="top"><br>
702 <td valign="top"><code>STRING</code><br>
706 <td valign="top"><code>ELT_SUBN_ANCE</code><br>
708 <td valign="top"><code>ANCE</code><br>
710 <td valign="top"><br>
712 <td valign="top"><code>STRING</code><br>
716 <td valign="top"><code>ELT_SUBN_DESC</code><br>
718 <td valign="top"><code>DESC</code><br>
720 <td valign="top"><br>
722 <td valign="top"><code>STRING</code><br>
726 <td valign="top"><code>ELT_SUBN_ORDI</code><br>
728 <td valign="top"><code>ORDI</code><br>
730 <td valign="top"><br>
732 <td valign="top"><code>STRING</code><br>
736 <td valign="top"><code>ELT_SUBN_RIN</code><br>
738 <td valign="top"><code>RIN</code><br>
740 <td valign="top"><br>
742 <td valign="top"><code>STRING</code><br>
746 <td valign="top"><code>ELT_SUBM_NAME</code><br>
748 <td valign="top"><nobr><code>NAME</code></nobr><br>
750 <td valign="top"><br>
752 <td valign="top"><code>STRING</code><br>
756 <td valign="top"><code>ELT_SUBM_LANG</code><br>
758 <td valign="top"><code>LANG</code><br>
760 <td valign="top"><br>
762 <td valign="top"><code>STRING</code><br>
766 <td valign="top"><code>ELT_SUBM_RFN</code><br>
768 <td valign="top"><code>RFN</code><br>
770 <td valign="top"><br>
772 <td valign="top"><code>STRING</code><br>
776 <td valign="top"><code>ELT_SUBM_RIN</code><br>
778 <td valign="top"><code>RIN</code><br>
780 <td valign="top"><br>
782 <td valign="top"><code>STRING</code><br>
786 <td valign="top"><code>ELT_SUB_ADDR</code><br>
788 <td valign="top"><code>ADDR</code><br>
790 <td valign="top"><br>
792 <td valign="top"><code>STRING</code><br>
796 <td valign="top"><code>ELT_SUB_ADDR_CONT</code><br>
798 <td valign="top"><code>CONT</code><br>
800 <td valign="top"><br>
802 <td valign="top"><code>STRING</code><br>
806 <td valign="top"><code>ELT_SUB_ADDR_ADR1</code><br>
808 <td valign="top"><code>ADR1</code><br>
810 <td valign="top"><br>
812 <td valign="top"><code>STRING</code><br>
816 <td valign="top"><code>ELT_SUB_ADDR_ADR2</code><br>
818 <td valign="top"><code>ADR2</code><br>
820 <td valign="top"><br>
822 <td valign="top"><code>STRING</code><br>
826 <td valign="top"><code>ELT_SUB_ADDR_CITY</code><br>
828 <td valign="top"><code>CITY</code><br>
830 <td valign="top"><br>
832 <td valign="top"><code>STRING</code><br>
836 <td valign="top"><code>ELT_SUB_ADDR_STAE</code><br>
838 <td valign="top"><code>STAE</code><br>
840 <td valign="top"><br>
842 <td valign="top"><code>STRING</code><br>
846 <td valign="top"><code>ELT_SUB_ADDR_POST</code><br>
848 <td valign="top"><code>POST</code><br>
850 <td valign="top"><br>
852 <td valign="top"><code>STRING</code><br>
856 <td valign="top"><code>ELT_SUB_ADDR_CTRY</code><br>
858 <td valign="top"><code>CTRY</code><br>
860 <td valign="top"><br>
862 <td valign="top"><code>STRING</code><br>
866 <td valign="top"><code>ELT_SUB_PHON</code><br>
868 <td valign="top"><code>PHON</code><br>
870 <td valign="top"><br>
872 <td valign="top"><code>STRING</code><br>
876 <td valign="top"><code>ELT_SUB_ASSO</code><br>
878 <td valign="top"><code>ASSO</code><br>
880 <td valign="top"><br>
882 <td valign="top"><code>STRING</code><br>
886 <td valign="top"><code>ELT_SUB_ASSO_TYPE</code><br>
888 <td valign="top"><code>TYPE</code><br>
890 <td valign="top"><br>
892 <td valign="top"><code>STRING</code><br>
896 <td valign="top"><code>ELT_SUB_ASSO_RELA</code><br>
898 <td valign="top"><code>RELA</code><br>
900 <td valign="top"><br>
902 <td valign="top"><code>STRING</code><br>
906 <td valign="top"><code>ELT_SUB_CHAN</code><br>
908 <td valign="top"><code>CHAN</code><br>
910 <td valign="top"><br>
912 <td valign="top"><code>NULL</code><br>
916 <td valign="top"><code>ELT_SUB_CHAN_DATE</code><br>
918 <td valign="top"><code>DATE</code><br>
920 <td valign="top"><br>
922 <td valign="top"><code>DATE</code><br>
926 <td valign="top"><code>ELT_SUB_CHAN_TIME</code><br>
928 <td valign="top"><code>TIME</code><br>
930 <td valign="top"><br>
932 <td valign="top"><code>STRING</code><br>
936 <td valign="top"><code>ELT_SUB_FAMC</code><br>
938 <td valign="top"><code>FAMC</code><br>
940 <td valign="top"><br>
942 <td valign="top"><code>STRING</code><br>
946 <td valign="top"><code>ELT_SUB_FAMC_PEDI</code><br>
948 <td valign="top"><code>PEDI</code><br>
950 <td valign="top"><br>
952 <td valign="top"><code>STRING</code><br>
956 <td valign="top"><code>ELT_SUB_CONT</code><br>
958 <td valign="top"><code>CONT</code><br>
960 <td valign="top"><br>
962 <td valign="top"><code>STRING</code><br>
966 <td valign="top"><code>ELT_SUB_CONC</code><br>
968 <td valign="top"><code>CONC</code><br>
970 <td valign="top"><br>
972 <td valign="top"><code>STRING</code><br>
976 <td valign="top"><code>ELT_SUB_EVT_TYPE</code><br>
978 <td valign="top"><code>TYPE</code><br>
980 <td valign="top"><br>
982 <td valign="top"><code>STRING</code><br>
986 <td valign="top"><code>ELT_SUB_EVT_DATE</code><br>
988 <td valign="top"><code>DATE</code><br>
990 <td valign="top"><br>
992 <td valign="top"><code>DATE</code><br>
996 <td valign="top"><code>ELT_SUB_EVT_AGE</code><br>
998 <td valign="top"><code>AGE</code><br>
1000 <td valign="top"><br>
1002 <td valign="top"><code>STRING</code><br>
1006 <td valign="top"><code>ELT_SUB_EVT_AGNC</code><br>
1008 <td valign="top"><code>AGNC</code><br>
1010 <td valign="top"><br>
1012 <td valign="top"><code>STRING</code><br>
1016 <td valign="top"><code>ELT_SUB_EVT_CAUS</code><br>
1018 <td valign="top"><code>CAUS</code><br>
1020 <td valign="top"><br>
1022 <td valign="top"><code>STRING</code><br>
1026 <td valign="top"><code>ELT_SUB_FAM_EVT</code><br>
1028 <td valign="top"><code>ANUL, CENS, DIV,<br>
1029 DIVF, ENGA, MARR,<br>
1030 MARB, MARC, MARL,<br>
1033 <td valign="top"><br>
1035 <td valign="top"><code>NULL<br>
1040 <td valign="top"><code>ELT_SUB_FAM_EVT_HUSB</code><br>
1042 <td valign="top"><code>HUSB</code><br>
1044 <td valign="top"><br>
1046 <td valign="top"><code>NULL</code><br>
1050 <td valign="top"><code>ELT_SUB_FAM_EVT_WIFE</code><br>
1052 <td valign="top"><code>WIFE</code><br>
1054 <td valign="top"><br>
1056 <td valign="top"><code>NULL</code><br>
1060 <td valign="top"><code>ELT_SUB_FAM_EVT_AGE</code><br>
1062 <td valign="top"><code>AGE</code><br>
1064 <td valign="top"><br>
1066 <td valign="top"><code>STRING</code><br>
1070 <td valign="top"><code>ELT_SUB_FAM_EVT_EVEN</code><br>
1072 <td valign="top"><code>EVEN</code><br>
1074 <td valign="top"><br>
1076 <td valign="top"><code>NULL</code><br>
1080 <td valign="top"><code>ELT_SUB_IDENT_REFN</code><br>
1082 <td valign="top"><code>REFN</code><br>
1084 <td valign="top"><br>
1086 <td valign="top"><code>STRING</code><br>
1090 <td valign="top"><code>ELT_SUB_IDENT_REFN_TYPE</code><br>
1092 <td valign="top"><code>TYPE</code><br>
1094 <td valign="top"><br>
1096 <td valign="top"><code>STRING</code><br>
1100 <td valign="top"><code>ELT_SUB_IDENT_RIN</code><br>
1102 <td valign="top"><code>RIN</code><br>
1104 <td valign="top"><br>
1106 <td valign="top"><code>STRING</code><br>
1110 <td valign="top"><code>ELT_SUB_INDIV_ATTR</code><br>
1112 <td valign="top"><code>CAST, DSCR, EDUC,<br>
1113 IDNO, NATI, NCHR,<br>
1114 NMR, OCCU, PROP,<br>
1115 RELI, SSN, TITL</code><br>
1117 <td valign="top"><br>
1119 <td valign="top"><code>STRING</code><br>
1123 <td valign="top"><code>ELT_SUB_INDIV_RESI</code><br>
1125 <td valign="top"><code>RESI</code><br>
1127 <td valign="top"><br>
1129 <td valign="top"><code>NULL</code><br>
1133 <td valign="top"><code>ELT_SUB_INDIV_BIRT</code><br>
1135 <td valign="top"><code>BIRT, CHR</code><br>
1137 <td valign="top"><br>
1139 <td valign="top"><code>NULL<br>
1144 <td valign="top"><code>ELT_SUB_INDIV_BIRT_FAMC</code><br>
1146 <td valign="top"><code>FAMC</code><br>
1148 <td valign="top"><br>
1150 <td valign="top"><code>STRING</code><br>
1154 <td valign="top"><code>ELT_SUB_INDIV_GEN</code><br>
1156 <td valign="top"><code>DEAT, BURI, CREM,<br>
1157 BAPM, BARM, BASM,<br>
1158 BLES, CHRA, CONF,<br>
1159 FCOM, ORDN, NATU,<br>
1160 EMIG, IMMI, CENS,<br>
1161 PROB, WILL, GRAD,<br>
1164 <td valign="top"><br>
1166 <td valign="top"><code>NULL<br>
1171 <td valign="top"><code>ELT_SUB_INDIV_ADOP</code><br>
1173 <td valign="top"><code>ADOP</code><br>
1175 <td valign="top"><br>
1177 <td valign="top"><code>NULL<br>
1182 <td valign="top"><code>ELT_SUB_INDIV_ADOP_FAMC</code><br>
1184 <td valign="top"><code>FAMC</code><br>
1186 <td valign="top"><br>
1188 <td valign="top"><code>STRING</code><br>
1192 <td valign="top"><code>ELT_SUB_INDIV_ADOP_FAMC_ADOP</code><br>
1194 <td valign="top"><code>ADOP</code><br>
1196 <td valign="top"><br>
1198 <td valign="top"><code>STRING</code><br>
1202 <td valign="top"><code>ELT_SUB_INDIV_EVEN</code><br>
1204 <td valign="top"><code>EVEN</code><br>
1206 <td valign="top"><br>
1208 <td valign="top"><code>NULL</code><br>
1212 <td valign="top"><code>ELT_SUB_LIO_BAPL</code><br>
1214 <td valign="top"><code>BAPL, CONL, ENDL</code><br>
1216 <td valign="top"><br>
1218 <td valign="top"><code>NULL</code><br>
1222 <td valign="top"><code>ELT_SUB_LIO_BAPL_STAT</code><br>
1224 <td valign="top"><code>STAT</code><br>
1226 <td valign="top"><br>
1228 <td valign="top"><code>STRING</code><br>
1232 <td valign="top"><code>ELT_SUB_LIO_BAPL_DATE</code><br>
1234 <td valign="top"><code>DATE</code><br>
1236 <td valign="top"><br>
1238 <td valign="top"><code>DATE</code><br>
1242 <td valign="top"><code>ELT_SUB_LIO_BAPL_TEMP</code><br>
1244 <td valign="top"><code>TEMP</code><br>
1246 <td valign="top"><br>
1248 <td valign="top"><code>STRING</code><br>
1252 <td valign="top"><code>ELT_SUB_LIO_BAPL_PLAC</code><br>
1254 <td valign="top"><code>PLAC</code><br>
1256 <td valign="top"><br>
1258 <td valign="top"><code>STRING</code><br>
1262 <td valign="top"><code>ELT_SUB_LIO_SLGC</code><br>
1264 <td valign="top"><code>SLGC</code><br>
1266 <td valign="top"><br>
1268 <td valign="top"><code>NULL</code><br>
1272 <td valign="top"><code>ELT_SUB_LIO_SLGC_FAMC</code><br>
1274 <td valign="top"><code>FAMC</code><br>
1276 <td valign="top"><br>
1278 <td valign="top"><code>STRING</code><br>
1282 <td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
1284 <td valign="top"><code>SLGS</code><br>
1286 <td valign="top"><br>
1288 <td valign="top"><code>NULL</code><br>
1292 <td valign="top"><code>ELT_SUB_LSS_SLGS_STAT</code><br>
1294 <td valign="top"><code>STAT</code><br>
1296 <td valign="top"><br>
1298 <td valign="top"><code>STRING</code><br>
1302 <td valign="top"><code>ELT_SUB_LSS_SLGS_DATE</code><br>
1304 <td valign="top"><code>DATE</code><br>
1306 <td valign="top"><br>
1308 <td valign="top"><code>DATE</code><br>
1312 <td valign="top"><code>ELT_SUB_LSS_SLGS_TEMP</code><br>
1314 <td valign="top"><code>TEMP</code><br>
1316 <td valign="top"><br>
1318 <td valign="top"><code>STRING</code><br>
1322 <td valign="top"><code>ELT_SUB_LSS_SLGS_PLAC</code><br>
1324 <td valign="top"><code>PLAC</code><br>
1326 <td valign="top"><br>
1328 <td valign="top"><code>STRING</code><br>
1332 <td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
1334 <td valign="top"><code>OBJE</code><br>
1336 <td valign="top"><br>
1338 <td valign="top"><code>NULL</code><br>
1342 <td valign="top"><code>ELT_SUB_MULTIM_OBJE_FORM</code><br>
1344 <td valign="top"><code>FORM</code><br>
1346 <td valign="top"><br>
1348 <td valign="top"><code>STRING</code><br>
1352 <td valign="top"><code>ELT_SUB_MULTIM_OBJE_TITL</code><br>
1354 <td valign="top"><code>TITL</code><br>
1356 <td valign="top"><br>
1358 <td valign="top"><code>STRING</code><br>
1362 <td valign="top"><code>ELT_SUB_MULTIM_OBJE_FILE</code><br>
1364 <td valign="top"><code>FILE</code><br>
1366 <td valign="top"><br>
1368 <td valign="top"><code>STRING</code><br>
1372 <td valign="top"><code>ELT_SUB_NOTE</code><br>
1374 <td valign="top"><code>NOTE</code><br>
1376 <td valign="top"><br>
1378 <td valign="top"><code>NULL<br>
1383 <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1385 <td valign="top"><code>NAME</code><br>
1387 <td valign="top"><br>
1389 <td valign="top"><code>STRING</code><br>
1393 <td valign="top"><code>ELT_SUB_PERS_NAME_NPFX</code><br>
1395 <td valign="top"><code>NPFX</code><br>
1397 <td valign="top"><br>
1399 <td valign="top"><code>STRING</code><br>
1403 <td valign="top"><code>ELT_SUB_PERS_NAME_GIVN</code><br>
1405 <td valign="top"><code>GIVN</code><br>
1407 <td valign="top"><br>
1409 <td valign="top"><code>STRING</code><br>
1413 <td valign="top"><code>ELT_SUB_PERS_NAME_NICK</code><br>
1415 <td valign="top"><code>NICK</code><br>
1417 <td valign="top"><br>
1419 <td valign="top"><code>STRING</code><br>
1423 <td valign="top"><code>ELT_SUB_PERS_NAME_SPFX</code><br>
1425 <td valign="top"><code>SPFX</code><br>
1427 <td valign="top"><br>
1429 <td valign="top"><code>STRING</code><br>
1433 <td valign="top"><code>ELT_SUB_PERS_NAME_SURN</code><br>
1435 <td valign="top"><code>SURN</code><br>
1437 <td valign="top"><br>
1439 <td valign="top"><code>STRING</code><br>
1443 <td valign="top"><code>ELT_SUB_PERS_NAME_NSFX</code><br>
1445 <td valign="top"><code>NSFX</code><br>
1447 <td valign="top"><br>
1449 <td valign="top"><code>STRING</code><br>
1453 <td valign="top"><code>ELT_SUB_PLAC</code><br>
1455 <td valign="top"><code>PLAC</code><br>
1457 <td valign="top"><br>
1459 <td valign="top"><code>STRING</code><br>
1463 <td valign="top"><code>ELT_SUB_PLAC_FORM</code><br>
1465 <td valign="top"><code>FORM</code><br>
1467 <td valign="top"><br>
1469 <td valign="top"><code>STRING</code><br>
1473 <td valign="top"><code>ELT_SUB_SOUR</code><br>
1475 <td valign="top"><code>SOUR</code><br>
1477 <td valign="top"><br>
1479 <td valign="top"><code>STRING</code><br>
1483 <td valign="top"><code>ELT_SUB_SOUR_PAGE</code><br>
1485 <td valign="top"><code>PAGE</code><br>
1487 <td valign="top"><br>
1489 <td valign="top"><code>STRING</code><br>
1493 <td valign="top"><code>ELT_SUB_SOUR_EVEN</code><br>
1495 <td valign="top"><code>EVEN</code><br>
1497 <td valign="top"><br>
1499 <td valign="top"><code>STRING</code><br>
1503 <td valign="top"><code>ELT_SUB_SOUR_EVEN_ROLE</code><br>
1505 <td valign="top"><code>ROLE</code><br>
1507 <td valign="top"><br>
1509 <td valign="top"><code>STRING</code><br>
1513 <td valign="top"><code>ELT_SUB_SOUR_DATA</code><br>
1515 <td valign="top"><code>DATA</code><br>
1517 <td valign="top"><br>
1519 <td valign="top"><code>NULL</code><br>
1523 <td valign="top"><code>ELT_SUB_SOUR_DATA_DATE</code><br>
1525 <td valign="top"><code>DATE</code><br>
1527 <td valign="top"><br>
1529 <td valign="top"><code>DATE</code><br>
1533 <td valign="top"><code>ELT_SUB_SOUR_TEXT</code><br>
1535 <td valign="top"><code>TEXT</code><br>
1537 <td valign="top"><br>
1539 <td valign="top"><code>STRING</code><br>
1543 <td valign="top"><code>ELT_SUB_SOUR_QUAY</code><br>
1545 <td valign="top"><code>QUAY</code><br>
1547 <td valign="top"><br>
1549 <td valign="top"><code>STRING</code><br>
1553 <td valign="top"><code>ELT_SUB_REPO</code><br>
1555 <td valign="top"><code>REPO</code><br>
1557 <td valign="top"><br>
1559 <td valign="top"><code>STRING</code><br>
1563 <td valign="top"><code>ELT_SUB_REPO_CALN</code><br>
1565 <td valign="top"><code>CALN</code><br>
1567 <td valign="top"><br>
1569 <td valign="top"><code>STRING</code><br>
1573 <td valign="top"><code>ELT_SUB_REPO_CALN_MEDI</code><br>
1575 <td valign="top"><code>MEDI</code><br>
1577 <td valign="top"><br>
1579 <td valign="top"><code>STRING</code><br>
1583 <td valign="top"><code>ELT_SUB_FAMS</code><br>
1585 <td valign="top"><code>FAMS</code><br>
1587 <td valign="top"><br>
1589 <td valign="top"><code>STRING</code><br>
1593 <td valign="top"><code>ELT_USER</code><br>
1595 <td valign="top"><code>any tag starting<br>
1596 with an underscore</code><br>
1598 <td valign="top"><br>
1600 <td valign="top"><code>NULL<br>
1607 <hr width="100%" size="2">
1608 <h2><a name="Gedcom_val_types"></a>Gedcom_val types<br>
1610 Currently, the specific <code>Gedcom_val</code> types are (with <code>val</code>
1611 of type <code>Gedcom_val</code>):<br>
1613 <table cellpadding="2" cellspacing="2" border="1" width="100%">
1616 <td valign="top"><br>
1618 <td valign="top"><b>type checker</b><br>
1620 <td valign="top"><b>cast operator</b><br>
1624 <td valign="top">null value<br>
1626 <td valign="top"><code>GEDCOM_IS_NULL(val)</code><br>
1628 <td valign="top">N/A<br>
1632 <td valign="top">string<br>
1634 <td valign="top"><code>GEDCOM_IS_STRING(val)</code><br>
1636 <td valign="top"><code>char* str = GEDCOM_STRING(val);</code><br>
1640 <td valign="top">date<br>
1642 <td valign="top"><code>GEDCOM_IS_DATE(val)</code><br>
1644 <td valign="top"><code>struct date_value dv = GEDCOM_DATE(val);</code></td>
1650 The type checker returns a true or a false value according to the type
1651 of the value, but this is in principle only necessary in the rare circumstances
1652 that two types are possible, or where an optional value can be provided. In
1653 most cases, the type is fixed for a specific tag.<br>
1655 The null value is used for when the GEDCOM spec doesn't allow a value, or
1656 when an optional value is allowed but none is given.<br>
1658 The string value is the most general used value currently, for all those
1659 values that don't have a more specific meaning. In essence, the value
1660 that is returned by GEDCOM_STRING is always the same as the raw_value passed
1661 to the start callback, and is thus in fact redundant.<br>
1663 The date value is used for all elements that return a date. (<i>Description
1664 of struct date_value TBD: look in the header file for the moment</i>).<br>
1666 <h3><a name="struct_date_value"></a>struct date_value</h3>
1667 This struct describes a date as given in the GEDCOM file, and has the following
1669 <blockquote><code>struct date_value {<br>
1670 Date_value_type type;<br>
1671 struct date date1;<br>
1672 struct date date2;<br>
1673 char phrase[MAX_PHRASE_LEN
1677 It depends on the first member, the type, which members are actually relevant:<br>
1679 <table cellpadding="2" cellspacing="2" border="1" width="100%">
1682 <td valign="top" align="center"><b>Date_value_type</b><br>
1684 <td valign="top" align="center"><b>Meaning</b><br>
1686 <td valign="top" align="center"><b>Relevant members</b><br>
1690 <td valign="top"><code>DV_NO_MODIFIER</code><br>
1692 <td valign="top">just a simple date<br>
1694 <td valign="top">date1<br>
1698 <td valign="top"><code>DV_BEFORE</code><br>
1700 <td valign="top">a range (BEFORE date1)<br>
1702 <td valign="top">date1<br>
1706 <td valign="top"><code>DV_AFTER</code><br>
1708 <td valign="top">a range (AFTER date1)<br>
1710 <td valign="top">date1<br>
1714 <td valign="top"><code>DV_BETWEEN</code><br>
1716 <td valign="top">a range (BETWEEN date1 AND date2)<br>
1718 <td valign="top">date1, date2<br>
1722 <td valign="top"><code>DV_FROM</code><br>
1724 <td valign="top">a period (FROM date1)<br>
1726 <td valign="top">date1<br>
1730 <td valign="top"><code>DV_TO</code><br>
1732 <td valign="top">a period (TO date1)<br>
1734 <td valign="top">date1<br>
1738 <td valign="top"><code>DV_FROM_TO</code><br>
1740 <td valign="top">a period (FROM date1 TO date2)<br>
1742 <td valign="top">date1, date2<br>
1746 <td valign="top"><code>DV_ABOUT</code><br>
1748 <td valign="top">an approximation (ABOUT date1)<br>
1750 <td valign="top">date1<br>
1754 <td valign="top"><code>DV_CALCULATED</code><br>
1756 <td valign="top">an approximation (CALCULATED date1)<br>
1758 <td valign="top">date1<br>
1762 <td valign="top"><code>DV_ESTIMATED</code><br>
1764 <td valign="top">an approximation (ESTIMATED date1)<br>
1766 <td valign="top">date1<br>
1770 <td valign="top"><code>DV_INTERPRETED</code><br>
1772 <td valign="top">INTERPRETED date1 FROM a given free form date phrase<br>
1774 <td valign="top">date1, phrase<br>
1778 <td valign="top"><code>DV_PHRASE</code><br>
1780 <td valign="top">a free form date phrase<br>
1782 <td valign="top">phrase<br>
1788 <h3><a name="struct_date"></a>struct date<br>
1790 The <code>date1</code> and <code>date2</code> also have a strict syntax:<br>
1791 <blockquote><code>struct date {<br>
1792 Calendar_type cal;<br>
1793 char day_str[MAX_DAY_LEN + 1];<br>
1794 char month_str[MAX_MONTH_LEN +
1796 char year_str[MAX_YEAR_LEN + 1];<br>
1798 int day;<br>
1799 int month;<br>
1800 int year;<br>
1801 Year_type year_type;<br>
1803 Date_type type;<br>
1804 long int sdn1;<br>
1805 long int sdn2;<br>
1808 The first four fields are the primary fields parsed from the value in the
1809 GEDCOM file. The <code>day_str</code>, <code>month_str</code> and <code>
1810 year_str</code> are the literal parts of the date that denote the day, month
1811 and year. The calendar type <code>cal</code> is one of (see calendar
1812 overview <i>LINK TBD</i>):<br>
1814 <li><code>CAL_GREGORIAN</code> : the Gregorian calendar</li>
1815 <li><code>CAL_JULIAN</code> : the Julian calendar</li>
1816 <li><code>CAL_HEBREW</code> : the Hebrew (Jewish) calendar</li>
1817 <li><code>CAL_FRENCH_REV</code> : the calendar used after the French
1819 <li><code>CAL_UNKNOWN</code> : an unknown calendar type</li>
1821 The next four fields are deduced from the first four:<br>
1823 <li>the <code>day</code> is just the numeric representation of the
1824 <code>day_str</code> (starting from 1)</li>
1825 <li>the <code>month</code> is the month number of <code>month_str</code>
1826 in the given calendar type (also starting from 1)</li>
1827 <li>the <code>year</code> is the numeric representation of the <code>
1828 year_str</code></li>
1830 It is possible that the <code>year_str</code> is given as e.g. "1677/78".
1831 This is coming from a date in a so called "annunciation style", where
1832 the year began on 25 March, so that "20 March 1677/78" is 20 March 1677 in
1833 "annunciation style" and 20 March 1678 in "circumcision style" (the current
1834 style). See calendar overview (<i>LINK TBD</i>).<br>
1836 In this case, the <code>year</code> will contain the "circumcision style"
1837 year (1678 in the example), and <code>year_type</code> will be <code>YEAR_DOUBLE.</code>
1838 Normal dates will have a <code>year_type</code> equal to <code>YEAR_SINGLE</code>
1841 Finally, the last three fields are probably the most interesting values for
1842 applications that want to process dates. Basically, the date is converted
1843 to a serial day number (aka Julian day), which is the unique day number since
1844 November 25, 4714 BC in the Gregorian calendar. The advantage of these
1845 day numbers is that they are unique and independent of the calendar system.
1846 Furthermore, date differences can just be computed by subtracting the
1847 serial day numbers.<br>
1849 However, since dates in GEDCOM are not necessarily exact (e.g. "MAR 1990"),
1850 it is not possible to represent all GEDCOM dates with 1 serial day number.
1851 Two cases can be distinguished:<br>
1853 <li>Exact dates (e.g. "25 MAR 1990"):</li>
1856 <blockquote>These are represented by a serial day number in <code>sdn1</code>
1857 and a <code>Date_type</code> equal to <code>DATE_EXACT</code>.<br>
1861 <li>Incomplete dates (e.g. "MAR 1990"):</li>
1864 <blockquote>These are represented by 2 serial day numbers (<code>
1865 sdn1</code> and <code>sdn2</code>) and a <code>Date_type</code> equal to
1866 <code>DATE_BOUNDED</code>.<br>
1868 For example, the Gregorian date "MAR 1990" is represented by the serial day
1869 numbers for "1 MAR 1990" and "31 MAR 1990", and the Gregorian date "1990"
1870 is represented by the serial day numbers for "1 JAN 1990" and "31 DEC 1990".
1871 Similarly for the other calendar types.<br>
1875 <hr width="100%" size="2">$Id$<br>