Copied from old documentation. Removed all Gedcom_val details.
[gedcom-parse.git] / gedcom / process_tags
1 # $Id$
2 # $Name$
3
4 use strict;
5 use diagnostics;
6
7 my $inputfile  = "$ENV{srcdir}/gedcom.tabgen.h";
8 my $outputfile = "$ENV{srcdir}/tag_names.h";
9
10 my %tags;
11 my ($min, $max) = (9999, 0);
12
13 open INPUT, $inputfile or die "Can't read $inputfile\n";
14 open OUTPUT, ">$outputfile" or die "Can't write $outputfile\n";
15     
16 while (<INPUT>)
17 {
18   if (/TAG_(.*?)\s+(\d+)/) {
19     my ($name, $num) = ($1, $2);
20     $tags{$num} = $name;
21     $min = $num if $num < $min;
22     $max = $num if $num > $max;
23   }
24 }
25
26 print OUTPUT "/* This file is automatically generated */\n";
27 print OUTPUT "\n";
28 print OUTPUT "#define TAG_NUM_START $min\n";
29 print OUTPUT "#define TAG_NUM_END   $max\n";
30 print OUTPUT "\n";
31 print OUTPUT "char* tag_name[] =\n";
32 print OUTPUT "{";
33
34 foreach my $tagnum (sort keys %tags) {
35   if (($tagnum - $min) % 8 == 0) {
36     print OUTPUT "\n";
37     print OUTPUT "  /* $tagnum */ ";
38   }
39   print OUTPUT "\"$tags{$tagnum}\", ";
40 }
41
42 print OUTPUT "\n};\n";
43
44 close OUTPUT;
45 close INPUT;
46