Package net.sf.saxon.expr
Class CastExpression
- java.lang.Object
-
- net.sf.saxon.expr.ComputedExpression
-
- net.sf.saxon.expr.UnaryExpression
-
- net.sf.saxon.expr.CastExpression
-
- All Implemented Interfaces:
java.io.Serializable,javax.xml.transform.SourceLocator,Container,Expression,InstructionInfoProvider
public final class CastExpression extends UnaryExpression
Cast Expression: implements "cast as data-type ( expression )". It also allows an internal cast, which has the same semantics as a user-requested cast, but maps an empty sequence to an empty sequence.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static IntHashMapcastingTable-
Fields inherited from class net.sf.saxon.expr.UnaryExpression
operand
-
Fields inherited from class net.sf.saxon.expr.ComputedExpression
locationId, staticProperties
-
Fields inherited from interface net.sf.saxon.expr.Expression
EVALUATE_METHOD, ITERATE_METHOD, PROCESS_METHOD
-
-
Constructor Summary
Constructors Constructor Description CastExpression(Expression source, AtomicType target, boolean allowEmpty)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) static voidaddAllowedCasts(int source, int[] target)static AtomicValuecastStringToQName(java.lang.CharSequence operand, AtomicType targetType, StaticContext env)Evaluate the "pseudo-cast" of a string literal to a QName or NOTATION value.intcomputeCardinality()Get the static cardinality of the expressionintcomputeSpecialProperties()Determine the special properties of this expressionprotected java.lang.StringdisplayOperator(Configuration config)Give a string representation of the operator for use in diagnosticsbooleanequals(java.lang.Object other)Is this expression the same as another expression?ItemevaluateItem(XPathContext context)Evaluate the expressionItemTypegetItemType(TypeHierarchy th)Get the static type of the expressionstatic booleanisPossibleCast(int source, int target)Determine whether casting from a source type to a target type is possibleExpressionsimplify(StaticContext env)Simplify the expressionExpressiontypeCheck(StaticContext env, ItemType contextItemType)Type-check the expression-
Methods inherited from class net.sf.saxon.expr.UnaryExpression
display, getBaseExpression, hashCode, iterateSubExpressions, optimize, promote, replaceSubExpression
-
Methods inherited from class net.sf.saxon.expr.ComputedExpression
adoptChildExpression, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluateAsString, getCardinality, getColumnNumber, getConstructType, getDependencies, getExecutable, getHostLanguage, getImplementationMethod, getInstructionInfo, getIntrinsicDependencies, getLineNumber, getLocationId, getLocationProvider, getParentExpression, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, hasBadParentPointer, iterate, markTailFunctionCalls, process, resetStaticProperties, setLocationId, setParentExpression, setParentExpression, suppressValidation, typeError
-
-
-
-
Field Detail
-
castingTable
static IntHashMap castingTable
-
-
Constructor Detail
-
CastExpression
public CastExpression(Expression source, AtomicType target, boolean allowEmpty)
-
-
Method Detail
-
addAllowedCasts
static void addAllowedCasts(int source, int[] target)
-
isPossibleCast
public static boolean isPossibleCast(int source, int target)Determine whether casting from a source type to a target type is possible- Parameters:
source- a primitive type (one that has an entry in the casting table)target- another primitive type- Returns:
- true if the entry in the casting table is either "Y" (casting always succeeds) or "M" (casting allowed but may fail for some values)
-
simplify
public Expression simplify(StaticContext env) throws XPathException
Simplify the expression- Specified by:
simplifyin interfaceExpression- Overrides:
simplifyin classUnaryExpression- Parameters:
env- the static context- Returns:
- the simplified expression
- Throws:
XPathException- if an error is discovered during expression rewriting
-
typeCheck
public Expression typeCheck(StaticContext env, ItemType contextItemType) throws XPathException
Type-check the expression- Specified by:
typeCheckin interfaceExpression- Overrides:
typeCheckin classUnaryExpression- Parameters:
env- the static context of the expressioncontextItemType- 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 toType.ITEM_TYPE- Returns:
- the original expression, rewritten to perform necessary run-time type checks, and to perform other type-related optimizations
- Throws:
StaticError- if an error is discovered during this phase (typically a type error)XPathException
-
computeCardinality
public int computeCardinality()
Get the static cardinality of the expression- Overrides:
computeCardinalityin classUnaryExpression
-
getItemType
public ItemType getItemType(TypeHierarchy th)
Get the static type of the expression- Specified by:
getItemTypein interfaceExpression- Overrides:
getItemTypein classUnaryExpression- Parameters:
th-- Returns:
- the item type of the items in the result sequence, insofar as this is known statically.
-
computeSpecialProperties
public int computeSpecialProperties()
Determine the special properties of this expression- Overrides:
computeSpecialPropertiesin classUnaryExpression- Returns:
StaticProperty.NON_CREATIVE.
-
evaluateItem
public Item evaluateItem(XPathContext context) throws XPathException
Evaluate the expression- Specified by:
evaluateItemin interfaceExpression- Overrides:
evaluateItemin classComputedExpression- Parameters:
context- The context in which the expression is to be evaluated- Returns:
- the node or atomic value that results from evaluating the expression; or null to indicate that the result is an empty sequence
- Throws:
XPathException- if any dynamic error occurs evaluating the expression
-
equals
public boolean equals(java.lang.Object other)
Is this expression the same as another expression?- Overrides:
equalsin classUnaryExpression
-
displayOperator
protected java.lang.String displayOperator(Configuration config)
Give a string representation of the operator for use in diagnostics- Specified by:
displayOperatorin classUnaryExpression- Parameters:
config-- Returns:
- the operator, as a string
-
castStringToQName
public static AtomicValue castStringToQName(java.lang.CharSequence operand, AtomicType targetType, StaticContext env) throws XPathException
Evaluate the "pseudo-cast" of a string literal to a QName or NOTATION value. This can only happen at compile time- Returns:
- the QName or NOTATION value that results from casting the string to a QName. This will either be a QNameValue or a DerivedAtomicValue derived from QName or NOTATION
- Throws:
XPathException
-
-