MCPcopy Create free account
hub / github.com/BaseXdb/basex / Single

Class Single

basex-core/src/main/java/org/basex/query/expr/Single.java:18–128  ·  view source on GitHub ↗

Abstract single expression. @author BaseX Team, BSD License @author Christian Gruen

Source from the content-addressed store, hash-verified

16 * @author Christian Gruen
17 */
18public abstract class Single extends ParseExpr {
19 /** Expression. */
20 public Expr expr;
21
22 /**
23 * Constructor.
24 * @param info input info (can be {@code null})
25 * @param expr expression (can be {@code null})
26 * @param seqType sequence type
27 */
28 protected Single(final InputInfo info, final Expr expr, final SeqType seqType) {
29 super(info, seqType);
30 this.expr = expr;
31 }
32
33 @Override
34 public void checkUp() throws QueryException {
35 checkNoUp(expr);
36 }
37
38 @Override
39 public Expr compile(final CompileContext cc) throws QueryException {
40 expr = expr.compile(cc);
41 return optimize(cc);
42 }
43
44 @Override
45 public Expr optimize(final CompileContext cc) throws QueryException {
46 return expr instanceof Value ? cc.preEval(this) : this;
47 }
48
49 @Override
50 public boolean has(final Flag... flags) {
51 return expr.has(flags);
52 }
53
54 @Override
55 public boolean inlineable(final InlineContext ic) {
56 return expr.inlineable(ic);
57 }
58
59 @Override
60 public VarUsage count(final Var var) {
61 return expr.count(var);
62 }
63
64 @Override
65 public Expr inline(final InlineContext ic) throws QueryException {
66 final Expr inlined = expr.inline(ic);
67 if(inlined == null) return null;
68 expr = inlined;
69 return optimize(ic.cc);
70 }
71
72 @Override
73 public boolean accept(final ASTVisitor visitor) {
74 return expr.accept(visitor);
75 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected