Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
#!/usr/bin/perl -w
BEGIN { @INC=(".",@INC); }
use PARI::822;
$class=$ARGV[0];
$i = 2;
# update MAX_SECTION in gplib.c when changing this
%secnumber=(
'operators' => $i++,
'conversions' => $i++,
'combinatorics' => $i++,
'number_theoretical' => $i++,
'polynomials' => $i++,
'linear_algebra' => $i++,
'transcendental' => $i++,
'sums' => $i++,
'number_fields' => $i++,
'algebras' => $i++,
'elliptic_curves' => $i++,
'l_functions' => $i++,
'modular_forms' => $i++,
'modular_symbols' => $i++,
'graphic' => $i++,
);
$i++;# skip next = PARI community
$secnumber{'symbolic_operators'} = $i++;
$secnumber{'member_functions'} = $i++;
$secnumber{'programming/internals'} = $i++;
$secnumber{'default'} = $i++;
# join
$secnumber{'programming/control'} = 1;
$secnumber{'programming/specific'} = 1;
$secnumber{'programming/parallel'} = 1;
print <<EOF;
/* This file is autogenerated from the database. */
/* See src/desc/gen_proto */
/* Do not edit*/
entree functions_${class}[]={
EOF
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'};
$gpname =~ s/\\/\\\\/g;
$gpname =~ s/^_def_//;
defined($func{'Section'})
or die("$name: mandatory field Section is missing");
my $sec=$secnumber{$func{'Section'}};
defined($sec)
or die("$name: Section field has unknown value $func{'Section'}");
my $proto=$func{'Prototype'};
my $cname=$func{'C-Name'};
my $help=$func{'Help'};
defined($help) or die("$name: mandatory field Help is missing");
$help =~ s/\n/ /g;
$help =~ s/\\/\\\\/g;
$help =~ s/"/\\"/g;
$help = "\"$help\"";
if (defined($cname))
{
$proto =~ s/"/\\"/g;
print "{\"$gpname\",0,(void*)$cname,$sec,\"$proto\",$help},\n";
}
else
{
print "{\"$gpname\",0,NULL,$sec,NULL,$help},\n";
}
}
print <<'EOF';
{NULL,0,NULL,0,NULL,NULL} /* sentinel */
};
EOF