com.saxonica.functions.xpath3
Class TrigonometricFn

java.lang.Object
  extended by net.sf.saxon.lib.ExtensionFunctionDefinition
      extended by com.saxonica.functions.xpath3.TrigonometricFn
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
TrigonometricFn.AcosFn, TrigonometricFn.AsinFn, TrigonometricFn.AtanFn, TrigonometricFn.CosFn, TrigonometricFn.SinFn, TrigonometricFn.SqrtFn, TrigonometricFn.TanFn

public abstract class TrigonometricFn
extends ExtensionFunctionDefinition

Abstract class providing functionality common to functions math:sin(), math:cos(), math:sqrt() etc; contains the concrete implementations of these functions as inner subclasses

See Also:
Serialized Form

Nested Class Summary
static class TrigonometricFn.AcosFn
          Implement math:acos
static class TrigonometricFn.AsinFn
          Implement math:asin
static class TrigonometricFn.AtanFn
          Implement math:atan
static class TrigonometricFn.CosFn
          Implement math:cos
static class TrigonometricFn.SinFn
          Implement math:sin
static class TrigonometricFn.SqrtFn
          Implement math:sqrt
static class TrigonometricFn.TanFn
          Implement math:tan
 
Field Summary
static String NAMESPACE
           
 
Constructor Summary
TrigonometricFn()
           
 
Method Summary
protected abstract  double compute(double input)
          The function that does the work, which must be implemented in subclasses
 SequenceType[] getArgumentTypes()
          Get the required types for the arguments of this function.
 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, getCompilerForJava, getFunctionQName, hasSideEffects
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NAMESPACE

public static String NAMESPACE
Constructor Detail

TrigonometricFn

public TrigonometricFn()
Method Detail

getMinimumNumberOfArguments

public int getMinimumNumberOfArguments()
Get the minimum number of arguments required by the function

The default implementation returns the number of items in the result of calling getArgumentTypes()

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.

The default implementation returns the value of getMinimumNumberOfArguments()

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

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.

getArgumentTypes

public SequenceType[] getArgumentTypes()
Get the required types for the arguments of this function.

This method must be implemented in all subtypes.

Specified by:
getArgumentTypes in class ExtensionFunctionDefinition
Returns:
the required types of the arguments, 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

This method must be implemented in all subtypes.

Specified by:
getResultType in class ExtensionFunctionDefinition
Parameters:
suppliedArgumentTypes - the static types of the supplied 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 types of the arguments.
Returns:
the return type of the function, as defined by its function signature

compute

protected abstract double compute(double input)
The function that does the work, which must be implemented in subclasses

Parameters:
input - the input value
Returns:
the result

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


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