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:
Serializable
,SourceLocator
,Container
,Expression
,InstructionInfoProvider
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:
-
Field Summary
FieldsFields 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 -
Method Summary
Modifier and TypeMethodDescription(package private) static void
addAllowedCasts
(int source, int[] target) static AtomicValue
castStringToQName
(CharSequence operand, AtomicType targetType, StaticContext env) Evaluate the "pseudo-cast" of a string literal to a QName or NOTATION value.int
Get the static cardinality of the expressionint
Determine the special properties of this expressionprotected String
displayOperator
(Configuration config) Give a string representation of the operator for use in diagnosticsboolean
Is this expression the same as another expression?evaluateItem
(XPathContext context) Evaluate the expressionGet the static type of the expressionstatic boolean
isPossibleCast
(int source, int target) Determine whether casting from a source type to a target type is possiblesimplify
(StaticContext env) Simplify the expressiontypeCheck
(StaticContext env, ItemType contextItemType) Type-check the expressionMethods 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 Details
-
castingTable
-
-
Constructor Details
-
CastExpression
-
-
Method Details
-
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
Simplify the expression- Specified by:
simplify
in interfaceExpression
- Overrides:
simplify
in classUnaryExpression
- Parameters:
env
- the static context- Returns:
- the simplified expression
- Throws:
XPathException
- if an error is discovered during expression rewriting
-
typeCheck
Type-check the expression- Specified by:
typeCheck
in interfaceExpression
- Overrides:
typeCheck
in 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:
XPathException
-
computeCardinality
public int computeCardinality()Get the static cardinality of the expression- Overrides:
computeCardinality
in classUnaryExpression
-
getItemType
Get the static type of the expression- Specified by:
getItemType
in interfaceExpression
- Overrides:
getItemType
in 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:
computeSpecialProperties
in classUnaryExpression
- Returns:
StaticProperty.NON_CREATIVE
.
-
evaluateItem
Evaluate the expression- Specified by:
evaluateItem
in interfaceExpression
- Overrides:
evaluateItem
in 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
Is this expression the same as another expression?- Overrides:
equals
in classUnaryExpression
-
displayOperator
Give a string representation of the operator for use in diagnostics- Specified by:
displayOperator
in classUnaryExpression
- Parameters:
config
-- Returns:
- the operator, as a string
-
castStringToQName
public static AtomicValue castStringToQName(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
-