Package net.sf.saxon.trans

## Class DecimalSymbols

- java.lang.Object
- - net.sf.saxon.trans.DecimalSymbols

-     public class DecimalSymbols
      extends java.lang.Object

  This class is modelled on Java's DecimalFormatSymbols, but it allows the use of any Unicode character to represent symbols such as the decimal point and the grouping separator, whereas DecimalFormatSymbols restricts these to a char (1-65535).

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static int` | `DECIMAL_SEPARATOR` |
    `static int` | `DIGIT` |
    `static int` | `EXPONENT_SEPARATOR` |
    `static int` | `GROUPING_SEPARATOR` |
    `static int` | `INFINITY` |
    `static int` | `MINUS_SIGN` |
    `static int` | `NAN` |
    `static int` | `PATTERN_SEPARATOR` |
    `static int` | `PER_MILLE` |
    `static int` | `PERCENT` |
    `static java.lang.String[]` | `propertyNames` |
    `static int` | `ZERO_DIGIT` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DecimalSymbols​(HostLanguage language, int languageLevel)` | Create a DecimalSymbols object with default values for all properties

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `checkConsistency​(StructuredQName name)` | Check that no character is used in more than one role
    `boolean` | `equals​(java.lang.Object obj)` | Test if two sets of decimal format symbols are the same
    `void` | `export​(StructuredQName name, ExpressionPresenter out)` |
    `int` | `getDecimalSeparator()` | Get the decimal separator value
    `int` | `getDigit()` | Get the digit symbol value
    `int` | `getExponentSeparator()` | Get the exponent separator symbol
    `int` | `getGroupingSeparator()` | Get the grouping separator value
    `java.lang.String` | `getInfinity()` | Get the infinity symbol value
    `int` | `getMinusSign()` | Get the minus sign value
    `java.lang.String` | `getNaN()` | Get the NaN symbol value
    `int` | `getPatternSeparator()` | Get the pattern separator value
    `int` | `getPercent()` | Get the percent symbol value
    `int` | `getPerMille()` | Get the per-mille symbol value
    `int` | `getZeroDigit()` | Get the zero digit symbol value
    `int` | `hashCode()` |
    `static boolean` | `isValidZeroDigit​(int zeroDigit)` | Check that the character declared as a zero-digit is indeed a valid zero-digit
    `void` | `setDecimalSeparator​(java.lang.String value)` | Set the character to be used as the decimal separator
    `void` | `setDigit​(java.lang.String value)` | Set the character to be used as the digit symbol (default is '#')
    `void` | `setExponentSeparator​(java.lang.String value)` | Set the character to be used as the exponent separator
    `void` | `setGroupingSeparator​(java.lang.String value)` | Set the character to be used as the grouping separator
    `void` | `setHostLanguage​(HostLanguage language, int languageLevel)` |
    `void` | `setInfinity​(java.lang.String value)` | Set the string to be used to represent infinity
    `void` | `setIntProperty​(java.lang.String name, int value)` | Set one of the single-character properties.
    `void` | `setMinusSign​(java.lang.String value)` | Set the character to be used as the minus sign
    `void` | `setNaN​(java.lang.String value)` | Set the string to be used to represent NaN
    `void` | `setPatternSeparator​(java.lang.String value)` | Set the character to be used as the pattern separator (default ';')
    `void` | `setPercent​(java.lang.String value)` | Set the character to be used as the percent sign
    `void` | `setPerMille​(java.lang.String value)` | Set the character to be used as the per-mille sign
    `void` | `setProperty​(int key, java.lang.String value, int precedence)` | Set the value of a property
    `void` | `setZeroDigit​(java.lang.String value)` | Set the character to be used as the zero digit (which determines the digit family used in the output)

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### DECIMAL_SEPARATOR

          public static final int DECIMAL_SEPARATOR

      See Also:
        Constant Field Values

    - #### GROUPING_SEPARATOR

          public static final int GROUPING_SEPARATOR

      See Also:
        Constant Field Values

    - #### DIGIT

          public static final int DIGIT

      See Also:
        Constant Field Values

    - #### MINUS_SIGN

          public static final int MINUS_SIGN

      See Also:
        Constant Field Values

    - #### PERCENT

          public static final int PERCENT

      See Also:
        Constant Field Values

    - #### PER_MILLE

          public static final int PER_MILLE

      See Also:
        Constant Field Values

    - #### ZERO_DIGIT

          public static final int ZERO_DIGIT

      See Also:
        Constant Field Values

    - #### EXPONENT_SEPARATOR

          public static final int EXPONENT_SEPARATOR

      See Also:
        Constant Field Values

    - #### PATTERN_SEPARATOR

          public static final int PATTERN_SEPARATOR

      See Also:
        Constant Field Values

    - #### INFINITY

          public static final int INFINITY

      See Also:
        Constant Field Values

    - #### NAN

          public static final int NAN

      See Also:
        Constant Field Values

    - #### propertyNames

          public static final java.lang.String[] propertyNames

  - ### Constructor Detail

    - #### DecimalSymbols

          public DecimalSymbols​(HostLanguage language,
                                int languageLevel)

      Create a DecimalSymbols object with default values for all properties

  - ### Method Detail

    - #### setHostLanguage

          public void setHostLanguage​(HostLanguage language,
                                      int languageLevel)

    - #### getDecimalSeparator

          public int getDecimalSeparator()

      Get the decimal separator value
      Returns:
        the decimal separator value that has been explicitly set, or its default ('.')

    - #### getGroupingSeparator

          public int getGroupingSeparator()

      Get the grouping separator value
      Returns:
        the grouping separator value that has been explicitly set, or its default (',')

    - #### getDigit

          public int getDigit()

      Get the digit symbol value
      Returns:
        the digit symbol value that has been explicitly set, or its default ('#')

    - #### getMinusSign

          public int getMinusSign()

      Get the minus sign value
      Returns:
        the minus sign value that has been explicitly set, or its default ('-')

    - #### getPercent

          public int getPercent()

      Get the percent symbol value
      Returns:
        the percent symbol value that has been explicitly set, or its default ('%')

    - #### getPerMille

          public int getPerMille()

      Get the per-mille symbol value
      Returns:
        the per-mille symbol value that has been explicitly set, or its default

    - #### getZeroDigit

          public int getZeroDigit()

      Get the zero digit symbol value
      Returns:
        the zero digit symbol value that has been explicitly set, or its default ('0')

    - #### getExponentSeparator

          public int getExponentSeparator()

      Get the exponent separator symbol
      Returns:
        the exponent separator character that has been explicitly set, or its default ('e');

    - #### getPatternSeparator

          public int getPatternSeparator()

      Get the pattern separator value
      Returns:
        the pattern separator value that has been explicitly set, or its default (';')

    - #### getInfinity

          public java.lang.String getInfinity()

      Get the infinity symbol value
      Returns:
        the infinity symbol value that has been explicitly set, or its default ('Infinity')

    - #### getNaN

          public java.lang.String getNaN()

      Get the NaN symbol value
      Returns:
        the NaN symbol value that has been explicitly set, or its default ('NaN')

    - #### setDecimalSeparator

          public void setDecimalSeparator​(java.lang.String value)
                                   throws XPathException

      Set the character to be used as the decimal separator
      Parameters:
        `value` - the character to be used
      Throws:
        `XPathException` - if the value is not a single Unicode character (a surrogate pair is permitted)

    - #### setGroupingSeparator

          public void setGroupingSeparator​(java.lang.String value)
                                    throws XPathException

      Set the character to be used as the grouping separator
      Parameters:
        `value` - the character to be used
      Throws:
        `XPathException` - if the value is not a single Unicode character (a surrogate pair is permitted)

    - #### setDigit

          public void setDigit​(java.lang.String value)
                        throws XPathException

      Set the character to be used as the digit symbol (default is '#')
      Parameters:
        `value` - the character to be used
      Throws:
        `XPathException` - if the value is not a single Unicode character (a surrogate pair is permitted)

    - #### setMinusSign

          public void setMinusSign​(java.lang.String value)
                            throws XPathException

      Set the character to be used as the minus sign
      Parameters:
        `value` - the character to be used
      Throws:
        `XPathException` - if the value is not a single Unicode character (a surrogate pair is permitted)

    - #### setPercent

          public void setPercent​(java.lang.String value)
                          throws XPathException

      Set the character to be used as the percent sign
      Parameters:
        `value` - the character to be used
      Throws:
        `XPathException` - if the value is not a single Unicode character (a surrogate pair is permitted)

    - #### setPerMille

          public void setPerMille​(java.lang.String value)
                           throws XPathException

      Set the character to be used as the per-mille sign
      Parameters:
        `value` - the character to be used
      Throws:
        `XPathException` - if the value is not a single Unicode character (a surrogate pair is permitted)

    - #### setZeroDigit

          public void setZeroDigit​(java.lang.String value)
                            throws XPathException

      Set the character to be used as the zero digit (which determines the digit family used in the output)
      Parameters:
        `value` - the character to be used
      Throws:
        `XPathException` - if the value is not a single Unicode character (a surrogate pair is permitted), or if it is not a character classified in Unicode as a digit with numeric value zero

    - #### setExponentSeparator

          public void setExponentSeparator​(java.lang.String value)
                                    throws XPathException

      Set the character to be used as the exponent separator
      Parameters:
        `value` - the character to be used
      Throws:
        `XPathException` - if the value is not a single Unicode character (a surrogate pair is permitted)

    - #### setPatternSeparator

          public void setPatternSeparator​(java.lang.String value)
                                   throws XPathException

      Set the character to be used as the pattern separator (default ';')
      Parameters:
        `value` - the character to be used
      Throws:
        `XPathException` - if the value is not a single Unicode character (a surrogate pair is permitted)

    - #### setInfinity

          public void setInfinity​(java.lang.String value)
                           throws XPathException

      Set the string to be used to represent infinity
      Parameters:
        `value` - the string to be used
      Throws:
        `XPathException` - - should not happen

    - #### setNaN

          public void setNaN​(java.lang.String value)
                      throws XPathException

      Set the string to be used to represent NaN
      Parameters:
        `value` - the string to be used
      Throws:
        `XPathException` - - should not happen

    - #### setProperty

          public void setProperty​(int key,
                                  java.lang.String value,
                                  int precedence)
                           throws XPathException

      Set the value of a property
      Parameters:
        `key` - the integer key of the property to be set
        `value` - the value of the property as a string (in many cases, this must be a single character)
        `precedence` - the precedence of the property value
      Throws:
        `XPathException` - if the property is invalid. This method does not check the consistency of different properties. If two different values are supplied for the same property at the same precedence, the method does not complain, but notes the fact, and if the inconsistency is not subsequently cleared by supplying another value at a higher precedence, the error is reported when the checkConsistency() method is subsequently called.

    - #### setIntProperty

          public void setIntProperty​(java.lang.String name,
                                     int value)

      Set one of the single-character properties. Used when reloading an exported package
      Parameters:
        `name` - the name of the property
        `value` - the Unicode codepoint of the property value

    - #### export

          public void export​(StructuredQName name,
                             ExpressionPresenter out)

    - #### checkConsistency

          public void checkConsistency​(StructuredQName name)
                                throws XPathException

      Check that no character is used in more than one role
      Parameters:
        `name` - the name of the decimal format (null for the unnamed decimal format)
      Throws:
        `XPathException` - if the same character is used in conflicting rules, for example as decimal separator and also as grouping separator

    - #### isValidZeroDigit

          public static boolean isValidZeroDigit​(int zeroDigit)

      Check that the character declared as a zero-digit is indeed a valid zero-digit
      Parameters:
        `zeroDigit` - the value to be checked
      Returns:
        false if it is not a valid zero-digit

    - #### equals

          public boolean equals​(java.lang.Object obj)

      Test if two sets of decimal format symbols are the same
      Overrides:
        `equals` in class `java.lang.Object`
      Parameters:
        `obj` - the other set of symbols
      Returns:
        true if the same characters/strings are assigned to each role in both sets of symbols. The precedences are not compared.

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`