Document the new cross-reference handling functions.
[gedcom-parse.git] / doc / interface.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Libgedcom interface details</title>
2   
3                                          
4   <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"></head><body text="#000000" bgcolor="#ffffff" link="#000099" vlink="#990099" alink="#000099">
5            
6 <h1 align="center">Libgedcom interface details</h1>
7       <br>
8            
9 <h2>Index</h2>
10            
11 <ul>
12         <li><a href="#Record_identifiers">Record identifiers</a></li>
13         <li><a href="#Element_identifiers">Element identifiers</a></li>
14         <li><a href="#Gedcom_val_types">Gedcom_val types</a></li>
15                    
16   <ul>
17          <li><a href="#date_value">struct date_value</a></li>
18          <li><a href="#date">struct date</a></li><li><a href="#age_value">struct age_value</a><br>
19     </li>
20
21      <li><a href="#xref_value">struct xref_value</a><br>
22         </li>
23                    
24   </ul>
25            
26 </ul>
27       <br>
28            
29 <hr width="100%" size="2">      
30 <h2><a name="Record_identifiers"></a>Record identifiers</h2>
31       The following table describes the identifiers to be used in the record
32   callbacks.  &nbsp;The last columns gives the <a href="#Gedcom_val_types"><code>
33     Gedcom_val</code>   type</a> of the <code>xref</code> and&nbsp;<code>
34 val</code><code> </code> arguments in the header  start callback.<br>
35       <br>
36            
37 <table width="100%" border="1" cellspacing="2" cellpadding="2">
38         <tbody>
39           <tr>
40             <td valign="top" align="center"><b>Record</b><br>
41             </td>
42             <td valign="top" align="center"><b>Meaning</b><br>
43             </td>
44             <td valign="top" align="center"><b>Possible<br>
45       &nbsp;<code>xref</code> types</b><br>
46             </td>
47        <td valign="top" align="center"><b>Possible<br>
48        <code>val</code> types<br>
49        </b><br>
50        </td>
51           </tr>
52           <tr>
53             <td valign="top"><code>REC_HEAD</code><br>
54             </td>
55             <td valign="top">The header of the GEDCOM file<br>
56             </td>
57             <td valign="top"><code>NULL</code><br>
58             </td>
59        <td valign="top"><code>NULL</code><br>
60        </td>
61           </tr>
62           <tr>
63             <td valign="top"><code>REC_FAM</code><br>
64             </td>
65             <td valign="top">A record describing a family<br>
66             </td>
67             <td valign="top"><code>XREF_PTR(FAM)</code><br>
68             </td>
69        <td valign="top"><code>NULL</code><br>
70        </td>
71           </tr>
72           <tr>
73             <td valign="top"><code>REC_INDI</code><br>
74             </td>
75             <td valign="top">A record describing an individual<br>
76             </td>
77             <td valign="top"><code>XREF_PTR(INDI)</code><br>
78             </td>
79        <td valign="top"><code>NULL</code><br>
80        </td>
81           </tr>
82           <tr>
83             <td valign="top"><code>REC_OBJE</code><br>
84             </td>
85             <td valign="top">A record describing a multimedia object<br>
86             </td>
87             <td valign="top"><code>XREF_PTR(OBJE)</code><br>
88             </td>
89        <td valign="top"><code>NULL</code><br>
90        </td>
91           </tr>
92           <tr>
93             <td valign="top"><code>REC_NOTE</code><br>
94             </td>
95             <td valign="top">A record describing a note<br>
96             </td>
97             <td valign="top"><code>XREF_PTR(NOTE)</code><br>
98             </td>
99        <td valign="top"><code>STRING</code><br>
100        </td>
101           </tr>
102           <tr>
103             <td valign="top"><code>REC_REPO</code><br>
104             </td>
105             <td valign="top">A record describing a source repository<br>
106             </td>
107             <td valign="top"><code>XREF_PTR(REPO)</code><br>
108             </td>
109        <td valign="top"><code>NULL</code><br>
110        </td>
111           </tr>
112           <tr>
113             <td valign="top"><code>REC_SOUR</code><br>
114             </td>
115             <td valign="top">A record describing a source<br>
116             </td>
117             <td valign="top"><code>XREF_PTR(SOUR)</code><br>
118             </td>
119        <td valign="top"><code>NULL</code><br>
120        </td>
121           </tr>
122           <tr>
123             <td valign="top"><code>REC_SUBN</code><br>
124             </td>
125             <td valign="top">A record describing the submission<br>
126             </td>
127             <td valign="top"><code>XREF_PTR(SUBN)</code><br>
128             </td>
129        <td valign="top"><code>NULL</code><br>
130        </td>
131           </tr>
132           <tr>
133             <td valign="top"><code>REC_SUBM</code><br>
134             </td>
135             <td valign="top">A record describing the submitter<br>
136             </td>
137             <td valign="top"><code>XREF_PTR(SUBM</code>)<br>
138             </td>
139        <td valign="top"><code>NULL</code><br>
140        </td>
141           </tr>
142           <tr>
143             <td valign="top"><code>REC_USER</code><br>
144             </td>
145             <td valign="top">An application-specific record (the <code>tag</code>
146        in the start callback contains the actually used tag).<br>
147             </td>
148             <td valign="top"><code>NULL<br>
149  XREF_PTR(USER)<br>
150        </code><br>
151             </td>
152        <td valign="top"><code>NULL<br>
153  STRING<br>
154  XREF_PTR(USER)</code><br>
155        </td>
156           </tr>
157                        
158   </tbody>      
159 </table>
160            
161 <hr width="100%" size="2">      
162 <h2><a name="Element_identifiers"></a>Element identifiers</h2>
163      The following table describes the identifiers to be used in the element
164   callbacks. &nbsp;The last column gives the <a href="file:///home/verthezp/src/external/gedcom-parse/doc/interface.html#Gedcom_val_types"><code>
165      Gedcom_val</code>  type</a> of the <code>val</code> argument in the
166 element   start callback.<br>
167      <br>
168          
169 <table cellpadding="2" cellspacing="2" border="1" width="100%">
170        <tbody>
171          <tr>
172            <td valign="top" align="center"><b>Element</b><br>
173            </td>
174            <td valign="top" align="center"><b>Possible<br>
175      tags<br>
176            </b><br>
177            </td>
178            <td valign="top" align="center"><b>Used within</b><br>
179            </td>
180            <td valign="top" align="center"><b>Possible<br>
181            <code>val</code> types<br>
182            </b><br>
183            </td>
184          </tr>
185          <tr>
186            <td valign="top"><code>ELT_HEAD_SOUR</code><br>
187            </td>
188            <td valign="top"><code>SOUR</code><br>
189            </td>
190            <td valign="top"><code>REC_HEAD</code><br>
191            </td>
192            <td valign="top"><code>STRING</code><br>
193            </td>
194          </tr>
195          <tr>
196            <td valign="top"><code>ELT_HEAD_SOUR_VERS</code><br>
197            </td>
198            <td valign="top"><code>VERS</code><br>
199            </td>
200            <td valign="top"><code>ELT_HEAD_SOUR</code><br>
201            </td>
202            <td valign="top"><code>STRING</code><br>
203            </td>
204          </tr>
205          <tr>
206            <td valign="top"><code>ELT_HEAD_SOUR_NAME</code><br>
207            </td>
208            <td valign="top"><code>NAME</code><br>
209            </td>
210            <td valign="top"><code>ELT_HEAD_SOUR</code><br>
211            </td>
212            <td valign="top"><code>STRING</code><br>
213            </td>
214          </tr>
215          <tr>
216            <td valign="top"><code>ELT_HEAD_SOUR_CORP</code><br>
217            </td>
218            <td valign="top"><code>CORP</code><br>
219            </td>
220            <td valign="top"><code>ELT_HEAD_SOUR</code><br>
221            </td>
222            <td valign="top"><code>STRING</code><br>
223            </td>
224          </tr>
225          <tr>
226            <td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
227            </td>
228            <td valign="top"><code>DATA</code><br>
229            </td>
230            <td valign="top"><code>ELT_HEAD_SOUR</code><br>
231            </td>
232            <td valign="top"><code>STRING</code><br>
233            </td>
234          </tr>
235          <tr>
236            <td valign="top"><code>ELT_HEAD_SOUR_DATA_DATE</code><br>
237            </td>
238            <td valign="top"><code>DATE</code><br>
239            </td>
240            <td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
241            </td>
242            <td valign="top"><code>DATE</code><br>
243            </td>
244          </tr>
245          <tr>
246            <td valign="top"><code>ELT_HEAD_SOUR_DATA_COPR</code><br>
247            </td>
248            <td valign="top"><code>COPR</code><br>
249            </td>
250            <td valign="top"><code>ELT_HEAD_SOUR_DATA</code><br>
251            </td>
252            <td valign="top"><code>STRING</code><br>
253            </td>
254          </tr>
255          <tr>
256            <td valign="top"><code>ELT_HEAD_DEST</code><br>
257            </td>
258            <td valign="top"><code>DEST</code><br>
259            </td>
260            <td valign="top"><code>REC_HEAD</code><br>
261            </td>
262            <td valign="top"><code>STRING</code><br>
263            </td>
264          </tr>
265          <tr>
266            <td valign="top"><code>ELT_HEAD_DATE</code><br>
267            </td>
268            <td valign="top"><code>DATE</code><br>
269            </td>
270            <td valign="top"><code>REC_HEAD</code><br>
271            </td>
272            <td valign="top"><code>DATE</code><br>
273            </td>
274          </tr>
275          <tr>
276            <td valign="top"><code>ELT_HEAD_DATE_TIME</code><br>
277            </td>
278            <td valign="top"><code>TIME</code><br>
279            </td>
280            <td valign="top"><code>ELT_HEAD_DATE</code><br>
281            </td>
282            <td valign="top"><code>STRING</code><br>
283            </td>
284          </tr>
285          <tr>
286            <td valign="top"><code>ELT_HEAD_SUBM</code><br>
287            </td>
288            <td valign="top"><code>SUBM</code><br>
289            </td>
290            <td valign="top"><code>REC_HEAD</code><br>
291            </td>
292            <td valign="top"><code>XREF_PTR(SUBM)</code><br>
293            </td>
294          </tr>
295          <tr>
296            <td valign="top"><code>ELT_HEAD_SUBN</code><br>
297            </td>
298            <td valign="top"><code>SUBN</code><br>
299            </td>
300            <td valign="top"><code>REC_HEAD</code><br>
301            </td>
302            <td valign="top"><code>XREF_PTR(SUBN)</code><br>
303            </td>
304          </tr>
305          <tr>
306            <td valign="top"><code>ELT_HEAD_FILE</code><br>
307            </td>
308            <td valign="top"><code>FILE</code><br>
309            </td>
310            <td valign="top"><code>REC_HEAD</code><br>
311            </td>
312            <td valign="top"><code>STRING</code><br>
313            </td>
314          </tr>
315          <tr>
316            <td valign="top"><code>ELT_HEAD_COPR</code><br>
317            </td>
318            <td valign="top"><code>COPR</code><br>
319            </td>
320            <td valign="top"><code>REC_HEAD</code><br>
321            </td>
322            <td valign="top"><code>STRING</code><br>
323            </td>
324          </tr>
325          <tr>
326            <td valign="top"><code>ELT_HEAD_GEDC</code><br>
327            </td>
328            <td valign="top"><code>GEDC</code><br>
329            </td>
330            <td valign="top"><code>REC_HEAD</code><br>
331            </td>
332            <td valign="top"><code>NULL</code><br>
333            </td>
334          </tr>
335          <tr>
336            <td valign="top"><code>ELT_HEAD_GEDC_VERS</code><br>
337            </td>
338            <td valign="top"><code>VERS</code><br>
339            </td>
340            <td valign="top"><code>ELT_HEAD_GEDC</code><br>
341            </td>
342            <td valign="top"><code>STRING</code><br>
343            </td>
344          </tr>
345          <tr>
346            <td valign="top"><code>ELT_HEAD_GEDC_FORM</code><br>
347            </td>
348            <td valign="top"><code>FORM</code><br>
349            </td>
350            <td valign="top"><code>ELT_HEAD_GEDC</code><br>
351            </td>
352            <td valign="top"><code>STRING</code><br>
353            </td>
354          </tr>
355          <tr>
356            <td valign="top"><code>ELT_HEAD_CHAR</code><br>
357            </td>
358            <td valign="top"><code>CHAR</code><br>
359            </td>
360            <td valign="top"><code>REC_HEAD</code><br>
361            </td>
362            <td valign="top"><code>STRING</code><br>
363            </td>
364          </tr>
365          <tr>
366            <td valign="top"><code>ELT_HEAD_CHAR_VERS</code><br>
367            </td>
368            <td valign="top"><code>VERS</code><br>
369            </td>
370            <td valign="top"><code>ELT_HEAD_CHAR</code><br>
371            </td>
372            <td valign="top"><code>STRING</code><br>
373            </td>
374          </tr>
375          <tr>
376            <td valign="top"><code>ELT_HEAD_LANG</code><br>
377            </td>
378            <td valign="top"><code>LANG</code><br>
379            </td>
380            <td valign="top"><code>REC_HEAD</code><br>
381            </td>
382            <td valign="top"><code>STRING</code><br>
383            </td>
384          </tr>
385          <tr>
386            <td valign="top"><code>ELT_HEAD_PLAC</code><br>
387            </td>
388            <td valign="top"><code>PLAC</code><br>
389            </td>
390            <td valign="top"><code>REC_HEAD</code><br>
391            </td>
392            <td valign="top"><code>NULL</code><br>
393            </td>
394          </tr>
395          <tr>
396            <td valign="top"><code>ELT_HEAD_PLAC_FORM</code><br>
397            </td>
398            <td valign="top"><code>FORM</code><br>
399            </td>
400            <td valign="top"><code>ELT_HEAD_PLAC</code><br>
401            </td>
402            <td valign="top"><code>STRING</code><br>
403            </td>
404          </tr>
405          <tr>
406            <td valign="top"><code>ELT_HEAD_NOTE</code><br>
407            </td>
408            <td valign="top"><code>NOTE</code><br>
409            </td>
410            <td valign="top"><code>REC_HEAD</code><br>
411            </td>
412            <td valign="top"><code>STRING</code><br>
413            </td>
414          </tr>
415          <tr>
416            <td valign="top"><code>ELT_FAM_HUSB</code><br>
417            </td>
418            <td valign="top"><code>HUSB</code><br>
419            </td>
420            <td valign="top"><code>REC_FAM</code><br>
421            </td>
422            <td valign="top"><code>XREF_PTR(INDI)</code><br>
423            </td>
424          </tr>
425          <tr>
426            <td valign="top"><code>ELT_FAM_WIFE</code><br>
427            </td>
428            <td valign="top"><code>WIFE</code><br>
429            </td>
430            <td valign="top"><code>REC_FAM</code><br>
431            </td>
432            <td valign="top"><code>XREF_PTR(INDI)</code><br>
433            </td>
434          </tr>
435          <tr>
436            <td valign="top"><code>ELT_FAM_CHIL</code><br>
437            </td>
438            <td valign="top"><code>CHIL</code><br>
439            </td>
440            <td valign="top"><code>REC_FAM</code><br>
441            </td>
442            <td valign="top"><code>XREF_PTR(INDI)</code><br>
443            </td>
444          </tr>
445          <tr>
446            <td valign="top"><code>ELT_FAM_NCHI</code><br>
447            </td>
448            <td valign="top"><code>NCHI</code><br>
449            </td>
450            <td valign="top"><code>REC_FAM</code><br>
451            </td>
452            <td valign="top"><code>STRING</code><br>
453            </td>
454          </tr>
455          <tr>
456            <td valign="top"><code>ELT_FAM_SUBM</code><br>
457            </td>
458            <td valign="top"><code>SUBM</code><br>
459            </td>
460            <td valign="top"><code>REC_FAM</code><br>
461            </td>
462            <td valign="top"><code>XREF_PTR(SUBM)</code><br>
463            </td>
464          </tr>
465          <tr>
466            <td valign="top"><code>ELT_INDI_RESN</code><br>
467            </td>
468            <td valign="top"><code>RES</code><code>N</code><br>
469            </td>
470            <td valign="top"><code>REC_INDI</code><br>
471            </td>
472            <td valign="top"><code>STRING</code><br>
473            </td>
474          </tr>
475          <tr>
476            <td valign="top"><code>ELT_INDI_SEX</code><br>
477            </td>
478            <td valign="top"><code>SEX</code><br>
479            </td>
480            <td valign="top"><code>REC_INDI</code><br>
481            </td>
482            <td valign="top"><code>STRING</code><br>
483            </td>
484          </tr>
485          <tr>
486            <td valign="top"><code>ELT_INDI_SUBM</code><br>
487            </td>
488            <td valign="top"><code>SUBM</code><br>
489            </td>
490            <td valign="top"><code>REC_INDI</code><br>
491            </td>
492            <td valign="top"><code>XREF_PTR(SUBM)</code><br>
493            </td>
494          </tr>
495          <tr>
496            <td valign="top"><code>ELT_INDI_ALIA</code><br>
497            </td>
498            <td valign="top"><code>ALIA</code><br>
499            </td>
500            <td valign="top"><code>REC_INDI</code><br>
501            </td>
502            <td valign="top"><code>XREF_PTR(INDI)</code><br>
503            </td>
504          </tr>
505          <tr>
506            <td valign="top"><code>ELT_INDI_ANCI</code><br>
507            </td>
508            <td valign="top"><code>ANCI</code><br>
509            </td>
510            <td valign="top"><code>REC_INDI</code><br>
511            </td>
512            <td valign="top"><code>XREF_PTR(SUBM)</code><br>
513            </td>
514          </tr>
515          <tr>
516            <td valign="top"><code>ELT_INDI_DESI</code><br>
517            </td>
518            <td valign="top"><code>DESI</code><br>
519            </td>
520            <td valign="top"><code>REC_INDI</code><br>
521            </td>
522            <td valign="top"><code>XREF_PTR(SUBM)</code><br>
523            </td>
524          </tr>
525          <tr>
526            <td valign="top"><code>ELT_INDI_RFN</code><br>
527            </td>
528            <td valign="top"><code>RFN</code><br>
529            </td>
530            <td valign="top"><code>REC_INDI</code><br>
531            </td>
532            <td valign="top"><code>STRING</code><br>
533            </td>
534          </tr>
535          <tr>
536            <td valign="top"><code>ELT_INDI_AFN</code><br>
537            </td>
538            <td valign="top"><code>AFN</code><br>
539            </td>
540            <td valign="top"><code>REC_INDI</code><br>
541            </td>
542            <td valign="top"><code>STRING</code><br>
543            </td>
544          </tr>
545          <tr>
546            <td valign="top"><code>ELT_OBJE_FORM</code><br>
547            </td>
548            <td valign="top"><code>FORM</code><br>
549            </td>
550            <td valign="top"><code>REC_OBJE</code><br>
551            </td>
552            <td valign="top"><code>STRING</code><br>
553            </td>
554          </tr>
555          <tr>
556            <td valign="top"><code>ELT_OBJE_TITL</code><br>
557            </td>
558            <td valign="top"><code>TITL</code><br>
559            </td>
560            <td valign="top"><code>REC_OBJE</code><br>
561            </td>
562            <td valign="top"><code>STRING</code><br>
563            </td>
564          </tr>
565          <tr>
566            <td valign="top"><code>ELT_OBJE_BLOB</code><br>
567            </td>
568            <td valign="top"><code>BLOB</code><br>
569            </td>
570            <td valign="top"><code>REC_OBJE</code><br>
571            </td>
572            <td valign="top"><code>NULL</code><br>
573            </td>
574          </tr>
575          <tr>
576            <td valign="top"><code>ELT_OBJE_BLOB_CONT</code><br>
577            </td>
578            <td valign="top"><code>CONT</code><br>
579            </td>
580            <td valign="top"><code>ELT_OBJE_BLOB</code><br>
581            </td>
582            <td valign="top"><code>STRING</code><br>
583            </td>
584          </tr>
585          <tr>
586            <td valign="top"><code>ELT_OBJE_OBJE</code><br>
587            </td>
588            <td valign="top"><code>OBJE</code><br>
589            </td>
590            <td valign="top"><code>REC_OBJE</code><br>
591            </td>
592            <td valign="top"><code>XREF_PTR(OBJE)</code><br>
593            </td>
594          </tr>
595          <tr>
596            <td valign="top"><code>ELT_REPO_NAME</code><br>
597            </td>
598            <td valign="top"><code>NAME</code><br>
599            </td>
600            <td valign="top"><code>REC_REPO</code><br>
601            </td>
602            <td valign="top"><code>STRING</code><br>
603            </td>
604          </tr>
605          <tr>
606            <td valign="top"><code>ELT_SOUR_DATA</code><br>
607            </td>
608            <td valign="top"><code>DATA</code><br>
609            </td>
610            <td valign="top"><code>REC_SOUR</code><br>
611            </td>
612            <td valign="top"><code>NULL</code><br>
613            </td>
614          </tr>
615          <tr>
616            <td valign="top"><code>ELT_SOUR_DATA_EVEN</code><br>
617            </td>
618            <td valign="top"><code>EVEN</code><br>
619            </td>
620            <td valign="top"><code>ELT_SOUR_DATA</code><br>
621            </td>
622            <td valign="top"><code>STRING</code><br>
623            </td>
624          </tr>
625          <tr>
626            <td valign="top"><code>ELT_SOUR_DATA_EVEN_DATE</code><br>
627            </td>
628            <td valign="top"><code>DATE</code><br>
629            </td>
630            <td valign="top"><code>ELT_SOUR_DATA_EVEN</code><br>
631            </td>
632            <td valign="top"><code>DATE</code><br>
633            </td>
634          </tr>
635          <tr>
636            <td valign="top"><code>ELT_SOUR_DATA_EVEN_PLAC</code><br>
637            </td>
638            <td valign="top"><code>PLAC</code><br>
639            </td>
640            <td valign="top"><code>ELT_SOUR_DATA_EVEN</code><br>
641            </td>
642            <td valign="top"><code>STRING</code><br>
643            </td>
644          </tr>
645          <tr>
646            <td valign="top"><code>ELT_SOUR_DATA_AGNC</code><br>
647            </td>
648            <td valign="top"><code>AGNC</code><br>
649            </td>
650            <td valign="top"><code>ELT_SOUR_DATA</code><br>
651            </td>
652            <td valign="top"><code>STRING</code><br>
653            </td>
654          </tr>
655          <tr>
656            <td valign="top"><code>ELT_SOUR_AUTH</code><br>
657            </td>
658            <td valign="top"><code>AUTH</code><br>
659            </td>
660            <td valign="top"><code>REC_SOUR</code><br>
661            </td>
662            <td valign="top"><code>STRING</code><br>
663            </td>
664          </tr>
665          <tr>
666            <td valign="top"><code>ELT_SOUR_TITL</code><br>
667            </td>
668            <td valign="top"><code>TITL</code><br>
669            </td>
670            <td valign="top"><code>REC_SOUR</code><br>
671            </td>
672            <td valign="top"><code>STRING</code><br>
673            </td>
674          </tr>
675          <tr>
676            <td valign="top"><code>ELT_SOUR_ABBR</code><br>
677            </td>
678            <td valign="top"><code>ABBR</code><br>
679            </td>
680            <td valign="top"><code>REC_SOUR</code><br>
681            </td>
682            <td valign="top"><code>STRING</code><br>
683            </td>
684          </tr>
685          <tr>
686            <td valign="top"><code>ELT_SOUR_PUBL</code><br>
687            </td>
688            <td valign="top"><code>PUBL</code><br>
689            </td>
690            <td valign="top"><code>REC_SOUR</code><br>
691            </td>
692            <td valign="top"><code>STRING</code><br>
693            </td>
694          </tr>
695          <tr>
696            <td valign="top"><code>ELT_SOUR_TEXT</code><br>
697            </td>
698            <td valign="top"><code>TEXT</code><br>
699            </td>
700            <td valign="top"><code>REC_SOUR</code><br>
701            </td>
702            <td valign="top"><code>STRING</code><br>
703            </td>
704          </tr>
705          <tr>
706            <td valign="top"><code>ELT_SUBN_SUBM</code><br>
707            </td>
708            <td valign="top"><code>SUBM</code><br>
709            </td>
710            <td valign="top"><code>REC_SUBN</code><br>
711            </td>
712            <td valign="top"><code>XREF_PTR(SUBM)</code><br>
713            </td>
714          </tr>
715          <tr>
716            <td valign="top"><code>ELT_SUBN_FAMF</code><br>
717            </td>
718            <td valign="top"><code>FAMF</code><br>
719            </td>
720            <td valign="top"><code>REC_SUBN</code><br>
721            </td>
722            <td valign="top"><code>STRING</code><br>
723            </td>
724          </tr>
725          <tr>
726            <td valign="top"><code>ELT_SUBN_TEMP</code><br>
727            </td>
728            <td valign="top"><code>TEMP</code><br>
729            </td>
730            <td valign="top"><code>REC_SUBN</code><br>
731            </td>
732            <td valign="top"><code>STRING</code><br>
733            </td>
734          </tr>
735          <tr>
736            <td valign="top"><code>ELT_SUBN_ANCE</code><br>
737            </td>
738            <td valign="top"><code>ANCE</code><br>
739            </td>
740            <td valign="top"><code>REC_SUBN</code><br>
741            </td>
742            <td valign="top"><code>STRING</code><br>
743            </td>
744          </tr>
745          <tr>
746            <td valign="top"><code>ELT_SUBN_DESC</code><br>
747            </td>
748            <td valign="top"><code>DESC</code><br>
749            </td>
750            <td valign="top"><code>REC_SUBN</code><br>
751            </td>
752            <td valign="top"><code>STRING</code><br>
753            </td>
754          </tr>
755          <tr>
756            <td valign="top"><code>ELT_SUBN_ORDI</code><br>
757            </td>
758            <td valign="top"><code>ORDI</code><br>
759            </td>
760            <td valign="top"><code>REC_SUBN</code><br>
761            </td>
762            <td valign="top"><code>STRING</code><br>
763            </td>
764          </tr>
765          <tr>
766            <td valign="top"><code>ELT_SUBN_RIN</code><br>
767            </td>
768            <td valign="top"><code>RIN</code><br>
769            </td>
770            <td valign="top"><code>REC_SUBN</code><br>
771            </td>
772            <td valign="top"><code>STRING</code><br>
773            </td>
774          </tr>
775          <tr>
776            <td valign="top"><code>ELT_SUBM_NAME</code><br>
777            </td>
778            <td valign="top"><nobr><code>NAME</code></nobr><br>
779            </td>
780            <td valign="top"><code>REC_SUBM</code><br>
781            </td>
782            <td valign="top"><code>STRING</code><br>
783            </td>
784          </tr>
785          <tr>
786            <td valign="top"><code>ELT_SUBM_LANG</code><br>
787            </td>
788            <td valign="top"><code>LANG</code><br>
789            </td>
790            <td valign="top"><code>REC_SUBM</code><br>
791            </td>
792            <td valign="top"><code>STRING</code><br>
793            </td>
794          </tr>
795          <tr>
796            <td valign="top"><code>ELT_SUBM_RFN</code><br>
797            </td>
798            <td valign="top"><code>RFN</code><br>
799            </td>
800            <td valign="top"><code>REC_SUBM</code><br>
801            </td>
802            <td valign="top"><code>STRING</code><br>
803            </td>
804          </tr>
805          <tr>
806            <td valign="top"><code>ELT_SUBM_RIN</code><br>
807            </td>
808            <td valign="top"><code>RIN</code><br>
809            </td>
810            <td valign="top"><code>REC_SUBM</code><br>
811            </td>
812            <td valign="top"><code>STRING</code><br>
813            </td>
814          </tr>
815          <tr>
816            <td valign="top"><code>ELT_SUB_ADDR</code><br>
817            </td>
818            <td valign="top"><code>ADDR</code><br>
819            </td>
820            <td valign="top"><code>ELT_HEAD_SOUR_CORP,<br>
821     REC_REPO, REC_SUBM,<br>
822           </code><code>ELT_SUB_FAM_EVT</code>,<br>
823           <code>ELT_SUB_FAM_EVT_EVEN,<br>
824     ELT_SUB_INDIV_ATTR,<br>
825     ELT_SUB_INDIV_RESI,<br>
826     ELT_SUB_INDIV_BIRT,<br>
827     ELT_SUB_INDIV_GEN,<br>
828     ELT_SUB_INDIV_ADOP,<br>
829 ELT_SUB_INDIV_EVEN</code><br>
830            </td>
831            <td valign="top"><code>STRING</code><br>
832            </td>
833          </tr>
834          <tr>
835            <td valign="top"><code>ELT_SUB_ADDR_CONT</code><br>
836            </td>
837            <td valign="top"><code>CONT</code><br>
838            </td>
839            <td valign="top"><code>ELT_SUB_ADDR</code><br>
840            </td>
841            <td valign="top"><code>STRING</code><br>
842            </td>
843          </tr>
844          <tr>
845            <td valign="top"><code>ELT_SUB_ADDR_ADR1</code><br>
846            </td>
847            <td valign="top"><code>ADR1</code><br>
848            </td>
849            <td valign="top"><code>ELT_SUB_ADDR</code><br>
850            </td>
851            <td valign="top"><code>STRING</code><br>
852            </td>
853          </tr>
854          <tr>
855            <td valign="top"><code>ELT_SUB_ADDR_ADR2</code><br>
856            </td>
857            <td valign="top"><code>ADR2</code><br>
858            </td>
859            <td valign="top"><code>ELT_SUB_ADDR</code><br>
860            </td>
861            <td valign="top"><code>STRING</code><br>
862            </td>
863          </tr>
864          <tr>
865            <td valign="top"><code>ELT_SUB_ADDR_CITY</code><br>
866            </td>
867            <td valign="top"><code>CITY</code><br>
868            </td>
869            <td valign="top"><code>ELT_SUB_ADDR</code><br>
870            </td>
871            <td valign="top"><code>STRING</code><br>
872            </td>
873          </tr>
874          <tr>
875            <td valign="top"><code>ELT_SUB_ADDR_STAE</code><br>
876            </td>
877            <td valign="top"><code>STAE</code><br>
878            </td>
879            <td valign="top"><code>ELT_SUB_ADDR</code><br>
880            </td>
881            <td valign="top"><code>STRING</code><br>
882            </td>
883          </tr>
884          <tr>
885            <td valign="top"><code>ELT_SUB_ADDR_POST</code><br>
886            </td>
887            <td valign="top"><code>POST</code><br>
888            </td>
889            <td valign="top"><code>ELT_SUB_ADDR</code><br>
890            </td>
891            <td valign="top"><code>STRING</code><br>
892            </td>
893          </tr>
894          <tr>
895            <td valign="top"><code>ELT_SUB_ADDR_CTRY</code><br>
896            </td>
897            <td valign="top"><code>CTRY</code><br>
898            </td>
899            <td valign="top"><code>ELT_SUB_ADDR</code><br>
900            </td>
901            <td valign="top"><code>STRING</code><br>
902            </td>
903          </tr>
904          <tr>
905            <td valign="top"><code>ELT_SUB_PHON</code><br>
906            </td>
907            <td valign="top"><code>PHON</code><br>
908            </td>
909            <td valign="top"><code>ELT_HEAD_SOUR_CORP,<br>
910     REC_REPO, REC_SUBM,<br>
911           </code><code>ELT_SUB_FAM_EVT,<br>
912           </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
913     ELT_SUB_INDIV_ATTR,<br>
914     ELT_SUB_INDIV_RESI,<br>
915     ELT_SUB_INDIV_BIRT,<br>
916     ELT_SUB_INDIV_GEN,<br>
917     ELT_SUB_INDIV_ADOP,<br>
918 ELT_SUB_INDIV_EVEN</code><br>
919            </td>
920            <td valign="top"><code>STRING</code><br>
921            </td>
922          </tr>
923          <tr>
924            <td valign="top"><code>ELT_SUB_ASSO</code><br>
925            </td>
926            <td valign="top"><code>ASSO</code><br>
927            </td>
928            <td valign="top"><code>REC_INDI</code><br>
929            </td>
930            <td valign="top"><code>XREF_PTR(FAM),<br>
931 XREF_PTR(INDI),<br>
932 XREF_PTR(NOTE),<br>
933 XREF_PTR(OBJE),<br>
934 XREF_PTR(REPO),<br>
935 XREF_PTR(SOUR),<br>
936 XREF_PTR(SUBM),<br>
937 XREF_PTR(SUBN)</code><br>
938            </td>
939          </tr>
940          <tr>
941            <td valign="top"><code>ELT_SUB_ASSO_TYPE</code><br>
942            </td>
943            <td valign="top"><code>TYPE</code><br>
944            </td>
945            <td valign="top"><code>ELT_SUB_ASSO</code><br>
946            </td>
947            <td valign="top"><code>STRING</code><br>
948            </td>
949          </tr>
950          <tr>
951            <td valign="top"><code>ELT_SUB_ASSO_RELA</code><br>
952            </td>
953            <td valign="top"><code>RELA</code><br>
954            </td>
955            <td valign="top"><code>ELT_SUB_ASSO</code><br>
956            </td>
957            <td valign="top"><code>STRING</code><br>
958            </td>
959          </tr>
960          <tr>
961            <td valign="top"><code>ELT_SUB_CHAN</code><br>
962            </td>
963            <td valign="top"><code>CHAN</code><br>
964            </td>
965            <td valign="top"><code>REC_FAM, REC_INDI,<br>
966     REC_OBJE, REC_NOTE,<br>
967     REC_REPO, REC_SOUR,<br>
968     REC_SUBM<br>
969           </code><br>
970            </td>
971            <td valign="top"><code>NULL</code><br>
972            </td>
973          </tr>
974          <tr>
975            <td valign="top"><code>ELT_SUB_CHAN_DATE</code><br>
976            </td>
977            <td valign="top"><code>DATE</code><br>
978            </td>
979            <td valign="top"><code>ELT_SUB_CHAN</code><br>
980            </td>
981            <td valign="top"><code>DATE</code><br>
982            </td>
983          </tr>
984          <tr>
985            <td valign="top"><code>ELT_SUB_CHAN_TIME</code><br>
986            </td>
987            <td valign="top"><code>TIME</code><br>
988            </td>
989            <td valign="top"><code>ELT_SUB_CHAN_DATE</code><br>
990            </td>
991            <td valign="top"><code>STRING</code><br>
992            </td>
993          </tr>
994          <tr>
995            <td valign="top"><code>ELT_SUB_FAMC</code><br>
996            </td>
997            <td valign="top"><code>FAMC</code><br>
998            </td>
999            <td valign="top"><code>REC_INDI</code><br>
1000            </td>
1001            <td valign="top"><code>XREF_PTR(FAM)</code><br>
1002            </td>
1003          </tr>
1004          <tr>
1005            <td valign="top"><code>ELT_SUB_FAMC_PEDI</code><br>
1006            </td>
1007            <td valign="top"><code>PEDI</code><br>
1008            </td>
1009            <td valign="top"><code>ELT_SUB_FAMC</code><br>
1010            </td>
1011            <td valign="top"><code>STRING</code><br>
1012            </td>
1013          </tr>
1014          <tr>
1015            <td valign="top"><code>ELT_SUB_CONT</code><br>
1016            </td>
1017            <td valign="top"><code>CONT</code><br>
1018            </td>
1019            <td valign="top"><code>ELT_HEAD_NOTE, REC_NOTE,<br>
1020     ELT_SOUR_AUTH, ELT_SOUR_TITL,<br>
1021     ELT_SOUR_PUBL, ELT_SOUR_TEXT,<br>
1022     ELT_SUB_NOTE, <br>
1023     ELT_SUB_SOUR, ELT_SUB_SOUR_TEXT<br>
1024           </code><br>
1025            </td>
1026            <td valign="top"><code>STRING</code><br>
1027            </td>
1028          </tr>
1029          <tr>
1030            <td valign="top"><code>ELT_SUB_CONC</code><br>
1031            </td>
1032            <td valign="top"><code>CONC</code><br>
1033            </td>
1034            <td valign="top"><code>ELT_HEAD_NOTE, REC_NOTE,<br>
1035     ELT_SOUR_AUTH, ELT_SOUR_TITL,<br>
1036     ELT_SOUR_PUBL, ELT_SOUR_TEXT,<br>
1037     ELT_SUB_NOTE, <br>
1038     ELT_SUB_SOUR, ELT_SUB_SOUR_TEXT<br>
1039           </code><br>
1040            </td>
1041            <td valign="top"><code>STRING</code><br>
1042            </td>
1043          </tr>
1044          <tr>
1045            <td valign="top"><code>ELT_SUB_EVT_TYPE</code><br>
1046            </td>
1047            <td valign="top"><code>TYPE</code><br>
1048            </td>
1049            <td valign="top"><code>ELT_SUB_FAM_EVT,<br>
1050           </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
1051     ELT_SUB_INDIV_ATTR,<br>
1052     ELT_SUB_INDIV_RESI,<br>
1053     ELT_SUB_INDIV_BIRT,<br>
1054     ELT_SUB_INDIV_GEN,<br>
1055     ELT_SUB_INDIV_ADOP,<br>
1056 ELT_SUB_INDIV_EVEN</code><br>
1057            </td>
1058            <td valign="top"><code>STRING</code><br>
1059            </td>
1060          </tr>
1061          <tr>
1062            <td valign="top"><code>ELT_SUB_EVT_DATE</code><br>
1063            </td>
1064            <td valign="top"><code>DATE</code><br>
1065            </td>
1066            <td valign="top"><code>ELT_SUB_FAM_EVT</code>,<br>
1067           <code>ELT_SUB_FAM_EVT_EVEN,<br>
1068     ELT_SUB_INDIV_ATTR</code><code>,<br>
1069      ELT_SUB_INDIV_RESI,<br>
1070      ELT_SUB_INDIV_BIRT,<br>
1071      ELT_SUB_INDIV_GEN,<br>
1072      ELT_SUB_INDIV_ADOP,<br>
1073 ELT_SUB_INDIV_EVEN</code><br>
1074            </td>
1075            <td valign="top"><code>DATE</code><br>
1076            </td>
1077          </tr>
1078          <tr>
1079            <td valign="top"><code>ELT_SUB_EVT_AGE</code><br>
1080            </td>
1081            <td valign="top"><code>AGE</code><br>
1082            </td>
1083            <td valign="top"><code>ELT_SUB_FAM_EVT,<br>
1084           </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
1085     ELT_SUB_INDIV_ATTR,<br>
1086     ELT_SUB_INDIV_RESI</code><code>,<br>
1087      ELT_SUB_INDIV_BIRT,<br>
1088      ELT_SUB_INDIV_GEN,<br>
1089      ELT_SUB_INDIV_ADOP,<br>
1090 ELT_SUB_INDIV_EVEN</code><br>
1091            </td>
1092            <td valign="top"><code>AGE</code><br>
1093            </td>
1094          </tr>
1095          <tr>
1096            <td valign="top"><code>ELT_SUB_EVT_AGNC</code><br>
1097            </td>
1098            <td valign="top"><code>AGNC</code><br>
1099            </td>
1100            <td valign="top"><code>ELT_SUB_FAM_EVT,<br>
1101           </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
1102     ELT_SUB_INDIV_ATTR,<br>
1103     ELT_SUB_INDIV_RESI</code><code>,<br>
1104      ELT_SUB_INDIV_BIRT,<br>
1105      ELT_SUB_INDIV_GEN,<br>
1106      ELT_SUB_INDIV_ADOP,<br>
1107 ELT_SUB_INDIV_EVEN</code><br>
1108            </td>
1109            <td valign="top"><code>STRING</code><br>
1110            </td>
1111          </tr>
1112          <tr>
1113            <td valign="top"><code>ELT_SUB_EVT_CAUS</code><br>
1114            </td>
1115            <td valign="top"><code>CAUS</code><br>
1116            </td>
1117            <td valign="top"><code>ELT_SUB_FAM_EVT,<br>
1118           </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
1119     ELT_SUB_INDIV_ATTR,<br>
1120     ELT_SUB_INDIV_RESI</code><code>,<br>
1121      ELT_SUB_INDIV_BIRT,<br>
1122      ELT_SUB_INDIV_GEN,<br>
1123      ELT_SUB_INDIV_ADOP,<br>
1124 ELT_SUB_INDIV_EVEN</code><br>
1125            </td>
1126            <td valign="top"><code>STRING</code><br>
1127            </td>
1128          </tr>
1129          <tr>
1130            <td valign="top"><code>ELT_SUB_FAM_EVT</code><br>
1131            </td>
1132            <td valign="top"><code>ANUL, CENS, DIV,<br>
1133      DIVF, ENGA, MARR,<br>
1134      MARB, MARC, MARL,<br>
1135      MARS</code><br>
1136            </td>
1137            <td valign="top"><code>REC_FAM</code><br>
1138            </td>
1139            <td valign="top"><code>NULL<br>
1140      STRING</code><br>
1141            </td>
1142          </tr>
1143          <tr>
1144            <td valign="top"><code>ELT_SUB_FAM_EVT_HUSB</code><br>
1145            </td>
1146            <td valign="top"><code>HUSB</code><br>
1147            </td>
1148            <td valign="top"><code>ELT_SUB_FAM_EVT</code>,<br>
1149           <code>ELT_SUB_FAM_EVT_EVEN</code><br>
1150            </td>
1151            <td valign="top"><code>NULL</code><br>
1152            </td>
1153          </tr>
1154          <tr>
1155            <td valign="top"><code>ELT_SUB_FAM_EVT_WIFE</code><br>
1156            </td>
1157            <td valign="top"><code>WIFE</code><br>
1158            </td>
1159            <td valign="top"><code>ELT_SUB_FAM_EVT</code>,<br>
1160           <code>ELT_SUB_FAM_EVT_EVEN</code><br>
1161            </td>
1162            <td valign="top"><code>NULL</code><br>
1163            </td>
1164          </tr>
1165          <tr>
1166            <td valign="top"><code>ELT_SUB_FAM_EVT_AGE</code><br>
1167            </td>
1168            <td valign="top"><code>AGE</code><br>
1169            </td>
1170            <td valign="top"><code>ELT_SUB_FAM_EVT_HUSB</code>,<br>
1171           <code>ELT_SUB_FAM_EVT_WIFE</code><br>
1172            </td>
1173            <td valign="top"><code>AGE</code><br>
1174            </td>
1175          </tr>
1176          <tr>
1177            <td valign="top"><code>ELT_SUB_FAM_EVT_EVEN</code><br>
1178            </td>
1179            <td valign="top"><code>EVEN</code><br>
1180            </td>
1181            <td valign="top"><code>REC_FAM</code><br>
1182            </td>
1183            <td valign="top"><code>NULL</code><br>
1184            </td>
1185          </tr>
1186          <tr>
1187            <td valign="top"><code>ELT_SUB_IDENT_REFN</code><br>
1188            </td>
1189            <td valign="top"><code>REFN</code><br>
1190            </td>
1191            <td valign="top"><code>REC_FAM, REC_INDI,<br>
1192     REC_OBJE, REC_NOTE,<br>
1193     REC_REPO, REC_SOUR<br>
1194           </code><br>
1195            </td>
1196            <td valign="top"><code>STRING</code><br>
1197            </td>
1198          </tr>
1199          <tr>
1200            <td valign="top"><code>ELT_SUB_IDENT_REFN_TYPE</code><br>
1201            </td>
1202            <td valign="top"><code>TYPE</code><br>
1203            </td>
1204            <td valign="top"><code>ELT_SUB_IDENT_REFN</code><br>
1205            </td>
1206            <td valign="top"><code>STRING</code><br>
1207            </td>
1208          </tr>
1209          <tr>
1210            <td valign="top"><code>ELT_SUB_IDENT_RIN</code><br>
1211            </td>
1212            <td valign="top"><code>RIN</code><br>
1213            </td>
1214            <td valign="top"><code>REC_FAM, REC_INDI,<br>
1215     REC_OBJE, REC_NOTE,<br>
1216     REC_REPO, REC_SOUR<br>
1217           </code><br>
1218            </td>
1219            <td valign="top"><code>STRING</code><br>
1220            </td>
1221          </tr>
1222          <tr>
1223            <td valign="top"><code>ELT_SUB_INDIV_ATTR</code><br>
1224            </td>
1225            <td valign="top"><code>CAST, DSCR, EDUC,<br>
1226      IDNO, NATI, NCHR,<br>
1227      NMR, OCCU, PROP,<br>
1228      RELI, SSN, TITL</code><br>
1229            </td>
1230            <td valign="top"><code>REC_INDI</code><br>
1231            </td>
1232            <td valign="top"><code>STRING</code><br>
1233            </td>
1234          </tr>
1235          <tr>
1236            <td valign="top"><code>ELT_SUB_INDIV_RESI</code><br>
1237            </td>
1238            <td valign="top"><code>RESI</code><br>
1239            </td>
1240            <td valign="top"><code>REC_INDI</code><br>
1241            </td>
1242            <td valign="top"><code>NULL</code><br>
1243            </td>
1244          </tr>
1245          <tr>
1246            <td valign="top"><code>ELT_SUB_INDIV_BIRT</code><br>
1247            </td>
1248            <td valign="top"><code>BIRT, CHR</code><br>
1249            </td>
1250            <td valign="top"><code>REC_INDI</code><br>
1251            </td>
1252            <td valign="top"><code>NULL<br>
1253      STRING</code><br>
1254            </td>
1255          </tr>
1256          <tr>
1257            <td valign="top"><code>ELT_SUB_INDIV_BIRT_FAMC</code><br>
1258            </td>
1259            <td valign="top"><code>FAMC</code><br>
1260            </td>
1261            <td valign="top"><code>ELT_SUB_INDIV_BIRT</code><br>
1262            </td>
1263            <td valign="top"><code>XREF_PTR(FAM)</code><br>
1264            </td>
1265          </tr>
1266          <tr>
1267            <td valign="top"><code>ELT_SUB_INDIV_GEN</code><br>
1268            </td>
1269            <td valign="top"><code>DEAT, BURI, CREM,<br>
1270      BAPM, BARM, BASM,<br>
1271      BLES, CHRA, CONF,<br>
1272      FCOM, ORDN, NATU,<br>
1273      EMIG, IMMI, CENS,<br>
1274      PROB, WILL, GRAD,<br>
1275      RETI</code><br>
1276            </td>
1277            <td valign="top"><code>REC_INDI</code><br>
1278            </td>
1279            <td valign="top"><code>NULL<br>
1280      STRING</code><br>
1281            </td>
1282          </tr>
1283          <tr>
1284            <td valign="top"><code>ELT_SUB_INDIV_ADOP</code><br>
1285            </td>
1286            <td valign="top"><code>ADOP</code><br>
1287            </td>
1288            <td valign="top"><code>REC_INDI</code><br>
1289            </td>
1290            <td valign="top"><code>NULL<br>
1291      STRING</code><br>
1292            </td>
1293          </tr>
1294          <tr>
1295            <td valign="top"><code>ELT_SUB_INDIV_ADOP_FAMC</code><br>
1296            </td>
1297            <td valign="top"><code>FAMC</code><br>
1298            </td>
1299            <td valign="top"><code>ELT_SUB_INDIV_ADOP</code><br>
1300            </td>
1301            <td valign="top"><code>XREF_PTR(FAM)</code><br>
1302            </td>
1303          </tr>
1304          <tr>
1305            <td valign="top"><code>ELT_SUB_INDIV_ADOP_FAMC_ADOP</code><br>
1306            </td>
1307            <td valign="top"><code>ADOP</code><br>
1308            </td>
1309            <td valign="top"><code>ELT_SUB_INDIV_ADOP_FAMC</code><br>
1310            </td>
1311            <td valign="top"><code>STRING</code><br>
1312            </td>
1313          </tr>
1314          <tr>
1315            <td valign="top"><code>ELT_SUB_INDIV_EVEN</code><br>
1316            </td>
1317            <td valign="top"><code>EVEN</code><br>
1318            </td>
1319            <td valign="top"><code>REC_INDI</code><br>
1320            </td>
1321            <td valign="top"><code>NULL</code><br>
1322            </td>
1323          </tr>
1324          <tr>
1325            <td valign="top"><code>ELT_SUB_LIO_BAPL</code><br>
1326            </td>
1327            <td valign="top"><code>BAPL, CONL, ENDL</code><br>
1328            </td>
1329            <td valign="top"><code>REC_INDI</code><br>
1330            </td>
1331            <td valign="top"><code>NULL</code><br>
1332            </td>
1333          </tr>
1334          <tr>
1335            <td valign="top"><code>ELT_SUB_LIO_BAPL_STAT</code><br>
1336            </td>
1337            <td valign="top"><code>STAT</code><br>
1338            </td>
1339            <td valign="top"><code></code><code>ELT_SUB_LIO_BAPL,<br>
1340     ELT_SUB_LIO_SLGC<br>
1341           </code><br>
1342            </td>
1343            <td valign="top"><code>STRING</code><br>
1344            </td>
1345          </tr>
1346          <tr>
1347            <td valign="top"><code>ELT_SUB_LIO_BAPL_DATE</code><br>
1348            </td>
1349            <td valign="top"><code>DATE</code><br>
1350            </td>
1351            <td valign="top"><code>ELT_SUB_LIO_BAPL</code><code>,<br>
1352      ELT_SUB_LIO_SLGC<br>
1353           </code><br>
1354           <br>
1355            </td>
1356            <td valign="top"><code>DATE</code><br>
1357            </td>
1358          </tr>
1359          <tr>
1360            <td valign="top"><code>ELT_SUB_LIO_BAPL_TEMP</code><br>
1361            </td>
1362            <td valign="top"><code>TEMP</code><br>
1363            </td>
1364            <td valign="top"><code>ELT_SUB_LIO_BAPL</code><code>,<br>
1365      ELT_SUB_LIO_SLGC<br>
1366           </code><br>
1367           <br>
1368            </td>
1369            <td valign="top"><code>STRING</code><br>
1370            </td>
1371          </tr>
1372          <tr>
1373            <td valign="top"><code>ELT_SUB_LIO_BAPL_PLAC</code><br>
1374            </td>
1375            <td valign="top"><code>PLAC</code><br>
1376            </td>
1377            <td valign="top"><code>ELT_SUB_LIO_BAPL</code><code>,<br>
1378      ELT_SUB_LIO_SLGC<br>
1379           </code><br>
1380           <br>
1381            </td>
1382            <td valign="top"><code>STRING</code><br>
1383            </td>
1384          </tr>
1385          <tr>
1386            <td valign="top"><code>ELT_SUB_LIO_SLGC</code><br>
1387            </td>
1388            <td valign="top"><code>SLGC</code><br>
1389            </td>
1390            <td valign="top"><code>REC_INDI</code><br>
1391            </td>
1392            <td valign="top"><code>NULL</code><br>
1393            </td>
1394          </tr>
1395          <tr>
1396            <td valign="top"><code>ELT_SUB_LIO_SLGC_FAMC</code><br>
1397            </td>
1398            <td valign="top"><code>FAMC</code><br>
1399            </td>
1400            <td valign="top"><code>ELT_SUB_LIO_SLGC</code><br>
1401            </td>
1402            <td valign="top"><code>XREF_PTR(FAM)</code><br>
1403            </td>
1404          </tr>
1405          <tr>
1406            <td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
1407            </td>
1408            <td valign="top"><code>SLGS</code><br>
1409            </td>
1410            <td valign="top"><code>REC_FAM</code><br>
1411            </td>
1412            <td valign="top"><code>NULL</code><br>
1413            </td>
1414          </tr>
1415          <tr>
1416            <td valign="top"><code>ELT_SUB_LSS_SLGS_STAT</code><br>
1417            </td>
1418            <td valign="top"><code>STAT</code><br>
1419            </td>
1420            <td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
1421            </td>
1422            <td valign="top"><code>STRING</code><br>
1423            </td>
1424          </tr>
1425          <tr>
1426            <td valign="top"><code>ELT_SUB_LSS_SLGS_DATE</code><br>
1427            </td>
1428            <td valign="top"><code>DATE</code><br>
1429            </td>
1430            <td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
1431            </td>
1432            <td valign="top"><code>DATE</code><br>
1433            </td>
1434          </tr>
1435          <tr>
1436            <td valign="top"><code>ELT_SUB_LSS_SLGS_TEMP</code><br>
1437            </td>
1438            <td valign="top"><code>TEMP</code><br>
1439            </td>
1440            <td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
1441            </td>
1442            <td valign="top"><code>STRING</code><br>
1443            </td>
1444          </tr>
1445          <tr>
1446            <td valign="top"><code>ELT_SUB_LSS_SLGS_PLAC</code><br>
1447            </td>
1448            <td valign="top"><code>PLAC</code><br>
1449            </td>
1450            <td valign="top"><code>ELT_SUB_LSS_SLGS</code><br>
1451            </td>
1452            <td valign="top"><code>STRING</code><br>
1453            </td>
1454          </tr>
1455          <tr>
1456            <td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
1457            </td>
1458            <td valign="top"><code>OBJE</code><br>
1459            </td>
1460            <td valign="top"><code>REC_FAM, REC_INDI,<br>
1461     REC_SOUR, REC_SUBM,<br>
1462           </code><code>ELT_SUB_FAM_EVT,<br>
1463     ELT_SUB_FAM_EVT_EVEN,<br>
1464     ELT_SUB_INDIV_ATTR,<br>
1465     ELT_SUB_INDIV_RESI</code><code>,<br>
1466      ELT_SUB_INDIV_BIRT,<br>
1467      ELT_SUB_INDIV_GEN,<br>
1468      ELT_SUB_INDIV_ADOP,<br>
1469 ELT_SUB_INDIV_EVEN,<br>
1470     ELT_SUB_SOUR</code><br>
1471            </td>
1472            <td valign="top"><code>NULL<br>
1473  XREF_PTR(OBJE)<br>
1474        </code><br>
1475            </td>
1476          </tr>
1477          <tr>
1478            <td valign="top"><code>ELT_SUB_MULTIM_OBJE_FORM</code><br>
1479            </td>
1480            <td valign="top"><code>FORM</code><br>
1481            </td>
1482            <td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
1483            </td>
1484            <td valign="top"><code>STRING</code><br>
1485            </td>
1486          </tr>
1487          <tr>
1488            <td valign="top"><code>ELT_SUB_MULTIM_OBJE_TITL</code><br>
1489            </td>
1490            <td valign="top"><code>TITL</code><br>
1491            </td>
1492            <td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
1493            </td>
1494            <td valign="top"><code>STRING</code><br>
1495            </td>
1496          </tr>
1497          <tr>
1498            <td valign="top"><code>ELT_SUB_MULTIM_OBJE_FILE</code><br>
1499            </td>
1500            <td valign="top"><code>FILE</code><br>
1501            </td>
1502            <td valign="top"><code>ELT_SUB_MULTIM_OBJE</code><br>
1503            </td>
1504            <td valign="top"><code>STRING</code><br>
1505            </td>
1506          </tr>
1507          <tr>
1508            <td valign="top"><code>ELT_SUB_NOTE</code><br>
1509            </td>
1510            <td valign="top"><code>NOTE</code><br>
1511            </td>
1512            <td valign="top"><code>REC_FAM, REC_INDI,<br>
1513     REC_OBJE, REC_REPO,<br>
1514     REC_SOUR, ELT_SOUR_DATA,<br>
1515     ELT_SUB_ASSO, ELT_SUB_CHAN,<br>
1516     ELT_SUB_FAMC, </code><code>ELT_SUB_FAM_EVT,<br>
1517     ELT_SUB_FAM_EVT_EVEN,<br>
1518     ELT_SUB_INDIV_ATTR,<br>
1519     ELT_SUB_INDIV_RESI</code><code>,<br>
1520      ELT_SUB_INDIV_BIRT,<br>
1521      ELT_SUB_INDIV_GEN,<br>
1522      ELT_SUB_INDIV_ADOP,<br>
1523 ELT_SUB_INDIV_EVEN,<br>
1524     ELT_SUB_LIO_BAPL,<br>
1525     ELT_SUB_LIO_SLGC,<br>
1526     ELT_SUB_LSS_SLGS,<br>
1527     ELT_SUB_MULTIM_OBJE,<br>
1528     ELT_SUB_PERS_NAME,<br>
1529     ELT_SUB_PLAC,<br>
1530     ELT_SUB_SOUR,<br>
1531     ELT_SUB_REPO,<br>
1532     ELT_SUB_FAMS</code><br>
1533            </td>
1534            <td valign="top"><code>NULL<br>
1535      STRING<br>
1536  XREF_PTR(NOTE)<br>
1537        </code><br>
1538            </td>
1539          </tr>
1540          <tr>
1541            <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1542            </td>
1543            <td valign="top"><code>NAME</code><br>
1544            </td>
1545            <td valign="top"><code>REC_INDI</code><br>
1546            </td>
1547            <td valign="top"><code>STRING</code><br>
1548            </td>
1549          </tr>
1550          <tr>
1551            <td valign="top"><code>ELT_SUB_PERS_NAME_NPFX</code><br>
1552            </td>
1553            <td valign="top"><code>NPFX</code><br>
1554            </td>
1555            <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1556            </td>
1557            <td valign="top"><code>STRING</code><br>
1558            </td>
1559          </tr>
1560          <tr>
1561            <td valign="top"><code>ELT_SUB_PERS_NAME_GIVN</code><br>
1562            </td>
1563            <td valign="top"><code>GIVN</code><br>
1564            </td>
1565            <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1566            </td>
1567            <td valign="top"><code>STRING</code><br>
1568            </td>
1569          </tr>
1570          <tr>
1571            <td valign="top"><code>ELT_SUB_PERS_NAME_NICK</code><br>
1572            </td>
1573            <td valign="top"><code>NICK</code><br>
1574            </td>
1575            <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1576            </td>
1577            <td valign="top"><code>STRING</code><br>
1578            </td>
1579          </tr>
1580          <tr>
1581            <td valign="top"><code>ELT_SUB_PERS_NAME_SPFX</code><br>
1582            </td>
1583            <td valign="top"><code>SPFX</code><br>
1584            </td>
1585            <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1586            </td>
1587            <td valign="top"><code>STRING</code><br>
1588            </td>
1589          </tr>
1590          <tr>
1591            <td valign="top"><code>ELT_SUB_PERS_NAME_SURN</code><br>
1592            </td>
1593            <td valign="top"><code>SURN</code><br>
1594            </td>
1595            <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1596            </td>
1597            <td valign="top"><code>STRING</code><br>
1598            </td>
1599          </tr>
1600          <tr>
1601            <td valign="top"><code>ELT_SUB_PERS_NAME_NSFX</code><br>
1602            </td>
1603            <td valign="top"><code>NSFX</code><br>
1604            </td>
1605            <td valign="top"><code>ELT_SUB_PERS_NAME</code><br>
1606            </td>
1607            <td valign="top"><code>STRING</code><br>
1608            </td>
1609          </tr>
1610          <tr>
1611            <td valign="top"><code>ELT_SUB_PLAC</code><br>
1612            </td>
1613            <td valign="top"><code>PLAC</code><br>
1614            </td>
1615            <td valign="top"><code>ELT_SUB_FAM_EVT</code>,<br>
1616           <code>ELT_SUB_FAM_EVT_EVEN,<br>
1617     ELT_SUB_INDIV_ATTR,<br>
1618     ELT_SUB_INDIV_RESI</code><code>,
1619      <br>
1620 ELT_SUB_INDIV_BIRT,<br>
1621      ELT_SUB_INDIV_GEN,<br>
1622      ELT_SUB_INDIV_ADOP,<br>
1623 ELT_SUB_INDIV_EVEN</code><br>
1624            </td>
1625            <td valign="top"><code>STRING</code><br>
1626            </td>
1627          </tr>
1628          <tr>
1629            <td valign="top"><code>ELT_SUB_PLAC_FORM</code><br>
1630            </td>
1631            <td valign="top"><code>FORM</code><br>
1632            </td>
1633            <td valign="top"><code>ELT_SUB_PLAC</code><br>
1634            </td>
1635            <td valign="top"><code>STRING</code><br>
1636            </td>
1637          </tr>
1638          <tr>
1639            <td valign="top"><code>ELT_SUB_SOUR</code><br>
1640            </td>
1641            <td valign="top"><code>SOUR</code><br>
1642            </td>
1643            <td valign="top"><code>REC_FAM, REC_INDI,<br>
1644     REC_NOTE, ELT_SUB_ASSO<br>
1645           </code><code>ELT_SUB_FAM_EVT,<br>
1646           </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
1647     ELT_SUB_INDIV_ATTR,<br>
1648     ELT_SUB_INDIV_RESI</code><code>,<br>
1649      ELT_SUB_INDIV_BIRT,<br>
1650      ELT_SUB_INDIV_GEN,<br>
1651      ELT_SUB_INDIV_ADOP,<br>
1652 ELT_SUB_INDIV_EVEN,<br>
1653     ELT_SUB_LIO_BAPL,<br>
1654     ELT_SUB_LIO_SLGC,<br>
1655     ELT_SUB_LSS_SLGS,<br>
1656     ELT_SUB_NOTE,<br>
1657     ELT_SUB_PERS_NAME,<br>
1658     ELT_SUB_PLAC</code><br>
1659            </td>
1660            <td valign="top"><code>STRING<br>
1661  XREF_PTR(SOUR)</code><br>
1662            </td>
1663          </tr>
1664          <tr>
1665            <td valign="top"><code>ELT_SUB_SOUR_PAGE</code><br>
1666            </td>
1667            <td valign="top"><code>PAGE</code><br>
1668            </td>
1669            <td valign="top"><code>ELT_SUB_SOUR</code><br>
1670            </td>
1671            <td valign="top"><code>STRING</code><br>
1672            </td>
1673          </tr>
1674          <tr>
1675            <td valign="top"><code>ELT_SUB_SOUR_EVEN</code><br>
1676            </td>
1677            <td valign="top"><code>EVEN</code><br>
1678            </td>
1679            <td valign="top"><code>ELT_SUB_SOUR</code><br>
1680            </td>
1681            <td valign="top"><code>STRING</code><br>
1682            </td>
1683          </tr>
1684          <tr>
1685            <td valign="top"><code>ELT_SUB_SOUR_EVEN_ROLE</code><br>
1686            </td>
1687            <td valign="top"><code>ROLE</code><br>
1688            </td>
1689            <td valign="top"><code>ELT_SUB_SOUR_EVEN</code><br>
1690            </td>
1691            <td valign="top"><code>STRING</code><br>
1692            </td>
1693          </tr>
1694          <tr>
1695            <td valign="top"><code>ELT_SUB_SOUR_DATA</code><br>
1696            </td>
1697            <td valign="top"><code>DATA</code><br>
1698            </td>
1699            <td valign="top"><code>ELT_SUB_SOUR</code><br>
1700            </td>
1701            <td valign="top"><code>NULL</code><br>
1702            </td>
1703          </tr>
1704          <tr>
1705            <td valign="top"><code>ELT_SUB_SOUR_DATA_DATE</code><br>
1706            </td>
1707            <td valign="top"><code>DATE</code><br>
1708            </td>
1709            <td valign="top"><code>ELT_SUB_SOUR_DATA</code><br>
1710            </td>
1711            <td valign="top"><code>DATE</code><br>
1712            </td>
1713          </tr>
1714          <tr>
1715            <td valign="top"><code>ELT_SUB_SOUR_TEXT</code><br>
1716            </td>
1717            <td valign="top"><code>TEXT</code><br>
1718            </td>
1719            <td valign="top"><code>ELT_SUB_SOUR<br>
1720     ELT_SUB_SOUR_DATA</code><br>
1721            </td>
1722            <td valign="top"><code>STRING</code><br>
1723            </td>
1724          </tr>
1725          <tr>
1726            <td valign="top"><code>ELT_SUB_SOUR_QUAY</code><br>
1727            </td>
1728            <td valign="top"><code>QUAY</code><br>
1729            </td>
1730            <td valign="top"><code>ELT_SUB_SOUR</code><br>
1731            </td>
1732            <td valign="top"><code>STRING</code><br>
1733            </td>
1734          </tr>
1735          <tr>
1736            <td valign="top"><code>ELT_SUB_REPO</code><br>
1737            </td>
1738            <td valign="top"><code>REPO</code><br>
1739            </td>
1740            <td valign="top"><code>REC_SOUR</code><br>
1741            </td>
1742            <td valign="top"><code>XREF_PTR(REPO)</code><br>
1743            </td>
1744          </tr>
1745          <tr>
1746            <td valign="top"><code>ELT_SUB_REPO_CALN</code><br>
1747            </td>
1748            <td valign="top"><code>CALN</code><br>
1749            </td>
1750            <td valign="top"><code>ELT_SUB_REPO</code><br>
1751            </td>
1752            <td valign="top"><code>STRING</code><br>
1753            </td>
1754          </tr>
1755          <tr>
1756            <td valign="top"><code>ELT_SUB_REPO_CALN_MEDI</code><br>
1757            </td>
1758            <td valign="top"><code>MEDI</code><br>
1759            </td>
1760            <td valign="top"><code>ELT_SUB_REPO_CALN</code><br>
1761            </td>
1762            <td valign="top"><code>STRING</code><br>
1763            </td>
1764          </tr>
1765          <tr>
1766            <td valign="top"><code>ELT_SUB_FAMS</code><br>
1767            </td>
1768            <td valign="top"><code>FAMS</code><br>
1769            </td>
1770            <td valign="top"><code>REC_INDI</code><br>
1771            </td>
1772            <td valign="top"><code>XREF_PTR(FAM)</code><br>
1773            </td>
1774          </tr>
1775          <tr>
1776            <td valign="top"><code>ELT_USER</code><br>
1777            </td>
1778            <td valign="top"><code>any tag starting<br>
1779      with an underscore</code><br>
1780            </td>
1781            <td valign="top"><code>anywhere</code><br>
1782            </td>
1783            <td valign="top"><code>NULL<br>
1784      STRING<br>
1785  XREF_PTR(USER)</code><br>
1786            </td>
1787          </tr>
1788                    
1789   </tbody>     
1790 </table>
1791            
1792 <hr width="100%" size="2">      
1793 <h2><a name="Gedcom_val_types"></a>Gedcom_val types<br>
1794       </h2>
1795       Currently, the specific <code>Gedcom_val</code> types are (with <code>
1796    val</code>   of type <code>Gedcom_val</code>):<br>
1797      <br>
1798          
1799 <table cellpadding="2" cellspacing="2" border="1" width="100%">
1800        <tbody>
1801          <tr>
1802            <td valign="top"><br>
1803            </td>
1804            <td valign="top"><b>type checker</b><br>
1805            </td>
1806            <td valign="top"><b>cast operator</b><br>
1807            </td>
1808          </tr>
1809          <tr>
1810            <td valign="top">null value<br>
1811            </td>
1812            <td valign="top"><code>GEDCOM_IS_NULL(val)</code><br>
1813            </td>
1814            <td valign="top">N/A<br>
1815            </td>
1816          </tr>
1817          <tr>
1818            <td valign="top">string<br>
1819            </td>
1820            <td valign="top"><code>GEDCOM_IS_STRING(val)</code><br>
1821            </td>
1822            <td valign="top"><code>char* str = GEDCOM_STRING(val);</code><br>
1823            </td>
1824          </tr>
1825          <tr>
1826            <td valign="top">date<br>
1827            </td>
1828            <td valign="top"><code>GEDCOM_IS_DATE(val)</code><br>
1829            </td>
1830            <td valign="top"><code>struct date_value dv = GEDCOM_DATE(val);</code></td>
1831          </tr>
1832      <tr>
1833       <td valign="top">age<br>
1834       </td>
1835       <td valign="top"><code>GEDCOM_IS_AGE(val)</code><br>
1836       </td>
1837       <td valign="top"><code>struct age_value age = GEDCOM_AGE(val);</code><br>
1838       </td>
1839     </tr>
1840 <tr>
1841        <td valign="top">xref pointer<br>
1842        </td>
1843        <td valign="top"><code>GEDCOM_IS_XREF_PTR(val)</code><br>
1844        </td>
1845        <td valign="top"><code>struct xref_value *xr = GEDCOM_XREF_PTR(val);</code><br>
1846        </td>
1847      </tr>
1848                    
1849   </tbody>     
1850 </table>
1851      <br>
1852      <br>
1853        The type checker returns a true or a false value according to the
1854 type   of the value, but this is in principle only necessary in the rare
1855 circumstances    that two types are possible, or where an optional value
1856 can be provided.   &nbsp;In most cases, the type is fixed for a specific
1857 tag.<br>
1858      <br>
1859       The null value is used for when the GEDCOM spec doesn't allow a value,
1860   or  when an optional value is allowed but none is given.<br>
1861       &nbsp; <br>
1862       The string value is the most general used value currently, for all
1863 those    values that don't have a more specific meaning. &nbsp;In essence,
1864 the value    that is returned by <code>GEDCOM_STRING(val)</code> is always the same as the
1865 <code>raw_value</code> passed    to the start callback, and is thus in fact redundant.<br>
1866      <br>
1867       The date value is used for all elements that return a date. &nbsp;See 
1868 <a href="#date_value">here</a> for the definition.<br>
1869  <br>
1870  The xref value is for cross-references between records in the file. &nbsp;See 
1871 <a href="#xref_value">here</a> for the definition.<br>
1872      <br>
1873          
1874 <h3><a name="date_value"></a>struct date_value</h3>
1875      This struct describes a date as given in the GEDCOM file, and has the
1876  following  definition:<br>
1877          
1878 <blockquote><code>struct date_value {<br>
1879      &nbsp; Date_value_type &nbsp;type;<br>
1880      &nbsp; struct date &nbsp; &nbsp; &nbsp;date1;<br>
1881      &nbsp; struct date &nbsp; &nbsp; &nbsp;date2;<br>
1882      &nbsp; char &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; phrase[MAX_PHRASE_LEN 
1883   + 1];<br>
1884      };</code><br>
1885        </blockquote>
1886        It depends on the first member, the type, which members are actually 
1887  relevant:<br>
1888        <br>
1889                    
1890   <table cellpadding="2" cellspacing="2" border="1" width="100%">
1891          <tbody>
1892            <tr>
1893              <td valign="top" align="center"><b>Date_value_type</b><br>
1894              </td>
1895              <td valign="top" align="center"><b>Meaning</b><br>
1896              </td>
1897              <td valign="top" align="center"><b>Relevant members</b><br>
1898              </td>
1899            </tr>
1900            <tr>
1901              <td valign="top"><code>DV_NO_MODIFIER</code><br>
1902              </td>
1903              <td valign="top">just a simple date<br>
1904              </td>
1905              <td valign="top">date1<br>
1906              </td>
1907            </tr>
1908            <tr>
1909              <td valign="top"><code>DV_BEFORE</code><br>
1910              </td>
1911              <td valign="top">a range (BEFORE date1)<br>
1912              </td>
1913              <td valign="top">date1<br>
1914              </td>
1915            </tr>
1916            <tr>
1917              <td valign="top"><code>DV_AFTER</code><br>
1918              </td>
1919              <td valign="top">a range (AFTER date1)<br>
1920              </td>
1921              <td valign="top">date1<br>
1922              </td>
1923            </tr>
1924            <tr>
1925              <td valign="top"><code>DV_BETWEEN</code><br>
1926              </td>
1927              <td valign="top">a range (BETWEEN date1 AND date2)<br>
1928              </td>
1929              <td valign="top">date1, date2<br>
1930              </td>
1931            </tr>
1932            <tr>
1933              <td valign="top"><code>DV_FROM</code><br>
1934              </td>
1935              <td valign="top">a period (FROM date1)<br>
1936              </td>
1937              <td valign="top">date1<br>
1938              </td>
1939            </tr>
1940            <tr>
1941              <td valign="top"><code>DV_TO</code><br>
1942              </td>
1943              <td valign="top">a period (TO date1)<br>
1944              </td>
1945              <td valign="top">date1<br>
1946              </td>
1947            </tr>
1948            <tr>
1949              <td valign="top"><code>DV_FROM_TO</code><br>
1950              </td>
1951              <td valign="top">a period (FROM date1 TO date2)<br>
1952              </td>
1953              <td valign="top">date1, date2<br>
1954              </td>
1955            </tr>
1956            <tr>
1957              <td valign="top"><code>DV_ABOUT</code><br>
1958              </td>
1959              <td valign="top">an approximation (ABOUT date1)<br>
1960              </td>
1961              <td valign="top">date1<br>
1962              </td>
1963            </tr>
1964            <tr>
1965              <td valign="top"><code>DV_CALCULATED</code><br>
1966              </td>
1967              <td valign="top">an approximation (CALCULATED date1)<br>
1968              </td>
1969              <td valign="top">date1<br>
1970              </td>
1971            </tr>
1972            <tr>
1973              <td valign="top"><code>DV_ESTIMATED</code><br>
1974              </td>
1975              <td valign="top">an approximation (ESTIMATED date1)<br>
1976              </td>
1977              <td valign="top">date1<br>
1978              </td>
1979            </tr>
1980            <tr>
1981              <td valign="top"><code>DV_INTERPRETED</code><br>
1982              </td>
1983              <td valign="top">INTERPRETED date1 FROM a given free form date 
1984  phrase<br>
1985              </td>
1986              <td valign="top">date1, phrase<br>
1987              </td>
1988            </tr>
1989            <tr>
1990              <td valign="top"><code>DV_PHRASE</code><br>
1991              </td>
1992              <td valign="top">a free form date phrase<br>
1993              </td>
1994              <td valign="top">phrase<br>
1995              </td>
1996            </tr>
1997                              
1998     </tbody>               
1999   </table>
2000        <br>
2001                    
2002   <h3><a name="date"></a>struct date<br>
2003        </h3>
2004      The <code>date1</code> and <code>date2</code> also have a strict syntax:<br>
2005                    
2006   <blockquote><code>struct date {<br>
2007      &nbsp; Calendar_type &nbsp;cal;<br>
2008      &nbsp; char &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; day_str[MAX_DAY_LEN + 
2009 1];<br>
2010      &nbsp; char &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; month_str[MAX_MONTH_LEN 
2011  +  1];<br>
2012      &nbsp; char &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; year_str[MAX_YEAR_LEN 
2013 +  1];<br>
2014          <br>
2015      &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;day;<br>
2016      &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;month;<br>
2017      &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;year;<br>
2018      &nbsp; Year_type &nbsp; &nbsp; &nbsp;year_type;<br>
2019          <br>
2020      &nbsp; Date_type &nbsp; &nbsp; &nbsp;type;<br>
2021      &nbsp; long int &nbsp; &nbsp; &nbsp; sdn1;<br>
2022      &nbsp; long int &nbsp; &nbsp; &nbsp; sdn2;<br>
2023      };</code><br>
2024          </blockquote>
2025      The first four fields are the primary fields parsed from the value in
2026  the  GEDCOM file. &nbsp;The <code>day_str</code>, <code>month_str</code>
2027  and     <code>  year_str</code> are the literal parts of the date that denote 
2028  the day, month  and year (the <code>day_str</code> and <code>month_str</code>
2029     can be empty) . &nbsp;The calendar type <code>cal</code> is one of (see 
2030  calendar overview     <i>LINK TBD</i>):<br>
2031                              
2032     <ul>
2033            <li><code>CAL_GREGORIAN</code> : the Gregorian calendar</li>
2034            <li><code>CAL_JULIAN</code> : the Julian calendar</li>
2035            <li><code>CAL_HEBREW</code> : the Hebrew (Jewish) calendar</li>
2036            <li><code>CAL_FRENCH_REV</code> : the calendar used after the
2037 French   Revolution</li>
2038            <li><code>CAL_UNKNOWN</code> : an unknown calendar type</li>
2039                              
2040     </ul>
2041      The next four fields are deduced from the first four:<br>
2042                              
2043     <ul>
2044            <li>the <code>day</code> is just the numeric representation of 
2045 the           <code>day_str</code> (starting from 1), -1 if the <code>day_str</code>
2046      is empty</li>
2047            <li>the <code>month</code> is the month number of <code>month_str</code>
2048       in the given calendar type (also starting from 1), -1 if the <code>
2049 month_str</code>     is empty</li>
2050            <li>the <code>year</code> is the numeric representation of the 
2051         <code>    year_str</code></li>
2052                              
2053     </ul>
2054      It is possible that the <code>year_str</code> is given as e.g. "1677/78". 
2055   &nbsp;This is coming from a date in a so called "annunciation style", where 
2056   the year began on 25 March: "20 March 1677/78" is 20 March 1677 in "annunciation
2057   style" and 20 March 1678 in "circumcision style" (the current style). &nbsp;See
2058   calendar overview (<i>LINK TBD</i>).<br>
2059          <br>
2060      In this case, the <code>year</code> will contain the "circumcision style" 
2061   year (1678 in the example), and <code>year_type</code> will be <code>YEAR_DOUBLE.</code>
2062       &nbsp;Normal dates will have a <code>year_type</code> equal to <code>
2063   YEAR_SINGLE</code>   .<br>
2064          <br>
2065      Finally, the last three fields are probably the most interesting values
2066   for applications that want to process dates. &nbsp;Basically, the date
2067 is   converted to a serial day number (aka Julian day), which is the unique
2068 day   number since November 25, 4714 BC in the Gregorian calendar. &nbsp;The
2069 advantage   of these day numbers is that they are unique and independent
2070 of the calendar   system. &nbsp;Furthermore, date differences can just be
2071 computed by subtracting   the serial day numbers.<br>
2072          <br>
2073      However, since dates in GEDCOM are not necessarily exact (e.g. "MAR
2074 1990"),   it is not possible to represent all GEDCOM dates with 1 serial
2075 day number.   &nbsp;Two cases can be distinguished:<br>
2076                              
2077     <ul>
2078            <li>Exact dates (e.g. "25 MAR 1990"):</li>
2079                              
2080     </ul>
2081                              
2082     <blockquote>                                   
2083       <blockquote>These are represented by a serial day number in <code>sdn1</code>
2084       and a <code>Date_type</code> equal to <code>DATE_EXACT</code>.<br>
2085              </blockquote>
2086              </blockquote>
2087                                                  
2088         <ul>
2089                <li>Incomplete dates (e.g. "MAR 1990"):</li>
2090                                                  
2091         </ul>
2092                                                  
2093         <blockquote>                                                    
2094   
2095           
2096   <blockquote>These are represented by 2 serial day numbers (<code>sdn1</code> and <code>sdn2</code>) and a <code>Date_type</code> equal 
2097 to              <code>DATE_BOUNDED</code>.<br>
2098     <br>
2099
2100      For example, the Gregorian date "MAR 1990" is represented by the serial
2101   day numbers for "1 MAR 1990" and "31 MAR 1990", and the Gregorian date
2102 "1990"   is represented by the serial day numbers for "1 JAN 1990" and "31
2103 DEC 1990".   &nbsp;Similarly for the other calendar types.<br>
2104   </blockquote>
2105
2106                  <br>
2107 </blockquote>
2108 <h3><a name="age_value"></a>struct age_value</h3>
2109
2110      This struct describes an age as given in the GEDCOM file, and has the
2111  following  definition:<br>
2112
2113          
2114 <blockquote><code>struct age_value {<br>
2115      &nbsp; Age_type&nbsp; &nbsp; &nbsp; type;<br>
2116      &nbsp; Age_modifier &nbsp;mod;<br>
2117      &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; years;<br>
2118 &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; months;<br>
2119 &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; days;<br>
2120      &nbsp; char &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;phrase[MAX_PHRASE_LEN 
2121   + 1];<br>
2122      };</code><br>
2123        </blockquote>
2124 <blockquote>
2125                  </blockquote>
2126
2127                               
2128             
2129        It depends on the first member, the type, which members are actually 
2130  relevant:<br>
2131 <br>
2132 <table cellpadding="2" cellspacing="2" border="1" width="100%">
2133 <tbody><tr>
2134              <td valign="top" align="center"><b>Age_type</b><br>
2135              </td>
2136              <td valign="top" align="center"><b>Meaning</b><br>
2137              </td>
2138              <td valign="top" align="center"><b>Relevant members</b><br>
2139              </td>
2140            </tr>
2141            <tr>
2142              <td valign="top"><code>AGE_UNRECOGNIZED</code><br>
2143              </td>
2144              <td valign="top">format not recognized, full raw value in phrase<br>
2145              </td>
2146              <td valign="top">phrase<br>
2147              </td>
2148            </tr>
2149            <tr>
2150              <td valign="top"><code>AGE_CHILD</code><br>
2151              </td>
2152              <td valign="top">the indication 'CHILD'<br>
2153              </td>
2154              <td valign="top">mod<br>
2155              </td>
2156            </tr>
2157            <tr>
2158              <td valign="top"><code>AGE_INFANT</code><br>
2159              </td>
2160              <td valign="top">the indication 'INFANT'<br>
2161              </td>
2162              <td valign="top">mod<br>
2163              </td>
2164            </tr>
2165            <tr>
2166              <td valign="top"><code>AGE_STILLBORN</code><br>
2167              </td>
2168              <td valign="top">the indication 'STILLBORN'<br>
2169              </td>
2170              <td valign="top">mod<br>
2171 </td></tr><tr>
2172       <td valign="top"><code>AGE_NUMERIC</code><br>
2173       </td>
2174       <td valign="top">an indication in years, months and/or days (each can be -1 if not given)<br>
2175       </td>
2176       <td valign="top">mod, years, months, days<br>
2177       </td>
2178     </tr>
2179 </tbody>
2180 </table>
2181 <br>
2182 The modifier can be one of the following:<br>
2183 <ul>
2184 <li><code> AGE_NO_MODIFIER</code> : no modifier</li><li><code>AGE_LESS_THAN</code><code></code>&nbsp; : the modifier '&lt;' is added</li><li><code>AGE_GREATER_THAN </code>: the modifier '&gt;' is added</li>
2185 </ul>
2186 <br>
2187 <h3><a name="xref_value"></a>struct xref_value</h3>
2188
2189  This struct represents a cross-reference in the GEDCOM file (but note that 
2190 the <code>Gedcom_val</code> contains a pointer to such a struct, not the struct
2191 itself). &nbsp;It is defined as:<br>
2192              
2193             <blockquote><code>struct xref_value {<br>
2194  &nbsp; Xref_type &nbsp; type,<br>
2195  &nbsp; char* &nbsp; &nbsp; &nbsp; string,<br>
2196  &nbsp; Gedcom_ctxt object<br>
2197  };</code><br>
2198                </blockquote>
2199  The <code>Xref_type</code> gives the type of the cross-reference and can 
2200 be one of:<br>
2201                
2202               <ul>
2203                  <li><code>XREF_NONE</code> (used as default value)</li>
2204                  <li><code>XREF_FAM</code></li>
2205                  <li><code>XREF_INDI</code></li>
2206                  <li><code>XREF_NOTE</code></li>
2207                  <li><code>XREF_OBJE</code></li>
2208                  <li><code>XREF_REPO</code></li>
2209                  <li><code>XREF_SOUR</code></li>
2210                  <li><code>XREF_SUBM</code></li>
2211                  <li><code>XREF_SUBN</code></li><li><code>XREF_ANY</code> (if the type is not known, see below)<br>
2212   </li>
2213
2214                  <li><code>XREF_USER</code> (for application-specific cross-references)<br>
2215                    <code></code></li>
2216                
2217               </ul>
2218  The <code>string</code> gives the actual cross-reference string from the 
2219 GEDCOM file, and the <code>object</code> is initially <code>NULL,</code> but
2220 can be filled by the application with an object (of any type) that corresponds 
2221 with the cross-reference, and then later extracted when the cross-reference 
2222 is used or defined again in the file. &nbsp;This relieves the application 
2223 from the burden of maintaining the mapping between cross-references and objects.<br>
2224 <br>
2225 The value <code>XREF_ANY</code> is used when the type of the object is not
2226 immediately known: it has to come from further information. &nbsp;This is
2227 the case in an association (<code>ELT_SUB_ASSO</code>): the type is then given by the <code>TYPE</code> subtag.<br>
2228                <br>
2229   The parser checks whether all cross-references that are used are defined
2230  (if not, an error is produced) and whether all cross-references that are
2231 defined are used (if not, a warning is produced). &nbsp;It also checks whether
2232 the type of the cross-reference is the same on definition and use (if not,
2233 an error is produced). &nbsp;The first two checks are done at the end of
2234 the parsing, because cross-references can be defined after their usage in
2235 GEDCOM.<br>
2236 <br>
2237 The following functions are available to manipulate xref_value objects:<br>
2238 <blockquote><code>struct xref_value* <b>gedcom_get_by_xref</b> (const char *key)</code><br>
2239   <blockquote>&nbsp;Retrieve an xref_value by its key. &nbsp;Returns <code>NULL</code> if the given key isn't a valid cross-reference key (see below) or isn't used.<br>
2240   </blockquote>
2241   <code>struct xref_value* <b>gedcom_add_xref</b> (Xref_type type, const char* key, Gedcom_ctxt object)</code> <br>
2242   <blockquote>Add an xref_value of the given <code>type</code> (see list above), with the given <code>key</code>, to the given <code>object</code>, with a use count equal to 0. &nbsp;Returns the new xref_value if success. &nbsp;Returns <code>NULL</code> in one of the following cases:<br>
2243     <ul>
2244       <li>the key isn't a valid cross-reference key (see below)</li>
2245       <li>there is already an xref_value with the same key</li>
2246       <li>there was a memory allocation error</li>
2247     </ul>
2248   </blockquote>
2249   <code>int <b>gedcom_delete_xref</b> (const char* key)<br>
2250   </code>
2251   <blockquote>Delete the xref_value corresponding to the given key. &nbsp;Returns 0 if success. &nbsp;Returns 1 in one of the following cases:<br>
2252     <ul>
2253       <li>the key isn't a valid cross-reference key (see below)</li>
2254       <li>there is no xref_value with the given key</li>
2255       <li>the xref_value is still in use, i.e. its use count is not 0 (see <code>gedcom_link_xref</code> and <code>gedcom_unlink_xref</code> below)</li>
2256     </ul>
2257   </blockquote>
2258   <code>struct xref_value* <b>gedcom_link_xref</b> (Xref_type type, const char* key)<br>
2259 struct xref_value* <b>gedcom_unlink_xref</b> (Xref_type type, const char* key)</code><br>
2260   <blockquote>Declare the xref_value corresponding to the given key as being
2261 used/no longer used (linked to or unlinked) as the given type. &nbsp;The
2262 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>
2263     <br>
2264 Returns the xref_value object if success, and its use count is incremented/decremented. &nbsp;Returns <code>NULL</code> in one of the following cases:<br>
2265     <ul>
2266       <li>the key isn't a valid cross-reference key (see below)</li>
2267       <li>there is no xref_value with the given key</li>
2268       <li>the xref_value was previously added as another type than the type provided here<br>
2269       </li>
2270     </ul>
2271   </blockquote>
2272 </blockquote>
2273 <blockquote>
2274                        </blockquote>
2275
2276 A cross-reference key must be a string of maximum 22 characters, of the following format:<br>
2277 <ul>
2278   <li>an at sign ('@')</li>
2279   <li>followed by an alphanumeric character (A-Z, a-z, 0-9 or underscore)</li>
2280   <li>followed by zero or more characters, which can be any character except an at sign</li>
2281   <li>terminated by an at sign ('@')</li>
2282 </ul>
2283 An example would thus be: "@This is an xref_val@".<br>
2284
2285                                                                        
2286               <hr width="100%" size="2">                            
2287               <pre>$Id$<br>$Name$<br></pre>
2288       <br>
2289                                                                         
2290               <br>
2291 <br>
2292 <br>
2293 <br>
2294 <br>
2295 </body></html>