From a4c09a92d1d36b48b9b3e95e210ec6c64011bdc2 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 19 Nov 2001 20:32:07 +0000 Subject: [PATCH] Generates the functionN.hpp headers [SVN r11730] --- include/boost/function/gen_function_N.pl | 111 +++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 include/boost/function/gen_function_N.pl diff --git a/include/boost/function/gen_function_N.pl b/include/boost/function/gen_function_N.pl new file mode 100644 index 0000000..a159272 --- /dev/null +++ b/include/boost/function/gen_function_N.pl @@ -0,0 +1,111 @@ +#!/usr/bin/perl -w +# +# Boost.Function library +# +# Copyright (C) 2001 Doug Gregor (gregod@cs.rpi.edu) +# +# Permission to copy, use, sell and distribute this software is granted +# provided this copyright notice appears in all copies. +# Permission to modify the code and to distribute modified code is granted +# provided this copyright notice appears in all copies, and a notice +# that the code was modified is included with the copyright notice. +# +# This software is provided "as is" without express or implied warranty, +# and with no claim as to its suitability for any purpose. +# +# For more information, see http://www.boost.org +use English; + +if ($#ARGV < 0) { + print "Usage: perl gen_function_N \n"; + exit; +} + + +$totalNumArgs = $ARGV[0]; +for ($numArgs = 0; $numArgs <= $totalNumArgs; ++$numArgs) { + open OUT, ">function$numArgs.hpp"; + print OUT "// Boost.Function library\n"; + print OUT "//\n"; + print OUT "// Copyright (C) 2001 Doug Gregor (gregod\@cs.rpi.edu)\n"; + print OUT "//\n"; + print OUT "// Permission to copy, use, sell and distribute this software is granted\n"; + print OUT "// provided this copyright notice appears in all copies.\n"; + print OUT "// Permission to modify the code and to distribute modified code is granted\n"; + print OUT "// provided this copyright notice appears in all copies, and a notice\n"; + print OUT "// that the code was modified is included with the copyright notice.\n"; + print OUT "//\n"; + print OUT "// This software is provided \"as is\" without express or implied warranty,\n"; + print OUT "// and with no claim as to its suitability for any purpose.\n"; + print OUT " \n"; + print OUT "// For more information, see http://www.boost.org\n"; + print OUT "\n"; + print OUT "#ifndef BOOST_FUNCTION_FUNCTION" . $numArgs . "_HEADER\n"; + print OUT "#define BOOST_FUNCTION_FUNCTION" , $numArgs . "_HEADER\n"; + print OUT "\n"; + print OUT "#define BOOST_FUNCTION_NUM_ARGS $numArgs\n"; + + $templateParms = ""; + for ($i = 0; $i < $numArgs; ++$i) { + if ($i > 0) { + $templateParms .= ", "; + } + $templateParms .= "typename T$i"; + } + print OUT "#define BOOST_FUNCTION_TEMPLATE_PARMS $templateParms\n"; + + $_ = $templateParms; + s/typename //g; + $templateArgs = $_; + print OUT "#define BOOST_FUNCTION_TEMPLATE_ARGS $templateArgs\n"; + + $parms = ""; + for ($i = 0; $i < $numArgs; ++$i) { + if ($i > 0) { + $parms .= ", "; + } + $parms .= "T$i a$i"; + } + print OUT "#define BOOST_FUNCTION_PARMS $parms\n"; + + $args = ""; + for ($i = 0; $i < $numArgs; ++$i) { + if ($i > 0) { + $args .= ", "; + } + $args .= "a$i"; + } + print OUT "#define BOOST_FUNCTION_ARGS $args\n"; + + $not0Parms = ""; + for ($i = 1; $i < $numArgs; ++$i) { + if ($i > 1) { + $not0Parms .= ", "; + } + $not0Parms .= "T$i a$i"; + } + print OUT "#define BOOST_FUNCTION_NOT_0_PARMS $not0Parms\n"; + + $not0Args = ""; + for ($i = 1; $i < $numArgs; ++$i) { + if ($i > 1) { + $not0Args .= ", "; + } + $not0Args .= "a$i"; + } + print OUT "#define BOOST_FUNCTION_NOT_0_ARGS $not0Args\n"; + + print OUT "\n"; + print OUT "#include \n"; + print OUT "\n"; + print OUT "#undef BOOST_FUNCTION_NOT_0_ARGS\n"; + print OUT "#undef BOOST_FUNCTION_NOT_0_PARMS\n"; + print OUT "#undef BOOST_FUNCTION_ARGS\n"; + print OUT "#undef BOOST_FUNCTION_PARMS\n"; + print OUT "#undef BOOST_FUNCTION_TEMPLATE_ARGS\n"; + print OUT "#undef BOOST_FUNCTION_TEMPLATE_PARMS\n"; + print OUT "#undef BOOST_FUNCTION_NUM_ARGS\n"; + print OUT "\n"; + print OUT "#endif // BOOST_FUNCTION_FUNCTION" . $numArgs . "_HEADER\n"; + close OUT; +}