1
2
3
4
5
6 package dev.metaschema.core.metapath.cst.logic;
7
8 import dev.metaschema.core.metapath.DynamicContext;
9 import dev.metaschema.core.metapath.IExpression;
10 import dev.metaschema.core.metapath.cst.IExpressionVisitor;
11 import dev.metaschema.core.metapath.function.ComparisonFunctions;
12 import dev.metaschema.core.metapath.item.ISequence;
13 import dev.metaschema.core.metapath.item.atomic.IAnyAtomicItem;
14 import dev.metaschema.core.metapath.item.atomic.IBooleanItem;
15 import edu.umd.cs.findbugs.annotations.NonNull;
16
17
18
19
20
21
22 public class GeneralComparison
23 extends AbstractComparison {
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public GeneralComparison(
38 @NonNull String text,
39 @NonNull IExpression left,
40 @NonNull ComparisonFunctions.Operator operator,
41 @NonNull IExpression right) {
42 super(text, left, operator, right);
43 }
44
45 @Override
46 public <RESULT, CONTEXT> RESULT accept(IExpressionVisitor<RESULT, CONTEXT> visitor, CONTEXT context) {
47 return visitor.visitGeneralComparison(this, context);
48 }
49
50 @Override
51 protected ISequence<? extends IBooleanItem> evaluate(DynamicContext dynamicContext, ISequence<?> focus) {
52 ISequence<? extends IAnyAtomicItem> leftItems = ISequence.of(getLeft().accept(dynamicContext, focus).atomize());
53 ISequence<? extends IAnyAtomicItem> rightItems = ISequence.of(getRight().accept(dynamicContext, focus).atomize());
54 return ISequence.of(ComparisonFunctions.generalComparison(leftItems, getOperator(), rightItems, dynamicContext));
55 }
56 }