Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r57536 - in trunk/tools/jam: src test
From: ghost_at_[hidden]
Date: 2009-11-10 02:21:04


Author: vladimir_prus
Date: 2009-11-10 02:21:03 EST (Tue, 10 Nov 2009)
New Revision: 57536
URL: http://svn.boost.org/trac/boost/changeset/57536

Log:
Support more parameters to rules.

Fixes #2552.
Patch from Jonathan Biggar.

Added:
   trunk/tools/jam/test/rule_param.jam (contents, props changed)
Text files modified:
   trunk/tools/jam/src/expand.c | 21 +++++++++++++++++++++
   trunk/tools/jam/src/lists.h | 2 +-
   trunk/tools/jam/test/test.jam | 1 +
   3 files changed, 23 insertions(+), 1 deletions(-)

Modified: trunk/tools/jam/src/expand.c
==============================================================================
--- trunk/tools/jam/src/expand.c (original)
+++ trunk/tools/jam/src/expand.c 2009-11-10 02:21:03 EST (Tue, 10 Nov 2009)
@@ -110,6 +110,24 @@
                 return list_copy( l, lol_get( lol, in[ 2 ] - '1' ) );
         }
     }
+ else if ( in[0] == '$' && in[1] == '(' && in[2] == '1' && in[4] == ')' &&
+ in[5] == '\0') {
+
+ switch( in[3] )
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ return list_copy( l, lol_get( lol, in[3]-'0'+10-1 ) );
+ }
+ }
 
     /* Expand @() files, to single item plus accompanying file. */
     if ( ( in[ 0 ] == '@' ) && ( in[ 1 ] == '(' ) && ( *( end - 1 ) == ')' ) )
@@ -354,6 +372,9 @@
                     value = lol_get( lol, 1 );
                 else if ( ( varname[0] >= '1' ) && ( varname[0] <= '9' ) )
                     value = lol_get( lol, varname[0] - '1' );
+ else if( varname[0] == '1' && varname[1] >= '0' &&
+ varname[1] <= '9' && !varname[2] )
+ value = lol_get( lol, varname[1] - '0' + 10 - 1 );
             }
 
             if ( !value )

Modified: trunk/tools/jam/src/lists.h
==============================================================================
--- trunk/tools/jam/src/lists.h (original)
+++ trunk/tools/jam/src/lists.h 2009-11-10 02:21:03 EST (Tue, 10 Nov 2009)
@@ -63,7 +63,7 @@
 
 typedef struct _lol LOL;
 
-# define LOL_MAX 9
+# define LOL_MAX 19
 
 struct _lol {
     int count;

Added: trunk/tools/jam/test/rule_param.jam
==============================================================================
--- (empty file)
+++ trunk/tools/jam/test/rule_param.jam 2009-11-10 02:21:03 EST (Tue, 10 Nov 2009)
@@ -0,0 +1,60 @@
+#~ Copyright 2008 Jonathan Biggar
+#~ Distributed under the Boost Software License, Version 1.0.
+#~ (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+ECHO -- Testing parameter passing... ;
+
+rule test_numeric_params
+{
+ assert $(1) : (==) : 1 ;
+ assert $(2) : (==) : 2 ;
+ assert $(3) : (==) : 3 ;
+ assert $(4) : (==) : 4 ;
+ assert $(5) : (==) : 5 ;
+ assert $(6) : (==) : 6 ;
+ assert $(7) : (==) : 7 ;
+ assert $(8) : (==) : 8 ;
+ assert $(9) : (==) : 9 ;
+ assert $(10) : (==) : 10 ;
+ assert $(11) : (==) : 11 ;
+ assert $(12) : (==) : 12 ;
+ assert $(13) : (==) : 13 ;
+ assert $(14) : (==) : 14 ;
+ assert $(15) : (==) : 15 ;
+ assert $(16) : (==) : 16 ;
+ assert $(17) : (==) : 17 ;
+ assert $(18) : (==) : 18 ;
+ assert $(19) : (==) : 19 ;
+}
+
+rule test_named_params ( p1 : p2 : p3 : p4 : p5 : p6 : p7 : p8 : p9 :
+ p10 : p11 : p12 : p13 : p14 : p15 : p16 : p17 : p18 : p19 )
+
+
+{
+ assert $(p1) : (==) : 1 ;
+ assert $(p2) : (==) : 2 ;
+ assert $(p3) : (==) : 3 ;
+ assert $(p4) : (==) : 4 ;
+ assert $(p5) : (==) : 5 ;
+ assert $(p6) : (==) : 6 ;
+ assert $(p7) : (==) : 7 ;
+ assert $(p8) : (==) : 8 ;
+ assert $(p9) : (==) : 9 ;
+ assert $(p10) : (==) : 10 ;
+ assert $(p11) : (==) : 11 ;
+ assert $(p12) : (==) : 12 ;
+ assert $(p13) : (==) : 13 ;
+ assert $(p14) : (==) : 14 ;
+ assert $(p15) : (==) : 15 ;
+ assert $(p16) : (==) : 16 ;
+ assert $(p17) : (==) : 17 ;
+ assert $(p18) : (==) : 18 ;
+ assert $(p19) : (==) : 19 ;
+}
+
+test_numeric_params 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 :
+ 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 ;
+
+test_named_params 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 :
+ 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 ;

Modified: trunk/tools/jam/test/test.jam
==============================================================================
--- trunk/tools/jam/test/test.jam (original)
+++ trunk/tools/jam/test/test.jam 2009-11-10 02:21:03 EST (Tue, 10 Nov 2009)
@@ -14,6 +14,7 @@
     parallel_actions
     parallel_multifile_actions_1
     parallel_multifile_actions_2
+ rule_param
     stress_var_expand
     target_var
     var_expand


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk