# Interface FunctionRegister

public interface FunctionRegister
A factory of `org​.opengis​.filter` functions identified by their names. Each factory can provide an arbitrary number of functions, enumerated by `getNames()`. The `DefaultFilterFactory​.function(String, Expression...)` method delegates to this interface for creating the function implementation for a given name.

Warning: there is currently no mechanism for avoiding name collision. It is implementer responsibility to keep trace of the whole universe of functions and avoid collision. Checks against name collisions may be added in a future version.

Since:
  1.5

- ## Method Summary

  Modifier and Type
  Method
  Description
  `<R> Expression<R,?>`
  `create(String name, Expression<R,?>[] parameters)`
  Creates a new function of the given name with given parameters.
  `String`
  `getAuthority()`
  Returns the name of the standard or authority defining the functions.
  `Collection<String>`
  `getNames()`
  Returns the names of all functions that this factory can create.

- ## Method Details

  - ### getAuthority

    String getAuthority()
    Returns the name of the standard or authority defining the functions.
    Returns:
      provider of function definitions.

  - ### getNames

    Collection<String> getNames()
    Returns the names of all functions that this factory can create. It is currently implementer responsibility to ensure that there are no name collisions with functions provided by other factories (this problem may be improved in future SIS release).
    Returns:
      set of supported function names.

  - ### create

    <R> Expression<R,?> create(String name, Expression<R,?>[] parameters) throws IllegalArgumentException
    Creates a new function of the given name with given parameters.
    Type Parameters:
      `R` - the type of resources (e.g. `Feature`) used as inputs.
    Parameters:
      `name` - name of the function to create (not null).
      `parameters` - function parameters.
    Returns:
      function for the given name and parameters.
    Throws:
      `IllegalArgumentException` - if function name is unknown or some parameters are illegal.