mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-16 04:20:32 +01:00
99 lines
2.9 KiB
Perl
99 lines
2.9 KiB
Perl
#!/usr/bin/perl
|
|
|
|
#
|
|
# make-test-arrays
|
|
#
|
|
# Given a test-arrays file, which specifies the test suite names, the
|
|
# names of the functions which perform those test suites, and
|
|
# descriptive comments, this script generates C structures for the
|
|
# mpi-test program. The input consists of lines of the form:
|
|
#
|
|
# suite-name:function-name:comment
|
|
#
|
|
# The output is written to the standard output. Blank lines are
|
|
# ignored, and comments beginning with '#' are stripped.
|
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
# Read parameters from the environment, if available
|
|
$NAMEVAR = $ENV{'NAMEVAR'} || "g_names";
|
|
$COUNTVAR = $ENV{'COUNTVAR'} || "g_count";
|
|
$FUNCVAR = $ENV{'FUNCVAR'} || "g_tests";
|
|
$DESCVAR = $ENV{'DESCVAR'} || "g_descs";
|
|
$FUNCLEN = 13;
|
|
$NAMELEN = 18;
|
|
$DESCLEN = 45;
|
|
|
|
#------------------------------------------------------------------------
|
|
# Suck in input from the files on the command line, or standard input
|
|
while(<>) {
|
|
chomp;
|
|
s/\#.*$//;
|
|
next if /^\s*$/;
|
|
|
|
($suite, $func, $desc) = split(/:/, $_);
|
|
|
|
$tmp = { "suite" => $suite,
|
|
"func" => $func,
|
|
"desc" => $desc };
|
|
|
|
push(@item, $tmp);
|
|
}
|
|
$count = scalar(@item);
|
|
$last = pop(@item);
|
|
|
|
#------------------------------------------------------------------------
|
|
# Output the table of names
|
|
print "/* Table mapping test suite names to index numbers */\n";
|
|
printf("const int %s = %d;\n", $COUNTVAR, $count);
|
|
printf("const char *%s[] = {\n", $NAMEVAR);
|
|
|
|
foreach $elt (@item) {
|
|
printf(" \"%s\",%s/* %s%s */\n", $elt->{"suite"},
|
|
" " x ($NAMELEN - length($elt->{"suite"})),
|
|
$elt->{"desc"},
|
|
" " x ($DESCLEN - length($elt->{"desc"})));
|
|
}
|
|
printf(" \"%s\" %s/* %s%s */\n", $last->{"suite"},
|
|
" " x ($NAMELEN - length($last->{"suite"})),
|
|
$last->{"desc"},
|
|
" " x ($DESCLEN - length($last->{"desc"})));
|
|
print "};\n\n";
|
|
|
|
#------------------------------------------------------------------------
|
|
# Output the driver function prototypes
|
|
print "/* Test function prototypes */\n";
|
|
foreach $elt (@item, $last) {
|
|
printf("int %s(void);\n", $elt->{"func"});
|
|
}
|
|
print "\n";
|
|
|
|
#------------------------------------------------------------------------
|
|
# Output the table of functions
|
|
print "/* Table mapping index numbers to functions */\n";
|
|
printf("int (*%s[])(void) = {\n ", $FUNCVAR);
|
|
$brk = 0;
|
|
|
|
foreach $elt (@item) {
|
|
print($elt->{"func"}, ", ",
|
|
" " x ($FUNCLEN - length($elt->{"func"})));
|
|
$brk = ($brk + 1) & 3;
|
|
print "\n " unless($brk);
|
|
}
|
|
print $last->{"func"}, "\n};\n\n";
|
|
|
|
#------------------------------------------------------------------------
|
|
# Output the table of descriptions
|
|
print "/* Table mapping index numbers to descriptions */\n";
|
|
printf("const char *%s[] = {\n", $DESCVAR);
|
|
|
|
foreach $elt (@item) {
|
|
printf(" \"%s\",\n", $elt->{"desc"});
|
|
}
|
|
printf(" \"%s\"\n};\n\n", $last->{"desc"});
|
|
|
|
exit 0;
|
|
|