private static Op buildFilter(ExprList exprs, Op op) { if ( exprs == null || exprs.isEmpty() ) return op ; for (Iterator<Expr> iter = exprs.iterator(); iter.hasNext();) { Expr expr = iter.next() ; if ( op == null ) op = OpTable.unit() ; op = OpFilter.filter(expr, op) ; iter.remove() ; } return op ; } }
/** For any expression now in scope, wrap the op with a filter */ private static Op insertAnyFilter(ExprList exprs, Set<Var> patternVarsScope, Op op) { for (Iterator<Expr> iter = exprs.iterator(); iter.hasNext();) { Expr expr = iter.next() ; // Cache Set<Var> exprVars = expr.getVarsMentioned() ; if ( patternVarsScope.containsAll(exprVars) ) { if ( op == null ) op = OpTable.unit() ; op = OpFilter.filter(expr, op) ; iter.remove() ; // Record expr. } } return op ; }
@Override public NodeValue exec(Binding binding, ExprList args, String uri, FunctionEnv env) { // This is merely to allow functions to be // It duplicates code in E_Function/ExprFunctionN. this.env = env ; if ( args == null ) // The contract on the function interface is that this should not happen. throw new ARQInternalErrorException("FunctionBase: Null args list") ; List<NodeValue> evalArgs = new ArrayList<NodeValue>() ; for ( Iterator<Expr> iter = args.iterator() ; iter.hasNext() ; ) { Expr e = iter.next() ; NodeValue x = e.eval(binding, env) ; evalArgs.add(x) ; } NodeValue nv = exec(evalArgs) ; arguments = null ; return nv ; }
/** For any expression now in scope, wrap the op with a filter */ private static Op insertAnyFilter(ExprList exprs, Set<Var> patternVarsScope, Op op) { for ( Iterator<Expr> iter = exprs.iterator() ; iter.hasNext() ; ) { Expr expr = iter.next() ; // Cache Set<Var> exprVars = expr.getVarsMentioned() ; if ( patternVarsScope.containsAll(exprVars) ) { if ( op == null ) op = OpTable.unit() ; op = OpFilter.filter(expr, op) ; iter.remove() ; } } return op ; }
/** Place expressions around an Op */ private static Op buildFilter(ExprList exprs, Op op) { if ( exprs.isEmpty() ) return op ; for ( Iterator<Expr> iter = exprs.iterator() ; iter.hasNext() ; ) { Expr expr = iter.next() ; if ( op == null ) op = OpTable.unit() ; op = OpFilter.filter(expr, op) ; iter.remove(); } return op ; } }
/** For any expression now in scope, wrap the op with a filter */ private static Op insertAnyFilter(ExprList exprs, Set<Var> patternVarsScope, Op op) { for ( Iterator<Expr> iter = exprs.iterator() ; iter.hasNext() ; ) { Expr expr = iter.next() ; // Cache Set<Var> exprVars = expr.getVarsMentioned() ; if ( patternVarsScope.containsAll(exprVars) ) { if ( op == null ) op = OpTable.unit() ; op = OpFilter.filter(expr, op) ; iter.remove() ; } } return op ; }
/** Place expressions around an Op */ private static Op buildFilter(ExprList exprs, Op op) { if ( exprs.isEmpty() ) return op ; for ( Iterator<Expr> iter = exprs.iterator() ; iter.hasNext() ; ) { Expr expr = iter.next() ; if ( op == null ) op = OpTable.unit() ; op = OpFilter.filter(expr, op) ; iter.remove(); } return op ; } }
public NodeValue exec(Binding binding, ExprList args, String uri, FunctionEnv env) { // This is merely to allow functions to be // It duplicates code in E_Function/ExprFunctionN. this.env = env ; if ( args == null ) // The contract on the function interface is that this should not happen. throw new ARQInternalErrorException("FunctionBase: Null args list") ; List<NodeValue> evalArgs = new ArrayList<NodeValue>() ; for ( Iterator<Expr> iter = args.iterator() ; iter.hasNext() ; ) { Expr e = iter.next() ; NodeValue x = e.eval(binding, env) ; evalArgs.add(x) ; } NodeValue nv = exec(evalArgs) ; arguments = null ; return nv ; }