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