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 IntHashMap
castingTable
-
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 void
addAllowedCasts(int source, int[] target)
static AtomicValue
castStringToQName(java.lang.CharSequence operand, AtomicType targetType, StaticContext env)
Evaluate the "pseudo-cast" of a string literal to a QName or NOTATION value.int
computeCardinality()
Get the static cardinality of the expressionint
computeSpecialProperties()
Determine the special properties of this expressionprotected java.lang.String
displayOperator(Configuration config)
Give a string representation of the operator for use in diagnosticsboolean
equals(java.lang.Object other)
Is this expression the same as another expression?Item
evaluateItem(XPathContext context)
Evaluate the expressionItemType
getItemType(TypeHierarchy th)
Get the static type of the expressionstatic boolean
isPossibleCast(int source, int target)
Determine whether casting from a source type to a target type is possibleExpression
simplify(StaticContext env)
Simplify the expressionExpression
typeCheck(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:
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
public Expression typeCheck(StaticContext env, ItemType contextItemType) throws XPathException
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:
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:
computeCardinality
in classUnaryExpression
-
getItemType
public ItemType getItemType(TypeHierarchy th)
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
public Item evaluateItem(XPathContext context) throws XPathException
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
public boolean equals(java.lang.Object other)
Is this expression the same as another expression?- Overrides:
equals
in classUnaryExpression
-
displayOperator
protected java.lang.String displayOperator(Configuration config)
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(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
-
-