package org.basex.query.expr;
import static org.basex.query.QueryText.*;
import org.basex.query.QueryContext;
import org.basex.query.QueryException;
import org.basex.util.InputInfo;
/**
* Single case of a switch expression.
*
* @author BaseX Team 2005-12, BSD License
* @author Christian Gruen
*/
public class SwitchCase extends Arr {
/**
* Constructor.
* @param ii input info
* @param e return expression (placed first) and cases
*/
public SwitchCase(final InputInfo ii, final Expr... e) {
super(ii, e);
}
@Override
public Expr comp(final QueryContext ctx) throws QueryException {
final int el = expr.length;
expr[0] = expr[0].comp(ctx);
for(int e = 1; e < el; ++e) expr[e] = checkUp(expr[e], ctx).comp(ctx);
return this;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
final int el = expr.length;
for(int e = 1; e < el; ++e) sb.append(' ' + CASE + ' ' + expr[e]);
if(el == 1) sb.append(' ' + DEFAULT);
sb.append(' ' + RETURN + ' ' + 0);
return sb.toString();
}
}