| 93 | } |
| 94 | |
| 95 | @Override |
| 96 | public Value value(final QueryContext qc) throws QueryException { |
| 97 | final QueryFocus qf = qc.focus; |
| 98 | final Value qv = qf.value; |
| 99 | try { |
| 100 | Value value = exprs[0].value(qc); |
| 101 | final int el = exprs.length; |
| 102 | for(int e = 1; e < el; e++) { |
| 103 | final Expr expr = exprs[e]; |
| 104 | final ValueBuilder vb = new ValueBuilder(qc, e < el - 1 ? -1 : size()); |
| 105 | final Iter iter = value.iter(); |
| 106 | for(Item item; (item = qc.next(iter)) != null;) { |
| 107 | qf.value = item; |
| 108 | vb.add(expr.value(qc)); |
| 109 | } |
| 110 | value = vb.value(expr); |
| 111 | } |
| 112 | return value; |
| 113 | } finally { |
| 114 | qf.value = qv; |
| 115 | } |
| 116 | } |
| 117 | |
| 118 | @Override |
| 119 | public IterMap copy(final CompileContext cc, final IntObjectMap<Var> vm) { |