make-test-arrays
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:4k
- #!/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 "};nn";
- #------------------------------------------------------------------------
- # 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};nn";
- #------------------------------------------------------------------------
- # 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};nn", $last->{"desc"});
- exit 0;