| java.lang.Object net.sf.saxon.expr.ComputedExpression net.sf.saxon.expr.BinaryExpression
All known Subclasses: net.sf.saxon.expr.IdentityComparison, net.sf.saxon.expr.GeneralComparison, net.sf.saxon.expr.ValueComparison, net.sf.saxon.expr.RangeExpression, net.sf.saxon.expr.GeneralComparison10, net.sf.saxon.expr.BooleanExpression, net.sf.saxon.expr.ArithmeticExpression, net.sf.saxon.expr.VennExpression, net.sf.saxon.expr.SingletonComparison,
BinaryExpression | abstract public class BinaryExpression extends ComputedExpression (Code) | | Binary Expression: a numeric or boolean expression consisting of the
two operands and an operator
|
Constructor Summary | |
public | BinaryExpression(Expression p0, int op, Expression p1) Create a binary expression identifying the two operands and the operator
Parameters: p0 - the left-hand operand Parameters: op - the operator, as a token returned by the Tokenizer (e.g. |
operator | protected int operator(Code) | | |
BinaryExpression | public BinaryExpression(Expression p0, int op, Expression p1)(Code) | | Create a binary expression identifying the two operands and the operator
Parameters: p0 - the left-hand operand Parameters: op - the operator, as a token returned by the Tokenizer (e.g. Token.AND) Parameters: p1 - the right-hand operand |
computeCardinality | public int computeCardinality()(Code) | | Determine the static cardinality. Default implementation returns [0..1] if either operand
can be empty, or [1..1] otherwise.
|
computeSpecialProperties | public int computeSpecialProperties()(Code) | | Determine the special properties of this expression
StaticProperty.NON_CREATIVE. This is overriddenfor some subclasses. |
equals | public boolean equals(Object other)(Code) | | Is this expression the same as another expression?
|
getOperator | public int getOperator()(Code) | | Get the operator
|
hashCode | public int hashCode()(Code) | | get HashCode for comparing two expressions. Note that this hashcode gives the same
result for (A op B) and for (B op A), whether or not the operator is commutative.
|
isCommutative | protected static boolean isCommutative(int operator)(Code) | | |
isInverse | protected static boolean isInverse(int op1, int op2)(Code) | | Test if one operator is the inverse of another, so that (A op1 B) is
equivalent to (B op2 A). Commutative operators are the inverse of themselves
and are therefore not listed here.
Parameters: op1 - the first operator Parameters: op2 - the second operator true if the operators are the inverse of each other |
iterateSubExpressions | public Iterator iterateSubExpressions()(Code) | | Get the immediate subexpressions of this expression
|
optimize | public Expression optimize(Optimizer opt, StaticContext env, ItemType contextItemType) throws XPathException(Code) | | Perform optimisation of an expression and its subexpressions.
This method is called after all references to functions and variables have been resolved
to the declaration of the function or variable, and after all type checking has been done.
Parameters: opt - the optimizer in use. This provides access to supporting functions; it also allowsdifferent optimization strategies to be used in different circumstances. Parameters: env - the static context of the expression Parameters: contextItemType - the static type of "." at the point where this expression is invoked.The parameter is set to null if it is known statically that the context item will be undefined.If the type of the context item is not known statically, the argument is set tonet.sf.saxon.type.Type.ITEM_TYPE the original expression, rewritten if appropriate to optimize execution throws: net.sf.saxon.trans.StaticError - if an error is discovered during this phase(typically a type error) |
|
|