mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-09 09:20:15 +01:00
134 lines
4.5 KiB
Perl
134 lines
4.5 KiB
Perl
#!/usr/linguist/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.
|
|
|
|
# ***** BEGIN LICENSE BLOCK *****
|
|
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
#
|
|
# The contents of this file are subject to the Mozilla Public License Version
|
|
# 1.1 (the "License"); you may not use this file except in compliance with
|
|
# the License. You may obtain a copy of the License at
|
|
# http://www.mozilla.org/MPL/
|
|
#
|
|
# Software distributed under the License is distributed on an "AS IS" basis,
|
|
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
# for the specific language governing rights and limitations under the
|
|
# License.
|
|
#
|
|
# The Original Code is the MPI Arbitrary Precision Integer Arithmetic library.
|
|
#
|
|
# The Initial Developer of the Original Code is
|
|
# Michael J. Fromberger <sting@linguist.dartmouth.edu>.
|
|
# Portions created by the Initial Developer are Copyright (C) 1998
|
|
# the Initial Developer. All Rights Reserved.
|
|
#
|
|
# Contributor(s):
|
|
#
|
|
# Alternatively, the contents of this file may be used under the terms of
|
|
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
# of those above. If you wish to allow use of your version of this file only
|
|
# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
# use your version of this file under the terms of the MPL, indicate your
|
|
# decision by deleting the provisions above and replace them with the notice
|
|
# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
# the provisions above, a recipient may use your version of this file under
|
|
# the terms of any one of the MPL, the GPL or the LGPL.
|
|
#
|
|
# ***** END LICENSE BLOCK *****
|
|
|
|
# $Id: make-test-arrays,v 1.2 2005/02/02 22:28:22 gerv%gerv.net Exp $
|
|
#
|
|
|
|
# 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;
|
|
|