## net.sf.saxon.functions
Class ItemAt

    java.lang.Object
      net.sf.saxon.lib.ExtensionFunctionDefinition
          net.sf.saxon.functions.ItemAt

All Implemented Interfaces:
  Serializable

    public class ItemAt

extends ExtensionFunctionDefinition

Implements the saxon:item-at() function. This is handled specially because it is generated by the optimizer.

The function takes two arguments: the first is an arbitrary sequence, the second is optional numeric. The function returns the same result as let $N := NUMBER return SEQUENCE[$N], including cases where the numeric argument is not a whole number.

See Also:
  Serialized Form

Constructor Summary
`ItemAt()`

Method Summary
`SequenceType[]` `getArgumentTypes()` Get the required types for the arguments of this function, counting from zero
`Object` `getCompilerForJava()` Return an object capable of compiling this IntegratedFunction call to Java source code.
`StructuredQName` `getFunctionQName()` Get the function name, as a QName
`int` `getMaximumNumberOfArguments()` Get the maximum number of arguments allowed by the function
`int` `getMinimumNumberOfArguments()` Get the minimum number of arguments required by the function
`SequenceType` `getResultType(SequenceType[] suppliedArgumentTypes)` Get the type of the result of the function
`ExtensionFunctionCall` `makeCallExpression()` Create a call on this function.
`boolean` `trustResultType()` Ask whether the result actually returned by the function can be trusted, or whether it should be checked against the declared type.

Methods inherited from class net.sf.saxon.lib.ExtensionFunctionDefinition
`dependsOnFocus, hasSideEffects`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ItemAt

    public ItemAt()

Method Detail

### getFunctionQName

    public StructuredQName getFunctionQName()

  Get the function name, as a QName

  Specified by:
    `getFunctionQName` in class `ExtensionFunctionDefinition`
  Returns:
    the QName of the function

### getMinimumNumberOfArguments

    public int getMinimumNumberOfArguments()

  Get the minimum number of arguments required by the function

  Overrides:
    `getMinimumNumberOfArguments` in class `ExtensionFunctionDefinition`
  Returns:
    the minimum number of arguments that must be supplied in a call to this function

### getMaximumNumberOfArguments

    public int getMaximumNumberOfArguments()

  Get the maximum number of arguments allowed by the function

  Overrides:
    `getMaximumNumberOfArguments` in class `ExtensionFunctionDefinition`
  Returns:
    the maximum number of arguments that may be supplied in a call to this function

### getArgumentTypes

    public SequenceType[] getArgumentTypes()

  Get the required types for the arguments of this function, counting from zero

  Specified by:
    `getArgumentTypes` in class `ExtensionFunctionDefinition`
  Returns:
    the required types of the argument, as defined by the function signature. Normally this should be an array of size `getMaximumNumberOfArguments()`; however for functions that allow a variable number of arguments, the array can be smaller than this, with the last entry in the array providing the required type for all the remaining arguments.

### getResultType

    public SequenceType getResultType(SequenceType[] suppliedArgumentTypes)

  Get the type of the result of the function

  Specified by:
    `getResultType` in class `ExtensionFunctionDefinition`
  Parameters:
    `suppliedArgumentTypes` - the static types of the arguments to the function. This is provided so that a more precise result type can be returned in the common case where the type of the result depends on the type of the first argument. The value will be null if the function call has no arguments.
  Returns:
    the return type of the function, as defined by its function signature

### trustResultType

    public boolean trustResultType()

  Ask whether the result actually returned by the function can be trusted, or whether it should be checked against the declared type.

  Overrides:
    `trustResultType` in class `ExtensionFunctionDefinition`
  Returns:
    true if the function implementation warrants that the value it returns will be an instance of the declared result type. The default value is false, in which case the result will be checked at run-time to ensure that it conforms to the declared type. If the value true is returned, but the function returns a value of the wrong type, the consequences are unpredictable.

### makeCallExpression

    public ExtensionFunctionCall makeCallExpression()

  Create a call on this function. This method is called by the compiler when it identifies a function call that calls this function.

  Specified by:
    `makeCallExpression` in class `ExtensionFunctionDefinition`

### getCompilerForJava

    public Object getCompilerForJava()

  Return an object capable of compiling this IntegratedFunction call to Java source code. The returned object may be null, in which case Java code generation is not supported for this IntegratedFunction. If the returned object is not null, it must implement the interface com.saxonica.codegen.IntegratedFunctionCompiler. The default implementation returns null

  Overrides:
    `getCompilerForJava` in class `ExtensionFunctionDefinition`
  Returns:
    an instance of com.saxonica.codegen.IntegratedFunctionCompiler that generates Java code to implement the call on this extension function

Copyright (c) 2004-2010 Saxonica Limited. All rights reserved.