com.icl.saxon.functions

Class FormatNumber


public class FormatNumber
extends Function

Field Summary

Fields inherited from class com.icl.saxon.expr.Function

argument

Fields inherited from class com.icl.saxon.expr.Expression

staticContext

Method Summary

Value
evaluate(Context c)
Evaluate in a general context
String
evaluateAsString(Context context)
Evaluate in a context where a string is wanted
String
formatNumber(double n, String format, DecimalFormatSymbols dfs)
Here is the method that does the work.
int
getDataType()
Determine the data type of the exprEssion
int
getDependencies()
Determine the dependencies
String
getName()
Expression
reduce(int dep, Context c)
Reduce the dependencies
Expression
simplify()
Simplify and validate

Methods inherited from class com.icl.saxon.expr.Function

addArgument, checkArgumentCount, display, getName, getNumberOfArguments

Methods inherited from class com.icl.saxon.expr.Expression

containsReferences, display, enumerate, evaluate, evaluateAsBoolean, evaluateAsNodeSet, evaluateAsNumber, evaluateAsString, getDataType, getDependencies, getStaticContext, indent, isContextDocumentNodeSet, make, outputStringValue, reduce, setStaticContext, simplify, usesCurrent

Method Details

evaluate

public Value evaluate(Context c)
            throws XPathException
Evaluate in a general context
Overrides:
evaluate in interface Expression

evaluateAsString

public String evaluateAsString(Context context)
            throws XPathException
Evaluate in a context where a string is wanted
Overrides:
evaluateAsString in interface Expression

formatNumber

public String formatNumber(double n,
                           String format,
                           DecimalFormatSymbols dfs)
            throws XPathException
Here is the method that does the work. It needs to be synchronized because it remembers information from one invocation to the next; it doesn't matter if these are in different threads but it can't be interrupted. The reason for remembering information is that getting a new DecimalFormatSymbols each time is incredibly expensive, especially with the Microsoft Java VM. Actually the synchronization is unnecessary if there is a bound Controller.

getDataType

public int getDataType()
Determine the data type of the exprEssion
Overrides:
getDataType in interface Expression
Returns:
Value.STRING

getDependencies

public int getDependencies()
Determine the dependencies
Overrides:
getDependencies in interface Expression

getName

public String getName()
Overrides:
getName in interface Function

reduce

public Expression reduce(int dep,
                         Context c)
            throws XPathException
Reduce the dependencies
Overrides:
reduce in interface Expression

simplify

public Expression simplify()
            throws XPathException
Simplify and validate
Overrides:
simplify in interface Expression