DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Untracked file

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
#!/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.
#
## 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 Michael J. Fromberger are 
## Copyright (C) 1998, 2000 Michael J. Fromberger. All Rights Reserved
##
## Contributor(s):
##
## Alternatively, the contents of this file may be used under the
## terms of the GNU General Public License Version 2 or later (the
## "GPL"), in which case the provisions of the GPL are applicable
## instead of those above.  If you wish to allow use of your
## version of this file only under the terms of the GPL and not to
## allow others to use your version of this file under the MPL,
## indicate your decision by deleting the provisions above and
## replace them with the notice and other provisions required by
## the GPL.  If you do not delete the provisions above, a recipient
## may use your version of this file under either the MPL or the GPL.
## 
# $Id: make-test-arrays,v 1.1 2000/07/14 00:44:19 nelsonb%netscape.com 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;