Use XREF_ANY when the type of an xref is not defined yet (e.g. in
[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="#struct_date_value">struct date_value</a></li>
18          <li><a href="#struct_date">struct date</a></li><li><a href="#age_value">struct age_value</a><br>
19     </li>
20
21      <li><a href="#struct_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><br>
1619            </td>
1620            <td valign="top"><code>STRING</code><br>
1621            </td>
1622          </tr>
1623          <tr>
1624            <td valign="top"><code>ELT_SUB_PLAC_FORM</code><br>
1625            </td>
1626            <td valign="top"><code>FORM</code><br>
1627            </td>
1628            <td valign="top"><code>ELT_SUB_PLAC</code><br>
1629            </td>
1630            <td valign="top"><code>STRING</code><br>
1631            </td>
1632          </tr>
1633          <tr>
1634            <td valign="top"><code>ELT_SUB_SOUR</code><br>
1635            </td>
1636            <td valign="top"><code>SOUR</code><br>
1637            </td>
1638            <td valign="top"><code>REC_FAM, REC_INDI,<br>
1639     REC_NOTE, ELT_SUB_ASSO<br>
1640           </code><code>ELT_SUB_FAM_EVT,<br>
1641           </code><code>ELT_SUB_FAM_EVT_EVEN,<br>
1642     ELT_SUB_INDIV_ATTR,<br>
1643     ELT_SUB_INDIV_RESI</code><code>,<br>
1644      ELT_SUB_INDIV_BIRT,<br>
1645      ELT_SUB_INDIV_GEN,<br>
1646      ELT_SUB_INDIV_ADOP,<br>
1647 ELT_SUB_INDIV_EVEN,<br>
1648     ELT_SUB_LIO_BAPL,<br>
1649     ELT_SUB_LIO_SLGC,<br>
1650     ELT_SUB_LSS_SLGS,<br>
1651     ELT_SUB_NOTE,<br>
1652     ELT_SUB_PERS_NAME,<br>
1653     ELT_SUB_PLAC</code><br>
1654            </td>
1655            <td valign="top"><code>STRING<br>
1656  XREF_PTR(SOUR)</code><br>
1657            </td>
1658          </tr>
1659          <tr>
1660            <td valign="top"><code>ELT_SUB_SOUR_PAGE</code><br>
1661            </td>
1662            <td valign="top"><code>PAGE</code><br>
1663            </td>
1664            <td valign="top"><code>ELT_SUB_SOUR</code><br>
1665            </td>
1666            <td valign="top"><code>STRING</code><br>
1667            </td>
1668          </tr>
1669          <tr>
1670            <td valign="top"><code>ELT_SUB_SOUR_EVEN</code><br>
1671            </td>
1672            <td valign="top"><code>EVEN</code><br>
1673            </td>
1674            <td valign="top"><code>ELT_SUB_SOUR</code><br>
1675            </td>
1676            <td valign="top"><code>STRING</code><br>
1677            </td>
1678          </tr>
1679          <tr>
1680            <td valign="top"><code>ELT_SUB_SOUR_EVEN_ROLE</code><br>
1681            </td>
1682            <td valign="top"><code>ROLE</code><br>
1683            </td>
1684            <td valign="top"><code>ELT_SUB_SOUR_EVEN</code><br>
1685            </td>
1686            <td valign="top"><code>STRING</code><br>
1687            </td>
1688          </tr>
1689          <tr>
1690            <td valign="top"><code>ELT_SUB_SOUR_DATA</code><br>
1691            </td>
1692            <td valign="top"><code>DATA</code><br>
1693            </td>
1694            <td valign="top"><code>ELT_SUB_SOUR</code><br>
1695            </td>
1696            <td valign="top"><code>NULL</code><br>
1697            </td>
1698          </tr>
1699          <tr>
1700            <td valign="top"><code>ELT_SUB_SOUR_DATA_DATE</code><br>
1701            </td>
1702            <td valign="top"><code>DATE</code><br>
1703            </td>
1704            <td valign="top"><code>ELT_SUB_SOUR_DATA</code><br>
1705            </td>
1706            <td valign="top"><code>DATE</code><br>
1707            </td>
1708          </tr>
1709          <tr>
1710            <td valign="top"><code>ELT_SUB_SOUR_TEXT</code><br>
1711            </td>
1712            <td valign="top"><code>TEXT</code><br>
1713            </td>
1714            <td valign="top"><code>ELT_SUB_SOUR<br>
1715     ELT_SUB_SOUR_DATA</code><br>
1716            </td>
1717            <td valign="top"><code>STRING</code><br>
1718            </td>
1719          </tr>
1720          <tr>
1721            <td valign="top"><code>ELT_SUB_SOUR_QUAY</code><br>
1722            </td>
1723            <td valign="top"><code>QUAY</code><br>
1724            </td>
1725            <td valign="top"><code>ELT_SUB_SOUR</code><br>
1726            </td>
1727            <td valign="top"><code>STRING</code><br>
1728            </td>
1729          </tr>
1730          <tr>
1731            <td valign="top"><code>ELT_SUB_REPO</code><br>
1732            </td>
1733            <td valign="top"><code>REPO</code><br>
1734            </td>
1735            <td valign="top"><code>REC_SOUR</code><br>
1736            </td>
1737            <td valign="top"><code>XREF_PTR(REPO)</code><br>
1738            </td>
1739          </tr>
1740          <tr>
1741            <td valign="top"><code>ELT_SUB_REPO_CALN</code><br>
1742            </td>
1743            <td valign="top"><code>CALN</code><br>
1744            </td>
1745            <td valign="top"><code>ELT_SUB_REPO</code><br>
1746            </td>
1747            <td valign="top"><code>STRING</code><br>
1748            </td>
1749          </tr>
1750          <tr>
1751            <td valign="top"><code>ELT_SUB_REPO_CALN_MEDI</code><br>
1752            </td>
1753            <td valign="top"><code>MEDI</code><br>
1754            </td>
1755            <td valign="top"><code>ELT_SUB_REPO_CALN</code><br>
1756            </td>
1757            <td valign="top"><code>STRING</code><br>
1758            </td>
1759          </tr>
1760          <tr>
1761            <td valign="top"><code>ELT_SUB_FAMS</code><br>
1762            </td>
1763            <td valign="top"><code>FAMS</code><br>
1764            </td>
1765            <td valign="top"><code>REC_INDI</code><br>
1766            </td>
1767            <td valign="top"><code>XREF_PTR(FAM)</code><br>
1768            </td>
1769          </tr>
1770          <tr>
1771            <td valign="top"><code>ELT_USER</code><br>
1772            </td>
1773            <td valign="top"><code>any tag starting<br>
1774      with an underscore</code><br>
1775            </td>
1776            <td valign="top"><code>anywhere</code><br>
1777            </td>
1778            <td valign="top"><code>NULL<br>
1779      STRING<br>
1780  XREF_PTR(USER)</code><br>
1781            </td>
1782          </tr>
1783                    
1784   </tbody>     
1785 </table>
1786            
1787 <hr width="100%" size="2">      
1788 <h2><a name="Gedcom_val_types"></a>Gedcom_val types<br>
1789       </h2>
1790       Currently, the specific <code>Gedcom_val</code> types are (with <code>
1791    val</code>   of type <code>Gedcom_val</code>):<br>
1792      <br>
1793          
1794 <table cellpadding="2" cellspacing="2" border="1" width="100%">
1795        <tbody>
1796          <tr>
1797            <td valign="top"><br>
1798            </td>
1799            <td valign="top"><b>type checker</b><br>
1800            </td>
1801            <td valign="top"><b>cast operator</b><br>
1802            </td>
1803          </tr>
1804          <tr>
1805            <td valign="top">null value<br>
1806            </td>
1807            <td valign="top"><code>GEDCOM_IS_NULL(val)</code><br>
1808            </td>
1809            <td valign="top">N/A<br>
1810            </td>
1811          </tr>
1812          <tr>
1813            <td valign="top">string<br>
1814            </td>
1815            <td valign="top"><code>GEDCOM_IS_STRING(val)</code><br>
1816            </td>
1817            <td valign="top"><code>char* str = GEDCOM_STRING(val);</code><br>
1818            </td>
1819          </tr>
1820          <tr>
1821            <td valign="top">date<br>
1822            </td>
1823            <td valign="top"><code>GEDCOM_IS_DATE(val)</code><br>
1824            </td>
1825            <td valign="top"><code>struct date_value dv = GEDCOM_DATE(val);</code></td>
1826          </tr>
1827      <tr>
1828       <td valign="top">age<br>
1829       </td>
1830       <td valign="top"><code>GEDCOM_IS_AGE(val)</code><br>
1831       </td>
1832       <td valign="top"><code>struct age_value age = GEDCOM_AGE(val);</code><br>
1833       </td>
1834     </tr>
1835 <tr>
1836        <td valign="top">xref pointer<br>
1837        </td>
1838        <td valign="top"><code>GEDCOM_IS_XREF_PTR(val)</code><br>
1839        </td>
1840        <td valign="top"><code>struct xref_value *xr = GEDCOM_XREF_PTR(val);</code><br>
1841        </td>
1842      </tr>
1843                    
1844   </tbody>     
1845 </table>
1846      <br>
1847      <br>
1848        The type checker returns a true or a false value according to the
1849 type   of the value, but this is in principle only necessary in the rare
1850 circumstances    that two types are possible, or where an optional value
1851 can be provided.   &nbsp;In most cases, the type is fixed for a specific
1852 tag.<br>
1853      <br>
1854       The null value is used for when the GEDCOM spec doesn't allow a value,
1855   or  when an optional value is allowed but none is given.<br>
1856       &nbsp; <br>
1857       The string value is the most general used value currently, for all
1858 those    values that don't have a more specific meaning. &nbsp;In essence,
1859 the value    that is returned by <code>GEDCOM_STRING(val)</code> is always the same as the
1860 <code>raw_value</code> passed    to the start callback, and is thus in fact redundant.<br>
1861      <br>
1862       The date value is used for all elements that return a date. &nbsp;See 
1863 <a href="#struct_date_value">here</a> for the definition.<br>
1864  <br>
1865  The xref value is for cross-references between records in the file. &nbsp;See 
1866 <a href="#struct_xref_value">here</a> for the definition.<br>
1867      <br>
1868          
1869 <h3><a name="struct_date_value"></a>struct date_value</h3>
1870      This struct describes a date as given in the GEDCOM file, and has the
1871  following  definition:<br>
1872          
1873 <blockquote><code>struct date_value {<br>
1874      &nbsp; Date_value_type &nbsp;type;<br>
1875      &nbsp; struct date &nbsp; &nbsp; &nbsp;date1;<br>
1876      &nbsp; struct date &nbsp; &nbsp; &nbsp;date2;<br>
1877      &nbsp; char &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; phrase[MAX_PHRASE_LEN 
1878   + 1];<br>
1879      };</code><br>
1880        </blockquote>
1881        It depends on the first member, the type, which members are actually 
1882  relevant:<br>
1883        <br>
1884                    
1885   <table cellpadding="2" cellspacing="2" border="1" width="100%">
1886          <tbody>
1887            <tr>
1888              <td valign="top" align="center"><b>Date_value_type</b><br>
1889              </td>
1890              <td valign="top" align="center"><b>Meaning</b><br>
1891              </td>
1892              <td valign="top" align="center"><b>Relevant members</b><br>
1893              </td>
1894            </tr>
1895            <tr>
1896              <td valign="top"><code>DV_NO_MODIFIER</code><br>
1897              </td>
1898              <td valign="top">just a simple date<br>
1899              </td>
1900              <td valign="top">date1<br>
1901              </td>
1902            </tr>
1903            <tr>
1904              <td valign="top"><code>DV_BEFORE</code><br>
1905              </td>
1906              <td valign="top">a range (BEFORE date1)<br>
1907              </td>
1908              <td valign="top">date1<br>
1909              </td>
1910            </tr>
1911            <tr>
1912              <td valign="top"><code>DV_AFTER</code><br>
1913              </td>
1914              <td valign="top">a range (AFTER date1)<br>
1915              </td>
1916              <td valign="top">date1<br>
1917              </td>
1918            </tr>
1919            <tr>
1920              <td valign="top"><code>DV_BETWEEN</code><br>
1921              </td>
1922              <td valign="top">a range (BETWEEN date1 AND date2)<br>
1923              </td>
1924              <td valign="top">date1, date2<br>
1925              </td>
1926            </tr>
1927            <tr>
1928              <td valign="top"><code>DV_FROM</code><br>
1929              </td>
1930              <td valign="top">a period (FROM date1)<br>
1931              </td>
1932              <td valign="top">date1<br>
1933              </td>
1934            </tr>
1935            <tr>
1936              <td valign="top"><code>DV_TO</code><br>
1937              </td>
1938              <td valign="top">a period (TO date1)<br>
1939              </td>
1940              <td valign="top">date1<br>
1941              </td>
1942            </tr>
1943            <tr>
1944              <td valign="top"><code>DV_FROM_TO</code><br>
1945              </td>
1946              <td valign="top">a period (FROM date1 TO date2)<br>
1947              </td>
1948              <td valign="top">date1, date2<br>
1949              </td>
1950            </tr>
1951            <tr>
1952              <td valign="top"><code>DV_ABOUT</code><br>
1953              </td>
1954              <td valign="top">an approximation (ABOUT date1)<br>
1955              </td>
1956              <td valign="top">date1<br>
1957              </td>
1958            </tr>
1959            <tr>
1960              <td valign="top"><code>DV_CALCULATED</code><br>
1961              </td>
1962              <td valign="top">an approximation (CALCULATED date1)<br>
1963              </td>
1964              <td valign="top">date1<br>
1965              </td>
1966            </tr>
1967            <tr>
1968              <td valign="top"><code>DV_ESTIMATED</code><br>
1969              </td>
1970              <td valign="top">an approximation (ESTIMATED date1)<br>
1971              </td>
1972              <td valign="top">date1<br>
1973              </td>
1974            </tr>
1975            <tr>
1976              <td valign="top"><code>DV_INTERPRETED</code><br>
1977              </td>
1978              <td valign="top">INTERPRETED date1 FROM a given free form date 
1979  phrase<br>
1980              </td>
1981              <td valign="top">date1, phrase<br>
1982              </td>
1983            </tr>
1984            <tr>
1985              <td valign="top"><code>DV_PHRASE</code><br>
1986              </td>
1987              <td valign="top">a free form date phrase<br>
1988              </td>
1989              <td valign="top">phrase<br>
1990              </td>
1991            </tr>
1992                              
1993     </tbody>               
1994   </table>
1995        <br>
1996                    
1997   <h3><a name="struct_date"></a>struct date<br>
1998        </h3>
1999      The <code>date1</code> and <code>date2</code> also have a strict syntax:<br>
2000                    
2001   <blockquote><code>struct date {<br>
2002      &nbsp; Calendar_type &nbsp;cal;<br>
2003      &nbsp; char &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; day_str[MAX_DAY_LEN + 
2004 1];<br>
2005      &nbsp; char &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; month_str[MAX_MONTH_LEN 
2006  +  1];<br>
2007      &nbsp; char &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; year_str[MAX_YEAR_LEN 
2008 +  1];<br>
2009          <br>
2010      &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;day;<br>
2011      &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;month;<br>
2012      &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;year;<br>
2013      &nbsp; Year_type &nbsp; &nbsp; &nbsp;year_type;<br>
2014          <br>
2015      &nbsp; Date_type &nbsp; &nbsp; &nbsp;type;<br>
2016      &nbsp; long int &nbsp; &nbsp; &nbsp; sdn1;<br>
2017      &nbsp; long int &nbsp; &nbsp; &nbsp; sdn2;<br>
2018      };</code><br>
2019          </blockquote>
2020      The first four fields are the primary fields parsed from the value in
2021  the  GEDCOM file. &nbsp;The <code>day_str</code>, <code>month_str</code>
2022  and     <code>  year_str</code> are the literal parts of the date that denote 
2023  the day, month  and year (the <code>day_str</code> and <code>month_str</code>
2024     can be empty) . &nbsp;The calendar type <code>cal</code> is one of (see 
2025  calendar overview     <i>LINK TBD</i>):<br>
2026                              
2027     <ul>
2028            <li><code>CAL_GREGORIAN</code> : the Gregorian calendar</li>
2029            <li><code>CAL_JULIAN</code> : the Julian calendar</li>
2030            <li><code>CAL_HEBREW</code> : the Hebrew (Jewish) calendar</li>
2031            <li><code>CAL_FRENCH_REV</code> : the calendar used after the
2032 French   Revolution</li>
2033            <li><code>CAL_UNKNOWN</code> : an unknown calendar type</li>
2034                              
2035     </ul>
2036      The next four fields are deduced from the first four:<br>
2037                              
2038     <ul>
2039            <li>the <code>day</code> is just the numeric representation of 
2040 the           <code>day_str</code> (starting from 1), -1 if the <code>day_str</code>
2041      is empty</li>
2042            <li>the <code>month</code> is the month number of <code>month_str</code>
2043       in the given calendar type (also starting from 1), -1 if the <code>
2044 month_str</code>     is empty</li>
2045            <li>the <code>year</code> is the numeric representation of the 
2046         <code>    year_str</code></li>
2047                              
2048     </ul>
2049      It is possible that the <code>year_str</code> is given as e.g. "1677/78". 
2050   &nbsp;This is coming from a date in a so called "annunciation style", where 
2051   the year began on 25 March: "20 March 1677/78" is 20 March 1677 in "annunciation
2052   style" and 20 March 1678 in "circumcision style" (the current style). &nbsp;See
2053   calendar overview (<i>LINK TBD</i>).<br>
2054          <br>
2055      In this case, the <code>year</code> will contain the "circumcision style" 
2056   year (1678 in the example), and <code>year_type</code> will be <code>YEAR_DOUBLE.</code>
2057       &nbsp;Normal dates will have a <code>year_type</code> equal to <code>
2058   YEAR_SINGLE</code>   .<br>
2059          <br>
2060      Finally, the last three fields are probably the most interesting values
2061   for applications that want to process dates. &nbsp;Basically, the date
2062 is   converted to a serial day number (aka Julian day), which is the unique
2063 day   number since November 25, 4714 BC in the Gregorian calendar. &nbsp;The
2064 advantage   of these day numbers is that they are unique and independent
2065 of the calendar   system. &nbsp;Furthermore, date differences can just be
2066 computed by subtracting   the serial day numbers.<br>
2067          <br>
2068      However, since dates in GEDCOM are not necessarily exact (e.g. "MAR
2069 1990"),   it is not possible to represent all GEDCOM dates with 1 serial
2070 day number.   &nbsp;Two cases can be distinguished:<br>
2071                              
2072     <ul>
2073            <li>Exact dates (e.g. "25 MAR 1990"):</li>
2074                              
2075     </ul>
2076                              
2077     <blockquote>                                   
2078       <blockquote>These are represented by a serial day number in <code>sdn1</code>
2079       and a <code>Date_type</code> equal to <code>DATE_EXACT</code>.<br>
2080              </blockquote>
2081              </blockquote>
2082                                                  
2083         <ul>
2084                <li>Incomplete dates (e.g. "MAR 1990"):</li>
2085                                                  
2086         </ul>
2087                                                  
2088         <blockquote>                                                    
2089   
2090           
2091   <blockquote>These are represented by 2 serial day numbers (<code>sdn1</code> and <code>sdn2</code>) and a <code>Date_type</code> equal 
2092 to              <code>DATE_BOUNDED</code>.<br>
2093     <br>
2094
2095      For example, the Gregorian date "MAR 1990" is represented by the serial
2096   day numbers for "1 MAR 1990" and "31 MAR 1990", and the Gregorian date
2097 "1990"   is represented by the serial day numbers for "1 JAN 1990" and "31
2098 DEC 1990".   &nbsp;Similarly for the other calendar types.<br>
2099   </blockquote>
2100
2101                  <br>
2102 </blockquote>
2103 <h3><a name="age_value"></a>struct age_value</h3>
2104
2105      This struct describes an age as given in the GEDCOM file, and has the
2106  following  definition:<br>
2107
2108          
2109 <blockquote><code>struct age_value {<br>
2110      &nbsp; Age_type&nbsp; &nbsp; &nbsp; type;<br>
2111      &nbsp; Age_modifier &nbsp;mod;<br>
2112      &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; years;<br>
2113 &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; months;<br>
2114 &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; days;<br>
2115      &nbsp; char &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;phrase[MAX_PHRASE_LEN 
2116   + 1];<br>
2117      };</code><br>
2118        </blockquote>
2119 <blockquote>
2120                  </blockquote>
2121
2122                               
2123             
2124        It depends on the first member, the type, which members are actually 
2125  relevant:<br>
2126 <br>
2127 <table cellpadding="2" cellspacing="2" border="1" width="100%">
2128 <tbody><tr>
2129              <td valign="top" align="center"><b>Age_type</b><br>
2130              </td>
2131              <td valign="top" align="center"><b>Meaning</b><br>
2132              </td>
2133              <td valign="top" align="center"><b>Relevant members</b><br>
2134              </td>
2135            </tr>
2136            <tr>
2137              <td valign="top"><code>AGE_UNRECOGNIZED</code><br>
2138              </td>
2139              <td valign="top">format not recognized, full raw value in phrase<br>
2140              </td>
2141              <td valign="top">phrase<br>
2142              </td>
2143            </tr>
2144            <tr>
2145              <td valign="top"><code>AGE_CHILD</code><br>
2146              </td>
2147              <td valign="top">the indication 'CHILD'<br>
2148              </td>
2149              <td valign="top">mod<br>
2150              </td>
2151            </tr>
2152            <tr>
2153              <td valign="top"><code>AGE_INFANT</code><br>
2154              </td>
2155              <td valign="top">the indication 'INFANT'<br>
2156              </td>
2157              <td valign="top">mod<br>
2158              </td>
2159            </tr>
2160            <tr>
2161              <td valign="top"><code>AGE_STILLBORN</code><br>
2162              </td>
2163              <td valign="top">the indication 'STILLBORN'<br>
2164              </td>
2165              <td valign="top">mod<br>
2166 </td></tr><tr>
2167       <td valign="top"><code>AGE_NUMERIC</code><br>
2168       </td>
2169       <td valign="top">an indication in years, months and/or days (each can be -1 if not given)<br>
2170       </td>
2171       <td valign="top">mod, years, months, days<br>
2172       </td>
2173     </tr>
2174 </tbody>
2175 </table>
2176 <br>
2177 The modifier can be one of the following:<br>
2178 <ul>
2179 <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>
2180 </ul>
2181 <br>
2182 <h3><a name="struct_xref_value"></a>struct xref_value</h3>
2183
2184  This struct represents a cross-reference in the GEDCOM file (but note that 
2185 the <code>Gedcom_val</code> contains a pointer to such a struct, not the struct
2186 itself). &nbsp;It is defined as:<br>
2187              
2188             <blockquote><code>struct xref_value {<br>
2189  &nbsp; Xref_type &nbsp; type,<br>
2190  &nbsp; char* &nbsp; &nbsp; &nbsp; string,<br>
2191  &nbsp; Gedcom_ctxt object<br>
2192  };</code><br>
2193                </blockquote>
2194  The <code>Xref_type</code> gives the type of the cross-reference and can 
2195 be one of:<br>
2196                
2197               <ul>
2198                  <li><code>XREF_NONE</code> (used as default value)</li>
2199                  <li><code>XREF_FAM</code></li>
2200                  <li><code>XREF_INDI</code></li>
2201                  <li><code>XREF_NOTE</code></li>
2202                  <li><code>XREF_OBJE</code></li>
2203                  <li><code>XREF_REPO</code></li>
2204                  <li><code>XREF_SOUR</code></li>
2205                  <li><code>XREF_SUBM</code></li>
2206                  <li><code>XREF_SUBN</code></li><li><code>XREF_ANY</code> (if the type is not known, see below)<br>
2207   </li>
2208
2209                  <li><code>XREF_USER</code> (for application-specific cross-references)<br>
2210                    <code></code></li>
2211                
2212               </ul>
2213  The <code>string</code> gives the actual cross-reference string from the 
2214 GEDCOM file, and the <code>object</code> is initially <code>NULL,</code> but
2215 can be filled by the application with an object (of any type) that corresponds 
2216 with the cross-reference, and then later extracted when the cross-reference 
2217 is used or defined again in the file. &nbsp;This relieves the application 
2218 from the burden of maintaining the mapping between cross-references and objects.<br>
2219 <br>
2220 The value <code>XREF_ANY</code> is used when the type of the object is not
2221 immediately known: it has to come from further information. &nbsp;This is
2222 the case in an association (<code>ELT_SUB_ASSO</code>): the type is then given by the <code>TYPE</code> subtag.<br>
2223                <br>
2224   The parser checks whether all cross-references that are used are defined
2225  (if not, an error is produced) and whether all cross-references that are
2226 defined are used (if not, a warning is produced). &nbsp;It also checks whether
2227 the type of the cross-reference is the same on definition and use (if not,
2228 an error is produced). &nbsp;The first two checks are done at the end of
2229 the parsing, because cross-references can be defined after their usage in
2230 GEDCOM.<br>
2231 <br>
2232 An xref_value can also be retrieved by its key via the following function:<br>
2233                
2234 <blockquote><code>struct xref_value* <b>gedcom_get_by_xref</b> (char *key)</code><br>
2235                        </blockquote>
2236 The function returns <code>NULL</code> if the given key isn't used.<br>
2237                                                                        
2238               <hr width="100%" size="2">                            
2239               <pre>$Id$<br>$Name$<br></pre>
2240       <br>
2241                                                                         
2242               <br>
2243 <br>
2244 <br>
2245 </body></html>