DataDictionary.Interpreter.Call.AddActualParameter C# (CSharp) Method

AddActualParameter() public method

Adds an expression as a parameter
public AddActualParameter ( Designator designator, Expression expression ) : void
designator Designator the name of the actual parameter
expression Expression the actual parameter value
return void
        public void AddActualParameter(Designator designator, Expression expression)
        {
            if (designator == null)
            {
                ActualParameters.Add(expression);
            }
            else
            {
                bool found = false;
                foreach (KeyValuePair<Designator, Expression> pair in NamedActualParameters)
                {
                    if (pair.Key.Image == designator.Image)
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    NamedActualParameters[designator] = expression;
                }
                else
                {
                    AddError("Actual parameter " + designator.Image + " is bound twice", RuleChecksEnum.ExecutionFailed);
                }
            }

            expression.Enclosing = this;
        }

Usage Example

        /// <summary>
        ///     Evaluates a function call, when the left part (function identification) has been parsed
        /// </summary>
        /// <param name="left">The left part of the function call expression</param>
        /// <returns></returns>
        private Expression EvaluateFunctionCallExpression(Expression left)
        {
            Call retVal = null;

            SkipWhiteSpaces();
            if (LookAhead("("))
            {
                retVal = new Call(Root, RootLog, left, left.Start, -1);
                Match("(");
                bool cont = true;
                while (cont)
                {
                    SkipWhiteSpaces();
                    if (LookAhead(")"))
                    {
                        Match(")");
                        cont = false;
                    }
                    else
                    {
                        // Handle named parameters
                        int current2 = Index;
                        string id = Identifier();
                        Designator parameter = null;
                        if (id != null)
                        {
                            string assignOp = LookAhead(AssignOps);
                            if (assignOp != null)
                            {
                                Match(assignOp);
                                parameter = new Designator(Root, RootLog, id, current2, current2 + id.Length);
                            }
                            else
                            {
                                Index = current2;
                            }
                        }

                        Expression arg = Expression(0);
                        if (arg != null)
                        {
                            retVal.AddActualParameter(parameter, arg);
                            if (LookAhead(","))
                            {
                                Match(",");
                            }
                            else if (LookAhead(")"))
                            {
                                Match(")");
                                cont = false;
                            }
                        }
                        else
                        {
                            throw new ParseErrorException("Syntax error", Index, Buffer);
                        }
                    }
                }
                retVal.End = Index;
            }

            return retVal;
        }
All Usage Examples Of DataDictionary.Interpreter.Call::AddActualParameter