#!/usr/bin/perl -w use PARI::822; $class=$ARGV[0]; %secnumber=( 'operators' => 1 , 'conversions' => 2 , 'transcendental' => 3 , 'number_theoretical' => 4 , 'elliptic_curves' => 5 , 'number_fields' => 6 , 'polynomials' => 7 , 'linear_algebra' => 8 , 'sums' => 9 , 'graphic' => 10 , 'programming' => 11 ); print < 50, "if" => 80, "while" => 81, "until" => 82, "global" => 88 ); PARI::822::read(\%funcs,$ARGV[1]); foreach my $name (sort keys %funcs) { my %func=%{$funcs{$name}}; next if ($func{'Class'} ne $class); my $gpname=$func{'Function'}; defined($func{'Section'}) or die("No section for $name"); my $sec=$secnumber{$func{'Section'}}; defined($sec) or die("Unknown section $func{'Section'}"); my $proto=$func{'Prototype'}; my $cname=$func{'C-Name'}; my $help=$func{'Help'}; defined($help) or die("No help for function $name"); $help =~ s/\n/ /g; $help =~ s/\\/\\\\/g; $help =~ s/"/\\"/g; $help = "\"$help\""; if (defined($cname)) { my $cutproto=$proto; $cutproto =~ s/^[vl]//; $valence = ($cutproto eq "" || $cutproto =~ /^(s\*)|[DpP]/)? 0: 1; $proto =~ s/"/\\"/g; $proto = "\"$proto\""; $cname = "(void*)$cname"; } else { $cname='NULL'; $proto='NULL'; $valence=defined($spec_valence{$gpname})?$spec_valence{$gpname}:1; } print "{\"$gpname\",$valence,$cname,$sec,$proto,$help},\n"; } print <<'EOF'; {NULL,0,NULL,0,NULL,NULL} /* sentinel */ }; EOF