@Override public List<Expr> getArgs() { return args.getList() ; }
@Override public List<Expr> getArgs() { return args.getList() ; }
public void addAll(ExprList exprs) { expressions.addAll(exprs.getList()) ; } public void add(Expr expr) { expressions.add(expr) ; }
public void addAll(ExprList exprs) { expressions.addAll(exprs.getList()) ; } public void add(Expr expr) { expressions.add(expr) ; }
private static ExprList concatArgs(Expr expr, ExprList args) { args = new ExprList(args) ; args.getList().add(0, expr) ; return args ; }
private static ExprList concatArgs(Expr expr, ExprList args) { args = new ExprList(args) ; args.getList().add(0, expr) ; return args ; }
protected E_Call(String sym, ExprList args) { super(sym, args) ; if (args.size() == 0) { identExpr = null; } else { identExpr = args.get(0); argExprs = args.getList().subList(1,args.size()) ; } }
private static Pair<List<Pair<Var, NodeValue>>, ExprList> preprocessFilterInequality(ExprList exprs) { List<Pair<Var, NodeValue>> exprsFilterInequality = new ArrayList<Pair<Var, NodeValue>>(); ExprList exprsOther = new ExprList(); for (Expr e : exprs.getList()) { Pair<Var, NodeValue> p = preprocess(e); if (p != null) exprsFilterInequality.add(p); else exprsOther.add(e); } if (exprsFilterInequality.size() == 0) return null; return Pair.create(exprsFilterInequality, exprsOther); }
private static Pair<List<Pair<Var, NodeValue>>, ExprList> preprocessFilterEquality(ExprList exprs) { List<Pair<Var, NodeValue>> exprsFilterEquality = new ArrayList<Pair<Var, NodeValue>>(); ExprList exprsOther = new ExprList(); for (Expr e : exprs.getList()) { Pair<Var, NodeValue> p = preprocess(e); if (p != null) exprsFilterEquality.add(p); else exprsOther.add(e); } if (exprsFilterEquality.size() == 0) return null; return Pair.create(exprsFilterEquality, exprsOther); }
private static Pair<List<Pair<Var, Var>>, ExprList> preprocessFilterImplicitJoin(Op left, Op right, ExprList exprs) { List<Pair<Var, Var>> exprsJoins = new ArrayList<Pair<Var, Var>>(); ExprList exprsOther = new ExprList(); for (Expr e : exprs.getList()) { Pair<Var, Var> p = preprocess(left, right, e); if (p != null) { exprsJoins.add(p); } else { exprsOther.add(e); } } if (exprsJoins.size() == 0) return null; return Pair.create(exprsJoins, exprsOther); }
private static Pair<List<Pair<Var, Var>>, ExprList> preprocessFilterImplicitJoin(Op subOp, ExprList exprs) { List<Pair<Var, Var>> exprsJoins = new ArrayList<Pair<Var, Var>>(); ExprList exprsOther = new ExprList(); for (Expr e : exprs.getList()) { Pair<Var, Var> p = preprocess(subOp, e); if (p != null) { exprsJoins.add(p); } else { exprsOther.add(e); } } if (exprsJoins.size() == 0) return null; return Pair.create(exprsJoins, exprsOther); }
private Expr xform(ExprFunctionN func, ExprList args) { if ( ! alwaysCopy && equals1(func.getArgs(), args.getList()) ) return func ; return func.copy(args) ; }
private Expr xform(ExprFunctionN func, ExprList args) { if ( ! alwaysCopy && equals1(func.getArgs(), args.getList()) ) return func ; return func.copy(args) ; }
private Expr xform(ExprFunctionOp funcOp, ExprList args, Op opArg) { if ( ! alwaysCopy && equals1(funcOp.getArgs(), args.getList()) && funcOp.getGraphPattern() == opArg ) return funcOp ; return funcOp.copy(args, opArg) ; }
private Expr xform(ExprFunctionOp funcOp, ExprList args, Op opArg) { if ( ! alwaysCopy && equals1(funcOp.getArgs(), args.getList()) && funcOp.getGraphPattern() == opArg ) return funcOp ; return funcOp.copy(args, opArg) ; }
@Override public Op transform(OpFilter opFilter, Op subOp) { if ( ! safeToTransform(subOp) ) return super.transform(opFilter, subOp) ; ExprList exprs = opFilter.getExprs() ; Op op = subOp ; // Variables set Set<Var> patternVars = OpVars.patternVars(op) ; // Any assignments must go inside filters so the filters see the assignments. // For each filter in the expr list ... ExprList exprs2 = new ExprList() ; // Unchanged filters. Put around the result. for ( Expr e : exprs.getList() ) { Op op2 = processFilterWorker(e, op, patternVars) ; if ( op2 == null ) exprs2.add(e) ; else op = op2 ; } // Place any filter expressions around the processed sub op. if ( exprs2.size() > 0 ) op = OpFilter.filter(exprs2, op) ; return op ; }