Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 public void SpecifyUserFunctions(Dictionary <FunctionSignature, FunctionInfo> userDeclarations)
 {
     _userDeclarations    = userDeclarations;
     _userFunctionsLookup = userDeclarations
                            .ToLookup(x => x.Key.Name, x => x.Key.TypeSignature, x => x.Value);
 }