public void SpecifyOperationBindings(List <OperationBinding> opBindings) { List <FunctionOpBinding> functions = new List <FunctionOpBinding>(); List <OperatorOpBinding> operators = new List <OperatorOpBinding>(); List <ConversionOpBinding> conversions = new List <ConversionOpBinding>(); foreach (OperationBinding binding in opBindings) { switch (binding) { case FunctionOpBinding function: functions.Add(function); break; case OperatorOpBinding op: operators.Add(op); break; case ConversionOpBinding conversion: conversions.Add(conversion); break; } } CheckForDuplicates(functions, x => x.Signature); CheckForDuplicates(operators, x => x.Signature); CheckForDuplicates(conversions, x => x.Signature); _functionBindingLookup = functions .ToLookup(x => x.Signature.Name, x => x.Signature.TypeSignature, x => x.Builder); _operatorBindingLookup = operators .ToLookup(x => x.Signature.Name, x => x.Signature.TypeSignature, x => x.Builder); _conversionBindingLookup = conversions .ToDictionary(x => x.Signature, x => x.Builder); }
private void SpecifyLibraries(List <Library> libraries) { CheckForDuplicates(libraries.SelectMany(x => x.Functions), x => x.Key); CheckForDuplicates(libraries.SelectMany(x => x.Operators), x => x.Key); CheckForDuplicates(libraries.SelectMany(x => x.Conversions), x => x.Key); _builtinFunctionsLookup = libraries .SelectMany(x => x.Functions.Values) .ToLookup(x => x.Name, x => x.Signature.TypeSignature); _builtInOperatorLookup = libraries .SelectMany(x => x.Operators) .ToLookup(x => x.Key.Name, x => x.Key.TypeSignature, x => x.Value); _builtinConversionLookup = libraries .SelectMany(x => x.Conversions) .ToDictionary(x => x.Key, x => x.Value); }
public void SpecifyUserFunctions(Dictionary <FunctionSignature, FunctionInfo> userDeclarations) { _userDeclarations = userDeclarations; _userFunctionsLookup = userDeclarations .ToLookup(x => x.Key.Name, x => x.Key.TypeSignature, x => x.Value); }