com.saxonica.functions.extfn

## Class DeepEqual

- java.lang.Object
- - net.sf.saxon.lib.ExtensionFunctionDefinition
  - - com.saxonica.functions.extfn.DeepEqual

- All Implemented Interfaces:
    Serializable

      public class DeepEqual
      extends ExtensionFunctionDefinition

  Implements the saxon:deep-equal() function, a variant of fn:deep-equal that provides additional control over how the comparison is performed.

  The specification is as follows:

  arg1 The first sequence to be compared

  arg2 The second sequence to be compared

  collation The collation to be used (null if the default collation is to be used)

  flags A string whose characters select options that cause the comparison to vary from the standard fn:deep-equals() function. The flags are:

  - N - take namespace nodes into account
  - J - join adjacent text nodes (e.g, nodes either side of a comment)
  - A - compare type annotations
  - C - take comments into account
  - F - take namespace prefixes into account
  - I - take the is-id() and is-idref() properties into account
  - P - take processing instructions into account
  - S - compare string values, not typed values
  - w - don't take whitespace-only text nodes into account

  returns true if the sequences are deep equal, otherwise false

  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DeepEqual()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `SequenceType[]` | `getArgumentTypes()` Get the required types for the arguments of this function, counting from zero
    `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.

    - ### Methods inherited from class net.sf.saxon.lib.ExtensionFunctionDefinition

      `dependsOnFocus, hasSideEffects, trustResultType`

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

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

- - ### Constructor Detail

    - #### DeepEqual

          public DeepEqual()

  - ### 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

    - #### 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`
      Returns:
        an expression representing a call of this extension function

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