make-test-arrays
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:4k
源码类别:

CA认证

开发平台:

WINDOWS

  1. #!/usr/linguist/bin/perl
  2. #
  3. # make-test-arrays
  4. #
  5. # Given a test-arrays file, which specifies the test suite names, the
  6. # names of the functions which perform those test suites, and
  7. # descriptive comments, this script generates C structures for the
  8. # mpi-test program.  The input consists of lines of the form:
  9. #
  10. # suite-name:function-name:comment
  11. #
  12. # The output is written to the standard output.  Blank lines are
  13. # ignored, and comments beginning with '#' are stripped.
  14. #
  15. ## The contents of this file are subject to the Mozilla Public
  16. ## License Version 1.1 (the "License"); you may not use this file
  17. ## except in compliance with the License. You may obtain a copy of
  18. ## the License at http://www.mozilla.org/MPL/
  19. ##
  20. ## Software distributed under the License is distributed on an "AS
  21. ## IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  22. ## implied. See the License for the specific language governing
  23. ## rights and limitations under the License.
  24. ##
  25. ## The Original Code is the MPI Arbitrary Precision Integer Arithmetic
  26. ## library.
  27. ##
  28. ## The Initial Developer of the Original Code is 
  29. ## Michael J. Fromberger <sting@linguist.dartmouth.edu>
  30. ##
  31. ## Portions created by Michael J. Fromberger are 
  32. ## Copyright (C) 1998, 2000 Michael J. Fromberger. All Rights Reserved
  33. ##
  34. ## Contributor(s):
  35. ##
  36. ## Alternatively, the contents of this file may be used under the
  37. ## terms of the GNU General Public License Version 2 or later (the
  38. ## "GPL"), in which case the provisions of the GPL are applicable
  39. ## instead of those above.  If you wish to allow use of your
  40. ## version of this file only under the terms of the GPL and not to
  41. ## allow others to use your version of this file under the MPL,
  42. ## indicate your decision by deleting the provisions above and
  43. ## replace them with the notice and other provisions required by
  44. ## the GPL.  If you do not delete the provisions above, a recipient
  45. ## may use your version of this file under either the MPL or the GPL.
  46. ## 
  47. # $Id: make-test-arrays,v 1.1 2000/07/14 00:44:19 nelsonb%netscape.com Exp $
  48. #
  49. # Read parameters from the environment, if available
  50. $NAMEVAR = $ENV{'NAMEVAR'} || "g_names";
  51. $COUNTVAR = $ENV{'COUNTVAR'} || "g_count";
  52. $FUNCVAR = $ENV{'FUNCVAR'} || "g_tests";
  53. $DESCVAR = $ENV{'DESCVAR'} || "g_descs";
  54. $FUNCLEN = 13;
  55. $NAMELEN = 18;
  56. $DESCLEN = 45;
  57. #------------------------------------------------------------------------
  58. # Suck in input from the files on the command line, or standard input
  59. while(<>) {
  60.     chomp;
  61.     s/#.*$//;
  62.     next if /^s*$/;
  63.     ($suite, $func, $desc) = split(/:/, $_);
  64.     $tmp = { "suite" => $suite,
  65.      "func"  => $func,
  66.      "desc"  => $desc };
  67.     push(@item, $tmp);
  68. }
  69. $count = scalar(@item);
  70. $last = pop(@item);
  71. #------------------------------------------------------------------------
  72. # Output the table of names
  73. print "/* Table mapping test suite names to index numbers */n";
  74. printf("const int   %s = %d;n", $COUNTVAR, $count);
  75. printf("const char *%s[] = {n", $NAMEVAR);
  76. foreach $elt (@item) {
  77.     printf("   "%s",%s/* %s%s */n", $elt->{"suite"},
  78.    " " x ($NAMELEN - length($elt->{"suite"})),
  79.    $elt->{"desc"},
  80.    " " x ($DESCLEN - length($elt->{"desc"})));
  81. }
  82. printf("   "%s" %s/* %s%s */n", $last->{"suite"},
  83.        " " x ($NAMELEN - length($last->{"suite"})),
  84.        $last->{"desc"},
  85.        " " x ($DESCLEN - length($last->{"desc"})));
  86. print "};nn";
  87. #------------------------------------------------------------------------
  88. # Output the driver function prototypes
  89. print "/* Test function prototypes */n";
  90. foreach $elt (@item, $last) {
  91.     printf("int  %s(void);n", $elt->{"func"});
  92. }
  93. print "n";
  94. #------------------------------------------------------------------------
  95. # Output the table of functions
  96. print "/* Table mapping index numbers to functions */n";
  97. printf("int (*%s[])(void)  = {n   ", $FUNCVAR);
  98. $brk = 0;
  99. foreach $elt (@item) {
  100.     print($elt->{"func"}, ", ", 
  101.   " " x ($FUNCLEN - length($elt->{"func"})));
  102.     $brk = ($brk + 1) & 3;
  103.     print "n   " unless($brk);
  104. }
  105. print $last->{"func"}, "n};nn";
  106. #------------------------------------------------------------------------
  107. # Output the table of descriptions
  108. print "/* Table mapping index numbers to descriptions */n";
  109. printf("const char *%s[] = {n", $DESCVAR);
  110. foreach $elt (@item) {
  111.     printf("   "%s",n", $elt->{"desc"});
  112. }
  113. printf("   "%s"n};nn", $last->{"desc"});
  114. exit 0;