]> git.lyx.org Git - lyx.git/blob - boost/boost/signals/detail/gen_signal_N.pl
Update to latest from boost 1.34.x branch
[lyx.git] / boost / boost / signals / detail / gen_signal_N.pl
1 #!/usr/bin/perl -w
2 #
3 # Boost.Signals library
4
5 # Copyright Douglas Gregor 2001-2003. Use, modification and
6 # distribution is subject to the Boost Software License, Version
7 # 1.0. (See accompanying file LICENSE_1_0.txt or copy at
8 # http://www.boost.org/LICENSE_1_0.txt)
9
10 # For more information, see http://www.boost.org
11 use English;
12
13 if ($#ARGV < 0) {
14   print "Usage: perl gen_signal_N <number of arguments>\n";
15   exit;
16 }
17
18
19 $totalNumArgs = $ARGV[0];
20 for ($numArgs = 0; $numArgs <= $totalNumArgs; ++$numArgs) {
21   open OUT, ">signal$numArgs.hpp";
22   print OUT "// Boost.Signals library\n";
23   print OUT "//\n";
24   print OUT "// Copyright (C) 2001 Doug Gregor (gregod\@cs.rpi.edu)\n";
25   print OUT "//\n";
26   print OUT "// Permission to copy, use, sell and distribute this software is granted\n";
27   print OUT "// provided this copyright notice appears in all copies.\n";
28   print OUT "// Permission to modify the code and to distribute modified code is granted\n";
29   print OUT "// provided this copyright notice appears in all copies, and a notice\n";
30   print OUT "// that the code was modified is included with the copyright notice.\n";
31   print OUT "//\n";
32   print OUT "// This software is provided \"as is\" without express or implied warranty,\n";
33   print OUT "// and with no claim as to its suitability for any purpose.\n";
34   print OUT " \n";
35   print OUT "// For more information, see http://www.boost.org\n";
36   print OUT "\n";
37   print OUT "#ifndef BOOST_SIGNALS_SIGNAL" . $numArgs . "_HEADER\n";
38   print OUT "#define BOOST_SIGNALS_SIGNAL" , $numArgs . "_HEADER\n";
39   print OUT "\n";
40   print OUT "#define BOOST_SIGNALS_NUM_ARGS $numArgs\n";
41
42   $templateParms = "";
43   for ($i = 1; $i <= $numArgs; ++$i) {
44     if ($i > 1) {
45       $templateParms .= ", ";
46     }
47     $templateParms .= "typename T$i";
48   }
49   print OUT "#define BOOST_SIGNALS_TEMPLATE_PARMS $templateParms\n";
50
51   $_ = $templateParms;
52   s/typename //g;
53   $templateArgs = $_;
54   print OUT "#define BOOST_SIGNALS_TEMPLATE_ARGS $templateArgs\n";
55
56   $parms = "";
57   for ($i = 1; $i <= $numArgs; ++$i) {
58     if ($i > 1) {
59       $parms .= ", ";
60     }
61     $parms .= "T$i a$i";
62   }
63   print OUT "#define BOOST_SIGNALS_PARMS $parms\n";
64
65   $args = "";
66   for ($i = 1; $i <= $numArgs; ++$i) {
67     if ($i > 1) {
68       $args .= ", ";
69     }
70     $args .= "a$i";
71   }
72   print OUT "#define BOOST_SIGNALS_ARGS $args\n";
73
74   $boundArgs = "";
75   for ($i = 1; $i <= $numArgs; ++$i) {
76     if ($i > 1) {
77       $boundArgs .= ", ";
78     }
79     $boundArgs .= "args->a$i";
80   }
81   print OUT "#define BOOST_SIGNALS_BOUND_ARGS $boundArgs\n";
82
83   $argsAsMembers = "";
84   for ($i = 1; $i <= $numArgs; ++$i) {
85     $argsAsMembers .= "T$i a$i;";
86   }
87   print OUT "#define BOOST_SIGNALS_ARGS_AS_MEMBERS $argsAsMembers\n";
88
89   $copyParms = "";
90   for ($i = 1; $i <= $numArgs; ++$i) {
91     if ($i > 1) {
92       $copyParms .= ", ";
93     }
94     $copyParms .= "T$i ia$i";
95   }
96   print OUT "#define BOOST_SIGNALS_COPY_PARMS $copyParms\n";
97
98   $initArgs = "";
99   if ($numArgs > 0) {
100       $initArgs = ":";
101   }
102   for ($i = 1; $i <= $numArgs; ++$i) {
103     if ($i > 1) {
104       $initArgs .= ", ";
105     }
106     $initArgs .= "a$i(ia$i)";
107   }
108   print OUT "#define BOOST_SIGNALS_INIT_ARGS $initArgs\n";
109
110   $argTypes = "";
111   for ($i = 1; $i <= $numArgs; ++$i) {
112     $argTypes .= "typedef T$i arg". ($i+1) . "_type; ";
113   }
114
115   print OUT "#define BOOST_SIGNALS_ARG_TYPES $argTypes\n";
116   print OUT "\n";
117   print OUT "#include <boost/signals/signal_template.hpp>\n";
118   print OUT "\n";
119   print OUT "#undef BOOST_SIGNALS_ARG_TYPES\n";
120   print OUT "#undef BOOST_SIGNALS_INIT_ARGS\n";
121   print OUT "#undef BOOST_SIGNALS_COPY_PARMS\n";
122   print OUT "#undef BOOST_SIGNALS_ARGS_AS_MEMBERS\n";
123   print OUT "#undef BOOST_SIGNALS_BOUND_ARGS\n";
124   print OUT "#undef BOOST_SIGNALS_ARGS\n";
125   print OUT "#undef BOOST_SIGNALS_PARMS\n";
126   print OUT "#undef BOOST_SIGNALS_TEMPLATE_ARGS\n";
127   print OUT "#undef BOOST_SIGNALS_TEMPLATE_PARMS\n";
128   print OUT "#undef BOOST_SIGNALS_NUM_ARGS\n";
129   print OUT "\n";
130   print OUT "#endif // BOOST_SIGNALS_SIGNAL" . $numArgs . "_HEADER\n";
131   close OUT;
132 }