Creates a function call or a function item expression. @param qnm function name @param fb function arguments @param qc query context @return function call @throws QueryException query exception
(final QNm qnm, final FuncBuilder fb, final QueryContext qc)
| 81 | * @throws QueryException query exception |
| 82 | */ |
| 83 | public static Expr get(final QNm qnm, final FuncBuilder fb, final QueryContext qc) |
| 84 | throws QueryException { |
| 85 | |
| 86 | // partial function call? |
| 87 | if(fb.placeholders > 0) return dynamic(item(qnm, fb.arity, false, fb.info, qc), fb); |
| 88 | |
| 89 | final QNm name = funcName(qnm, fb.arity, fb.info, qc); |
| 90 | |
| 91 | // constructor function |
| 92 | if(eq(name.uri(), XS_URI)) return constructorCall(name, fb); |
| 93 | |
| 94 | // built-in function |
| 95 | final FuncDefinition fd = builtIn(name); |
| 96 | if(fd != null) { |
| 97 | final int min = fd.minMax[0], max = fd.minMax[1]; |
| 98 | final Expr[] prepared = prepareArgs(fb, fd.params, min, max, fd); |
| 99 | final StandardFunc sf = fd.get(fb.info, prepared); |
| 100 | if(sf.hasUPD()) qc.updating(); |
| 101 | return sf; |
| 102 | } |
| 103 | |
| 104 | // user-defined function |
| 105 | return staticCall(name, fb, qc); |
| 106 | } |
| 107 | |
| 108 | /** |
| 109 | * Creates a dynamic function call or a partial function expression. |
no test coverage detected