DataDictionary.Interpreter.Call.AssignParameterValues C# (CSharp) Метод

AssignParameterValues() публичный Метод

Creates the parameter value associationg according to actual parameters
public AssignParameterValues ( DataDictionary.Interpreter.InterpretationContext context, ICallable callable, bool log, ExplanationPart explain ) : IValue>.Dictionary
context DataDictionary.Interpreter.InterpretationContext The interpretation context
callable ICallable The callable
log bool Indicates whether errors should be logged
explain ExplanationPart
Результат IValue>.Dictionary
        public Dictionary<Actual, IValue> AssignParameterValues(InterpretationContext context, ICallable callable,
            bool log, ExplanationPart explain)
        {
            // Compute the unnamed actual parameter values
            Dictionary<Actual, IValue> retVal = new Dictionary<Actual, IValue>();

            if (callable.FormalParameters.Count == NamedActualParameters.Count + ActualParameters.Count)
            {
                int i = 0;
                foreach (Expression expression in ActualParameters)
                {
                    Parameter parameter = (Parameter) callable.FormalParameters[i];
                    ExplanationPart subExplanation = ExplanationPart.CreateSubExplanation(explain, parameter);
                    IValue val = expression.GetValue(context, subExplanation);
                    if (val != null)
                    {
                        Actual actual = parameter.CreateActual();
                        val = val.RightSide(actual, false, false);
                        retVal.Add(actual, val);
                    }
                    else
                    {
                        AddError("Cannot evaluate value for parameter " + i + " (" + expression +
                                 ") of function " + callable.Name, RuleChecksEnum.ExecutionFailed);
                        throw new Exception ("Evaluation of parameters failed: Cannot evaluate value for parameter " + i +
                                             " (" + expression + ") of function " + callable.Name);
                    }
                    ExplanationPart.SetNamable(subExplanation, val);

                    i = i + 1;
                }

                foreach (KeyValuePair<Designator, Expression> pair in NamedActualParameters)
                {
                    Parameter parameter = callable.GetFormalParameter(pair.Key.Image);
                    ExplanationPart subExplanation = ExplanationPart.CreateSubExplanation(explain, parameter);
                    IValue val = pair.Value.GetValue(context, subExplanation);
                    if (val != null)
                    {
                        Actual actual = parameter.CreateActual();
                        val = val.RightSide(actual, false, false);
                        actual.Value = val;
                        retVal.Add(actual, val);
                    }
                    else
                    {
                        AddError("Cannot evaluate value for parameter " + pair.Key + " of function " + callable.Name, RuleChecksEnum.ExecutionFailed);
                        throw new Exception("Evaluation of parameters failed: cannot evaluate value for parameter " + pair.Key + " of function " + callable.Name);
                    }
                    ExplanationPart.SetNamable(subExplanation, val);
                }
            }

            return retVal;
        }