net.sf.saxon.functions
Class SystemFunction

java.lang.Object
  extended bynet.sf.saxon.expr.ComputedExpression
      extended bynet.sf.saxon.expr.FunctionCall
          extended bynet.sf.saxon.functions.SystemFunction
All Implemented Interfaces:
Container, Expression, InstructionInfoProvider, java.io.Serializable, javax.xml.transform.SourceLocator
Direct Known Subclasses:
Adjust, Aggregate, Available, BaseURI, BooleanFn, CodepointEqual, CollatingFunction, Collection, CompileTimeFunction, Component, Concat, Current, CurrentDateTime, CurrentGroup, DateTimeConstructor, Doc, Document, DynamicFunctionCall, Error, EscapeURI, Evaluate, Existence, Find, ForceCase, ForEachGroupFunction, FormatDate, FormatNumber2, Id, Idref, InScopePrefixes, Insert, KeyFn, Lang, Last, Matches, NamePart, NamespaceForPrefix, Nilled, NormalizeSpace, NormalizeUnicode, NumberFn, Parse, Position, QNameFn, RegexGroup, Remove, Replace, ResolveQName, ResolveURI, Root, Rounding, Serialize, StringFn, StringJoin, StringLength, Subsequence, Substring, SystemProperty, Tokenize, Trace, Translate, TreatFn, Try, Unicode, UnparsedEntity, UnparsedText

public abstract class SystemFunction
extends FunctionCall

Abstract superclass for system-defined and user-defined functions

See Also:
Serialized Form

Field Summary
protected  int operation
           
 
Fields inherited from class net.sf.saxon.expr.FunctionCall
argument
 
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
SystemFunction()
           
 
Method Summary
protected  void addContextDocumentArgument(int pos, java.lang.String augmentedName)
          Add an implicit argument referring to the context document.
 void checkArguments(StaticContext env)
          Method called during static type checking
 int computeCardinality()
          Determine the cardinality of the function.
 int computeSpecialProperties()
          Determine the special properties of this expression.
 void display(int level, NamePool pool, java.io.PrintStream out)
          Diagnostic print of expression structure
protected  StandardFunction.Entry getDetails()
          Get the details
 java.lang.String getErrorCodeForTypeErrors()
          Return the error code to be used for type errors
 ItemType getItemType(TypeHierarchy th)
          Determine the item type of the value returned by the function
protected  SequenceType getRequiredType(int arg)
          Get the required type of the nth argument
static void main(java.lang.String[] args)
          The main() method of this class is not intended to be called, it merely tells the code inspection tools in IDEA that the constructors of each function class are actual entry points
static FunctionCall makeSystemFunction(java.lang.String name, int arity, NamePool pool)
          Make a system function (one in the standard function namespace).
 void setDetails(StandardFunction.Entry entry)
          Set the details of this type of function
protected  void useContextItemAsDefault()
          Set "." as the default value for the first and only argument.
 
Methods inherited from class net.sf.saxon.expr.FunctionCall
checkArgumentCount, getDisplayName, getFunctionNameCode, getNumberOfArguments, iterateSubExpressions, optimize, preEvaluate, promote, setArguments, setFunctionNameCode, simplify, simplifyArguments, typeCheck
 
Methods inherited from class net.sf.saxon.expr.ComputedExpression
adoptChildExpression, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, dynamicError, dynamicError, effectiveBooleanValue, evaluateAsString, evaluateItem, getCardinality, getColumnNumber, getConstructType, getDependencies, getExecutable, getHostLanguage, getImplementationMethod, getInstructionInfo, getIntrinsicDependencies, getLineNumber, getLocationId, getLocationProvider, getParentExpression, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, hasBadParentPointer, iterate, markTailFunctionCalls, process, resetStaticProperties, setLocationId, setParentExpression, suppressValidation, typeError, typeError
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

operation

protected int operation
Constructor Detail

SystemFunction

public SystemFunction()
Method Detail

makeSystemFunction

public static FunctionCall makeSystemFunction(java.lang.String name,
                                              int arity,
                                              NamePool pool)
Make a system function (one in the standard function namespace).

Parameters:
name - The local name of the function. It may also be a lexical QName for a recognized built-in function, e.g. saxon:evaluate, in which case the prefix is hard-coded.
Returns:
a FunctionCall that implements this function, if it exists, or null if the function is unknown.

setDetails

public void setDetails(StandardFunction.Entry entry)
Set the details of this type of function


getDetails

protected StandardFunction.Entry getDetails()
Get the details


checkArguments

public void checkArguments(StaticContext env)
                    throws XPathException
Method called during static type checking

Specified by:
checkArguments in class FunctionCall
Throws:
XPathException

getErrorCodeForTypeErrors

public java.lang.String getErrorCodeForTypeErrors()
Return the error code to be used for type errors


getRequiredType

protected SequenceType getRequiredType(int arg)
Get the required type of the nth argument


getItemType

public ItemType getItemType(TypeHierarchy th)
Determine the item type of the value returned by the function

Parameters:
th -
Returns:
a value such as Type.STRING, Type.BOOLEAN, Type.NUMBER, Type.NODE, or Type.ITEM (meaning not known at compile time)

computeCardinality

public int computeCardinality()
Determine the cardinality of the function.

Specified by:
computeCardinality in class ComputedExpression

computeSpecialProperties

public int computeSpecialProperties()
Determine the special properties of this expression. The general rule is that a system function call is non-creative if its return type is atomic, or if all its arguments are non-creative. This is overridden for the generate-id() function, which is considered creative if its operand is creative (because the result depends on the identity of the operand)

Overrides:
computeSpecialProperties in class ComputedExpression

useContextItemAsDefault

protected final void useContextItemAsDefault()
Set "." as the default value for the first and only argument. Called from subclasses.


addContextDocumentArgument

protected final void addContextDocumentArgument(int pos,
                                                java.lang.String augmentedName)
                                         throws StaticError
Add an implicit argument referring to the context document. Called by functions such as id() and key() that take the context document as an implicit argument

Throws:
StaticError

display

public void display(int level,
                    NamePool pool,
                    java.io.PrintStream out)
Diagnostic print of expression structure

Specified by:
display in interface Expression
Overrides:
display in class FunctionCall

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
The main() method of this class is not intended to be called, it merely tells the code inspection tools in IDEA that the constructors of each function class are actual entry points

Throws:
java.lang.Exception