public abstract class CastingExpression extends UnaryExpression
Modifier and Type | Field and Description |
---|---|
protected Converter |
converter |
protected NamespaceResolver |
nsResolver |
operand
EFFECTIVE_BOOLEAN_VALUE, EVALUATE_METHOD, EVENT_FEED_METHOD, INHERITED_CONTEXT, INSPECTION_CONTEXT, ITEM_FEED_METHOD, ITERATE_METHOD, locationId, MAX_SEQUENCE_LENGTH, MAX_STRING_LENGTH, NAVIGATION_CONTEXT, NODE_VALUE_CONTEXT, PROCESS_METHOD, PUSH_SELECTION, staticProperties, UNBOUNDED_LOWER, UNBOUNDED_UPPER, W3C_CONSUMING, W3C_FREE_RANGING, W3C_GROUP_CONSUMING, W3C_MOTIONLESS, WATCH_METHOD
Constructor and Description |
---|
CastingExpression(Expression source,
AtomicType target,
boolean allowEmpty)
Create a cast expression
|
Modifier and Type | Method and Description |
---|---|
boolean |
allowsEmpty()
Ask whether the expression accepts an empty sequence as input (producing an empty sequence as output)
|
int |
computeSpecialProperties()
Determine the special properties of this expression
|
Converter |
getConverter()
Get the Converter allocated to implement this cast expression, if any
|
NamespaceResolver |
getNamespaceResolver()
Get the namespace resolver, if any
|
int |
getStreamability(int syntacticContext,
boolean allowExtensions,
List<String> reasons)
Get the "sweep" of this expression as defined in the W3C streamability specifications.
|
AtomicType |
getTargetPrimitiveType()
Get the primitive base type of the target type of the cast
|
AtomicType |
getTargetType()
Get the target type (the result type)
|
boolean |
isOperandIsStringLiteral()
Ask whether the operand to the cast expression was supplied in the form of a string literal.
|
void |
setAllowEmpty(boolean allow)
Say whether the expression accepts an empty sequence as input (producing an empty sequence as output)
|
void |
setNamespaceResolver(NamespaceResolver resolver)
Set the namespace resolver, if any
|
void |
setOperandIsStringLiteral(boolean option)
Say whether the operand to the cast expression was supplied in the form of a string literal.
|
void |
setTargetType(AtomicType type)
Set the target type
|
Expression |
simplify(ExpressionVisitor visitor)
Simplify the expression
|
computeCardinality, displayOperator, equals, explain, getBaseExpression, getItemType, hashCode, iterateSubExpressions, optimize, promote, replaceSubExpression, toString, typeCheck
addToPathMap, adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeDependencies, computeStaticProperties, copy, doPromotion, dynamicError, effectiveBooleanValue, evaluateAsString, evaluateItem, evaluatePendingUpdates, explain, getCardinality, getColumnNumber, getColumnNumber, getConstructType, getContainer, getDependencies, getEvaluationMethod, getExecutable, getExpressionCompiler, getExpressionName, getHostLanguage, getImplementationMethod, getIntegerBounds, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getStreamingAdjunct, getSystemId, getSystemId, hasVariableBinding, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterate, iterateEvents, iterateSubExpressionInfo, markTailFunctionCalls, process, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, toPattern, toStreamingPattern, typeError
protected Converter converter
protected NamespaceResolver nsResolver
public CastingExpression(Expression source, AtomicType target, boolean allowEmpty)
source
- expression giving the value to be convertedtarget
- the type to which the value is to be convertedallowEmpty
- true if the expression allows an empty sequence as input, producing
an empty sequence as output. If false, an empty sequence is a type error.public AtomicType getTargetPrimitiveType()
public void setTargetType(AtomicType type)
type
- the target type for the castpublic AtomicType getTargetType()
public void setAllowEmpty(boolean allow)
allow
- true if an empty sequence is acceptedpublic boolean allowsEmpty()
public void setOperandIsStringLiteral(boolean option)
option
- true if the operand was supplied as a string literalpublic boolean isOperandIsStringLiteral()
public Converter getConverter()
public void setNamespaceResolver(NamespaceResolver resolver)
resolver
- the namespace resolver to be used if the target type is namespace-sensitivepublic NamespaceResolver getNamespaceResolver()
public Expression simplify(ExpressionVisitor visitor) throws XPathException
simplify
in class UnaryExpression
visitor
- an expression visitorXPathException
- if an error is discovered during expression
rewritingpublic int computeSpecialProperties()
computeSpecialProperties
in class UnaryExpression
StaticProperty.NON_CREATIVE
.public int getStreamability(int syntacticContext, boolean allowExtensions, List<String> reasons)
getStreamability
in class Expression
syntacticContext
- one of the values Expression.NAVIGATION_CONTEXT
,
Expression.NODE_VALUE_CONTEXT
, Expression.INHERITED_CONTEXT
, Expression.INSPECTION_CONTEXT
allowExtensions
- if false, the definition of "guaranteed streamability" in the
W3C specification is used. If true, Saxon extensions are permitted, which make some
constructs streamable that would not be so according to W3C rules.reasons
- Expression.W3C_MOTIONLESS
, Expression.W3C_CONSUMING
,
Expression.W3C_GROUP_CONSUMING
, Expression.W3C_FREE_RANGING
Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.