1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.core.metapath.function;
7   
8   import gov.nist.secauto.metaschema.core.metapath.StaticMetapathException;
9   import gov.nist.secauto.metaschema.core.qname.IEnhancedQName;
10  
11  import edu.umd.cs.findbugs.annotations.NonNull;
12  
13  @FunctionalInterface
14  public interface IFunctionResolver {
15    /**
16     * Retrieve the function with the provided name that supports the signature of
17     * the provided methods, if such a function exists.
18     *
19     * @param name
20     *          the name of a group of functions
21     * @param arity
22     *          the count of arguments for use in determining an argument signature
23     *          match
24     * @return the matching function or {@code null} if no match exists
25     * @throws StaticMetapathException
26     *           with the code {@link StaticMetapathException#NO_FUNCTION_MATCH} if
27     *           a matching function was not found
28     */
29    @NonNull
30    IFunction getFunction(@NonNull IEnhancedQName name, int arity);
31  }