comparison src/luan/interp/ExpList.java @ 107:dbf459397217

change OutputStatement to JspExpressions; fix multiple results handling; git-svn-id: https://luan-java.googlecode.com/svn/trunk@108 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Mon, 19 May 2014 09:17:57 +0000
parents 754e6030c029
children 2428ecfed375
comparison
equal deleted inserted replaced
106:1a29dd3888f6 107:dbf459397217
61 61
62 void add(Expressions expressions) { 62 void add(Expressions expressions) {
63 adders.add( new ExpressionsAdder(expressions) ); 63 adders.add( new ExpressionsAdder(expressions) );
64 } 64 }
65 65
66 void add(Code code) {
67 if( code instanceof Expr ) {
68 add((Expr)code);
69 } else {
70 add((Expressions)code);
71 }
72 }
73
66 Expressions build() { 74 Expressions build() {
67 if( adders.isEmpty() ) 75 int size = adders.size();
76 if( size == 0 )
68 return emptyExpList; 77 return emptyExpList;
69 if( adders.size() == 1 ) { 78 if( size == 1 ) {
70 Adder adder = adders.get(0); 79 Adder adder = adders.get(0);
71 if( adder instanceof ExpressionsAdder ) { 80 if( adder instanceof ExpressionsAdder ) {
72 ExpressionsAdder ea = (ExpressionsAdder)adder; 81 ExpressionsAdder ea = (ExpressionsAdder)adder;
73 return ea.expressions; 82 return ea.expressions;
74 } 83 }
75 ExprAdder ea = (ExprAdder)adder; 84 ExprAdder ea = (ExprAdder)adder;
76 return new SingleExpList(ea.expr); 85 return new SingleExpList(ea.expr);
77 } 86 }
78 return new ExpList( adders.toArray(new Adder[0]) ); 87 Adder[] a = adders.toArray(new Adder[size]);
88 for( int i=0; i<size-1; i++ ) {
89 Adder adder = a[i];
90 if( adder instanceof ExpressionsAdder ) {
91 a[i] = new ExprAdder(new ExpressionsExpr(((ExpressionsAdder)adder).expressions));
92 }
93 }
94 return new ExpList(a);
79 } 95 }
80 } 96 }
81 97
82 private static final Object[] EMPTY = new Object[0]; 98 private static final Object[] EMPTY = new Object[0];
83 99