Ejemplo n.º 1
0
        public virtual api.Function resolveFunction(string localName, int arity)
        {
            api.Function f = (api.Function)_functions[signature(localName, arity)];

            if (f != null || arity == -1)
            {
                return(f);
            }

            // see if we got a varg one
            f = (api.Function)_functions[signature(localName, -1)];

            // nope
            if (f == null)
            {
                return(null);
            }

            if (f.canMatchArity(arity))
            {
                return(f);
            }

            return(null);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Obtain the function name and arity from signature.
 /// </summary>
 /// <param name="f">
 ///            current function. </param>
 /// <returns> Signature. </returns>
 private static string signature(api.Function f)
 {
     return(signature(f.Name, f.VariableArgument ? -1 : f.MinArity));
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Add a function.
 /// </summary>
 /// <param name="x">
 ///            function to add. </param>
 public virtual void addFunction(api.Function x)
 {
     _functions[signature(x)] = x;
 }