Пример #1
0
 private async Task OnEvaluateParameterAsync(string name, ParameterArgs args)
 {
     if (EvaluateParameterAsync != null)
     {
         await EvaluateParameterAsync(name, args);
     }
 }
Пример #2
0
 private void OnEvaluateParameter(string name, ParameterArgs args)
 {
     if (EvaluateParameter != null)
     {
         EvaluateParameter(name, args);
     }
 }
Пример #3
0
 private static void Expr_EvaluateParameter(string name, ParameterArgs args)
 {
     args.Result = name.Equals("pi", StringComparison.OrdinalIgnoreCase)
                             ? Math.PI
                             : name.Equals("e", StringComparison.OrdinalIgnoreCase)
                             ? Math.E
                             : args.Result;
 }
Пример #4
0
        public override void Visit(Identifier parameter)
        {
            object parameterValue;

            if (Parameters.ContainsKey(parameter.Name))
            {
                // The parameter is defined in the hashtable
                if (Parameters[parameter.Name] is Expression)
                {
                    // The parameter is itself another Expression
                    var expression = (Expression)Parameters[parameter.Name];

                    // Overloads parameters
                    foreach (var p in Parameters)
                    {
                        expression.Parameters[p.Key] = p.Value;
                    }

                    expression.EvaluateFunction  += EvaluateFunction;
                    expression.EvaluateParameter += EvaluateParameter;

                    parameterValue = ((Expression)Parameters[parameter.Name]).EvaluateRaw();
                }
                else
                {
                    parameterValue = Parameters[parameter.Name];
                }
            }
            else
            {
                // The parameter should be defined in a call back method
                var args = new ParameterArgs();

                // Calls external implementation
                OnEvaluateParameter(parameter.Name, args);

                if (!args.HasResult)
                {
                    throw new ArgumentException("Parameter was not defined", parameter.Name);
                }

                parameterValue = args.Result;
            }

            if (parameterValue is RawIdentifierExpression)
            {
                (parameterValue as RawIdentifierExpression).Accept(this);
            }
            else if (parameterValue is RawExpression)
            {
                (parameterValue as RawExpression).Accept(this);
            }
            else
            {
                //Result.Append("[").Append(parameterValue.ToString()).Append("]");
                Result.Append(parameterValue.ToString());
            }
        }
Пример #5
0
        public override void Visit(IdentifierExpression parameter)
        {
            try
            {
                if (Parameters.ContainsKey(parameter.Name))
                {
                    // The parameter is defined in the hashtable
                    if (Parameters[parameter.Name] is Expression)
                    {
                        // The parameter is itself another Expression
                        var expression = (Expression)Parameters[parameter.Name];

                        // Overloads parameters
                        foreach (var p in Parameters)
                        {
                            expression.Parameters[p.Key] = p.Value;
                        }

                        expression.EvaluateFunction  += EvaluateFunction;
                        expression.EvaluateParameter += EvaluateParameter;

                        Result = ((Expression)Parameters[parameter.Name]).Evaluate();
                    }
                    else
                    {
                        Result = Parameters[parameter.Name];
                    }
                }
                else
                {
                    // The parameter should be defined in a call back method
                    var args = new ParameterArgs();

                    // Calls external implementation
                    OnEvaluateParameter(parameter.Name, args);

                    //if (!args.HasResult)
                    //    throw new ArgumentException("Parameter was not defined", parameter.Name);
                    if (args.HasResult)
                    {
                        Result = args.Result;
                    }
                    else
                    {
                        Result = parameter.Name;
                    }
                }
            }
            catch (Exception ex)
            {
                Result = "Error: " + ex.Message;
            }
            finally
            {
                //saving result
                parameter.objResult = Result;
            }
        }
Пример #6
0
        //public MTSRuleResults EvalAsString(Dictionary<string, object> parameters)
        //{
        //    Dictionary<string, object> validparams = ValidateParams(parameters);
        //    Dictionary<string, string> customfunction = new Dictionary<string, string>();

        //    ruleResult.Clear();
        //    string matchPattern = @"\[(.*?)\]";
        //    MatchCollection mc;

        //    foreach (var rule in this)
        //    {
        //        string reslt = rule.Value;
        //        //Remove Custom functions*******************
        //        foreach (var item in customFunctions)
        //        {
        //            mc = Regex.Matches(reslt, item, RegexOptions.IgnoreCase);
        //            foreach (Match m in mc)
        //            {
        //                string guid = Guid.NewGuid().ToString();
        //                customfunction.Add(guid, m.Groups[0].ToString());
        //                reslt = reslt.Replace(m.Groups[0].ToString(), guid);
        //            }

        //        }

        //        //Replace parametesrr
        //        mc = Regex.Matches(reslt, matchPattern);
        //        foreach (Match m in mc)
        //        {
        //            if (validparams[m.Groups[1].ToString()].ToString().Trim() != string.Empty)
        //            {
        //                reslt = reslt.Replace(string.Concat("[", m.Groups[1].ToString(), "]"), validparams[m.Groups[1].ToString()].ToString());
        //            }

        //        }
        //        //Add Custom functions back ;-)****************************

        //        foreach (var item in customfunction)
        //        {
        //            reslt = reslt.Replace(item.Key, item.Value);
        //        }

        //        Expression e = getExpression(reslt);
        //        e.Parameters = validparams;
        //        try
        //        {
        //            ruleResult.Add(rule.Key, new MTSRuleResult { Result = e.Evaluate(), Expressions = getPassedExpression(e) });
        //        }
        //        catch (Exception ex)
        //        {

        //            ruleResult.Add(rule.Key, new MTSRuleResult { Result = "Error", Expressions = string.Format("Error Rule Failed Expression:{0} Message:{1} ", getPassedExpression(e), ex.Message) });
        //        }
        //    }

        //    return ruleResult;
        //}
        #endregion Evals


        #region PrameterHandler
        public void ParameterHandler(string name, ParameterArgs args)
        {
            if (EvaluateParameter != null)
            {
                MTSParameterArgs mArgs = new MTSParameterArgs();
                EvaluateParameter(name, mArgs);
                args.Result = mArgs.Result;
            }
        }
Пример #7
0
        public override async Task VisitAsync(Identifier parameter)
        {
            if (Parameters.ContainsKey(parameter.Name))
            {
                // The parameter is defined in the hashtable
                if (Parameters[parameter.Name] is Expression expression)
                {
                    // The parameter is itself another Expression

                    // Overloads parameters
                    foreach (var p in Parameters)
                    {
                        expression.Parameters[p.Key] = p.Value;
                    }

                    Result = await expression.EvaluateAsync(_evaluateParameterAsync, _evaluateFunctionAsync, _time, _step, _deltaTime);
                }
                else
                {
                    Result = Parameters[parameter.Name];
                }
            }
            else if (parameter.Name.EndsWith("_Time"))
            {
                Result = _time;
            }
            else if (parameter.Name.EndsWith("_Dt"))
            {
                Result = _deltaTime;
            }
            else
            {
                // The parameter should be defined in a call back method
                var args = new ParameterArgs();

                if (_evaluateParameterAsync != null)
                {
                    var name = IgnoreCase ? parameter.Name.ToLower() : parameter.Name;

                    // Calls external implementations, which  may be a MulticastDelegate which
                    // requires manual handling for async delegates.
                    foreach (var handler in _evaluateParameterAsync.GetInvocationList()
                             .Cast <EvaluateParameterAsyncHandler>())
                    {
                        await handler.Invoke(name, args);
                    }
                }

                if (!args.HasResult)
                {
                    throw new ArgumentException("Parameter was not defined", parameter.Name);
                }

                Result = args.Result;
            }
        }
Пример #8
0
        /// <summary>
        /// extra parameters that requre additional stuff done go here
        /// </summary>
        /// <param name="name"></param>
        /// <param name="args"></param>
        private void NCalcPulsarParameters(string name, ParameterArgs args)
        {
            switch (name)
            {
            case "Mass":
                MakeThisDependant(_designer.MassFormula);
                args.Result = _designer.MassValue;
                break;

            case "Volume":

                MakeThisDependant(_designer.VolumeFormula);
                args.Result = _designer.VolumeFormula;
                break;

            case "Crew":
                MakeThisDependant(_designer.CrewFormula);
                args.Result = _designer.CrewReqValue;
                break;

            case "HTK":
                MakeThisDependant(_designer.HTKFormula);
                args.Result = _designer.HTKValue;
                break;

            case "ResearchCost":
                MakeThisDependant(_designer.ResearchCostFormula);
                args.Result = _designer.ResearchCostValue;
                break;

            case "MineralCosts":
                foreach (var formula in _designer.MineralCostFormulas.Values)
                {
                    MakeThisDependant(formula);
                }

                args.Result = _designer.MineralCostValues;
                break;

            case "CreditCost":
                MakeThisDependant(_designer.CreditCostFormula);
                args.Result = _designer.ResearchCostValue;
                break;

            case "GuidDict":
                Dictionary <Guid, double> dict = new Dictionary <Guid, double>();
                foreach (var kvp in _designAttribute.GuidDictionary)
                {
                    //MakeThisDependant(kvp.Value);
                    dict.Add((Guid.Parse(kvp.Key.ToString())), kvp.Value.DResult);
                }

                args.Result = dict;
                break;
            }
        }
Пример #9
0
        private void _expression_EvaluateParameter(string name, ParameterArgs args)
        {
            args.Result = 0; // este valor é ignorado propositalmente
            _formula    = _formula.Replace(name, $"{name}(x{_functors.Count})");

            var functionRepository = new FunctionRepository();
            var functor            = functionRepository.getFormulaByFunctionName(name);

            this.AddFunction(functor);
        }
Пример #10
0
 static void EvaluateParameter(string p_name, ParameterArgs p_args, IParameterResolver p_resolver, IAttributeDataCollection p_collection, bool p_referenced)
 {
     //Debug.Log("EvaluateParameter: "+p_name);
     p_args.Result = p_resolver.Resolve(p_name, p_collection, p_referenced);
     // Only log first error
     if (!hasErrorInEvaluation && p_resolver.hasErrorInResolving)
     {
         errorMessage = p_resolver.errorMessage;
     }
     hasErrorInEvaluation = hasErrorInEvaluation || p_resolver.hasErrorInResolving;
 }
Пример #11
0
        private void Exp_EvaluateParameter(string name, ParameterArgs args)
        {
            if (name.ToLower() == "pi")
            {
                args.Result = Math.PI;
            }

            if (name.ToLower() == "e")
            {
                args.Result = Math.E;
            }
        }
Пример #12
0
        public override void Visit(Identifier parameter)
        {
            if (Parameters.ContainsKey(parameter.Name))
            {
                // The parameter is defined in the hashtable
                if (Parameters[parameter.Name] is Expression)
                {
                    // The parameter is itself another Expression
                    var expression = (Expression)Parameters[parameter.Name];
                    {
                        // foreach(var p in Parameters)
                        var __enumerator2 = (Parameters).GetEnumerator();
                        while (__enumerator2.MoveNext())
                        {
                            var p = __enumerator2.Current;
                            {
                                expression.Parameters[p.Key] = p.Value;
                            }
                        }
                    }

                    expression.EvaluateFunction  += EvaluateFunction;
                    expression.EvaluateParameter += EvaluateParameter;

                    Result = ((Expression)Parameters[parameter.Name]).Evaluate();
                }
                else
                {
                    Result = Parameters[parameter.Name];
                }
            }
            else
            {
                // The parameter should be defined in a call back method
                var args = new ParameterArgs();

                // Calls external implementation
                OnEvaluateParameter(parameter.Name, args);

                if (!args.HasResult)
                {
                    throw new ArgumentException("Parameter was not defined", parameter.Name);
                }

                if (args.Result == null)
                {
                    throw new ArgumentException("Parameter was null", parameter.Name);
                }

                Result = args.Result;
            }
        }
Пример #13
0
            private static void Expr_EvaluateParameter(string name, ParameterArgs args)
            {
                switch (name.ToLowerInvariant())
                {
                case "pi":
                    args.Result = Math.PI;
                    break;

                case "e":
                    args.Result = Math.E;
                    break;
                }
            }
Пример #14
0
 // Calc Parameters
 public static void Parameters(string name, ParameterArgs parameterArgs)
 {
     // add Pi (Kreiszahl)
     if (name == "Pi")
     {
         parameterArgs.Result = Math.PI;
     }
     // add e (Eulerzahl)
     if (name == "e")
     {
         parameterArgs.Result = Math.E;
     }
 }
Пример #15
0
 /// <summary>
 /// extra parameters that requre additional stuff done go here
 /// </summary>
 /// <param name="name"></param>
 /// <param name="args"></param>
 private void NCalcPulsarParameters(string name, ParameterArgs args)
 {
     if (name == "Mass")
     {
         MakeThisDependant(_design.MassFormula);
         args.Result = _design.MassValue;
     }
     if (name == "Volume")
     {
         MakeThisDependant(_design.VolumeFormula);
         args.Result = _design.VolumeFormula;
     }
     if (name == "Crew")
     {
         MakeThisDependant(_design.CrewFormula);
         args.Result = _design.CrewReqValue;
     }
     if (name == "HTK")
     {
         MakeThisDependant(_design.HTKFormula);
         args.Result = _design.HTKValue;
     }
     if (name == "ResearchCost")
     {
         MakeThisDependant(_design.ResearchCostFormula);
         args.Result = _design.ResearchCostValue;
     }
     if (name == "MineralCosts")
     {
         foreach (var formula in _design.MineralCostFormulas.Values)
         {
             MakeThisDependant(formula);
         }
         args.Result = _design.MineralCostValues;
     }
     if (name == "CreditCost")
     {
         MakeThisDependant(_design.CreditCostFormula);
         args.Result = _design.ResearchCostValue;
     }
     if (name == "GuidDict")
     {
         Dictionary <Guid, double> dict = new Dictionary <Guid, double>();
         foreach (var kvp in _designAbility.GuidDictionary)
         {
             //MakeThisDependant(kvp.Value);
             dict.Add((Guid.Parse(kvp.Key.ToString())), kvp.Value.DResult);
         }
         args.Result = dict;
     }
 }
Пример #16
0
 private void EvaluateParameter(string name, ParameterArgs args)
 {
     try
     {
         if (name.Contains("."))
         {
             var parts = name.Split('.');                     // 2.2 or 2.3.1
             if (parts.Length == 2)
             {
                 args.Result    = PsnParamValueExtractor.GetBitValueFromBytes(_cmdPartContext, _startByte, int.Parse(parts[0]), int.Parse(parts[1])) ? 1.0 : 0.0;
                 args.HasResult = true;
             }
             else if (parts.Length == 3)
             {
                 args.Result    = PsnParamValueExtractor.GetMultibitUnsignedValueFromBytes(_cmdPartContext, _startByte, int.Parse(parts[0]), int.Parse(parts[1]), int.Parse(parts[2]));
                 args.HasResult = true;
             }
             else
             {
                 args.HasResult = false;
             }
         }
         else
         {
             // else we have "u1" or "s19" or "r20" - byte or sbyte value or random beetween 0 and 20;
             if (name.StartsWith("u"))
             {
                 args.Result    = (int)(PsnParamValueExtractor.GetByteValueFromBytes(_cmdPartContext, _startByte, int.Parse(name.Substring(1))));
                 args.HasResult = true;
             }
             else if (name.StartsWith("s"))
             {
                 args.Result    = (int)(PsnParamValueExtractor.GetSByteValueFromBytes(_cmdPartContext, _startByte, int.Parse(name.Substring(1))));
                 args.HasResult = true;
             }
             else if (name.StartsWith("r"))
             {
                 args.Result    = PsnParamValueExtractor.GetRandomIntValue(int.Parse(name.Substring(1)));
                 args.HasResult = true;
             }
             else
             {
                 args.HasResult = false;
             }
         }
     }
     catch {
         args.HasResult = false;
     }
 }
        public override void Visit(Identifier parameter)
        {
            if (Parameters.ContainsKey(parameter.Name))
            {
                // The parameter is defined in the hashtable
                if (Parameters[parameter.Name] is Expression)
                {
                    // The parameter is itself another Expression
                    var expression = (Expression)Parameters[parameter.Name];

                    // Overloads parameters
                    foreach (var p in Parameters)
                    {
                        expression.Parameters[p.Key] = p.Value;
                    }

                    expression.EvaluateFunction  += EvaluateFunction;
                    expression.EvaluateParameter += EvaluateParameter;

                    Result = ((Expression)Parameters[parameter.Name]).Evaluate();
                }
                else
                {
                    Result = Parameters[parameter.Name];
                }
            }
            else
            {
                // The parameter should be defined in a call back method
                var args = new ParameterArgs();

                // Calls external implementation
                OnEvaluateParameter(parameter.Name, args);

                if (args.HasResult)
                {
                    Result = args.Result;
                }
                else if (parameter.Name.Equals("null", StringComparison.InvariantCulture))
                {
                    Result = null;
                }
                else
                {
                    throw new ArgumentException("Parameter was not defined", parameter.Name);
                }
            }
        }
Пример #18
0
 private void CheckParameter(string param, ParameterArgs args)
 {
     if (Sequence.current.ContainsVariable(param))
     {
         args.HasResult = true;
         args.Result    = Sequence.current.GetVariable(param);
     }
     else if (IsoSwitchesManager.getInstance().getIsoSwitches().containsSwitch(param))
     {
         args.HasResult = true;
         args.Result    = IsoSwitchesManager.getInstance().getIsoSwitches().consultSwitch(param);
     }
     else
     {
         args.HasResult = false;
         paramError     = "Missing parameter \"" + param + "\"";
     }
 }
Пример #19
0
        public async override Task VisitAsync(Identifier parameter)
        {
            if (Parameters.ContainsKey(parameter.Name))
            {
                // The parameter is defined in the hashtable
                if (Parameters[parameter.Name] is Expression)
                {
                    // The parameter is itself another Expression
                    var expression = (Expression)Parameters[parameter.Name];

                    // Overloads parameters
                    foreach (var p in Parameters)
                    {
                        expression.Parameters[p.Key] = p.Value;
                    }

                    expression.EvaluateFunctionAsync  += EvaluateFunctionAsync;
                    expression.EvaluateParameterAsync += EvaluateParameterAsync;

                    Result = await((Expression)Parameters[parameter.Name]).EvaluateAsync();
                }
                else
                {
                    Result = Parameters[parameter.Name];
                }
            }
            else
            {
                // The parameter should be defined in a call back method
                var args = new ParameterArgs();

                // Calls external implementation
                await OnEvaluateParameterAsync(parameter.Name, args);

                if (!args.HasResult)
                {
                    throw new ArgumentException("Parameter was not defined", parameter.Name);
                }

                Result = args.Result;
            }
        }
        /// <summary>
        /// Parameter evaluator called off by function EvaluateExpression so as to elimiate the need of trying to cast the expression parameters to a more defined type.
        /// Additionally it adds the possibility that an expression parameter itself can be of complex type.
        /// </summary>
        /// <param name="name">name of the parameter</param>
        /// <param name="args">ParameterArgs object where to store the evaluation result</param>
        private void EvaluateParam(string name, ParameterArgs args)
        {
            if (this._definesHandler.SubstitutionTokens.ContainsKey(name))
            {
                object substituionText;
                this._definesHandler.SubstitutionTokens.TryGetValue(name, out substituionText);
                Expression parameterExpression = new Expression((string)substituionText);
                parameterExpression.EvaluateParameter += EvaluateParam;

                try
                {
                    args.Result = parameterExpression.Evaluate();
                }
                catch (EvaluationException)
                {
                    //in case an exception occurred we do not set args and hence the evaluation will be undefined
                }
            }
            //in case the key is not found we do not set args and hence the evaluation will be undefined
        }
Пример #21
0
 private void CheckParameter(string param, ParameterArgs args)
 {
     if (Database.Instance.attributes.Any(x => x.id == param))
     {
         args.HasResult = true;
         AttributeValue attrValue = attributes.Find(x => x.attribute.id == param);
         if (attrValue != null)
         {
             args.Result = attrValue.value;
         }
         else
         {
             args.Result = 0;
         }
     }
     else
     {
         args.HasResult = false;
         paramError     = "Missing parameter \"" + param + "\"";
     }
 }
Пример #22
0
 private void OnSelected(object sender, ParameterArgs e)
 {
     m_Args = e;
     try
     {
         Parameter para = null;
         for (int iLoop = 0; iLoop < parameterListGrid.Children.Count; iLoop++)
         {
             if (parameterListGrid.Children[iLoop] is Parameter)
             {
                 para = parameterListGrid.Children[iLoop] as Parameter;
                 if (para.IsChecked && para.PumpType != e.m_PumpType)
                 {
                     para.SetCheckedStatus(false);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Пример #23
0
        public override void Visit(Parameter parameter)
        {
            if (parameters.Contains(parameter.Name))
            {
                // The parameter is defined in the hashtable
                if (parameters[parameter.Name] is Expression)
                {
                    // The parameter is itself another Expression
                    Expression expression = (Expression)parameters[parameter.Name];
                    expression.Parameters         = parameters;
                    expression.EvaluateFunction  += EvaluateFunction;
                    expression.EvaluateParameter += EvaluateParameter;

                    result = ((Expression)parameters[parameter.Name]).Evaluate();
                }
                else
                {
                    result = parameters[parameter.Name];
                }
            }
            else
            {
                // The parameter should be defined in a call back method
                ParameterArgs args = new ParameterArgs();

                // Calls external implementation
                OnEvaluateParameter(parameter.Name, args);

                if (args.Result == null)
                {
                    throw new ArgumentException("Parameter was not defined", parameter.Name);
                }

                result = args.Result;
            }
        }
Пример #24
0
        private object GetValue(Identifier parameter)
        {
            var args = new ParameterArgs();

            // Calls external implementation
            OnEvaluateParameter(parameter.Name, args);

            if (!args.HasResult)
                throw new ArgumentException("Parameter was not defined", parameter.Name);

            return args.Result;
        }
Пример #25
0
        public override void Visit(Identifier parameter)
        {
            if (Parameters.ContainsKey(parameter.Name))
            {
                // The parameter is defined in the hashtable
                if (Parameters[parameter.Name] is Expression)
                {
                    // The parameter is itself another Expression
                    var expression = (Expression)Parameters[parameter.Name];

                    // Overloads parameters
                    foreach (var p in Parameters)
                    {
                        expression.Parameters[p.Key] = p.Value;
                    }

                    expression.EvaluateFunction += EvaluateFunction;
                    expression.EvaluateParameter += EvaluateParameter;

                    Result = ((Expression)Parameters[parameter.Name]).Evaluate();
                }
                else
                    Result = Parameters[parameter.Name];
            }
            else
            {
                // The parameter should be defined in a call back method
                var args = new ParameterArgs();

                // Calls external implementation
                OnEvaluateParameter(parameter.Name, args);

                if (!args.HasResult)
                    throw new ArgumentException("Parameter was not defined", parameter.Name);

                Result = args.Result;
            }
        }
Пример #26
0
 private void OnEvaluateParameter(string name, ParameterArgs args)
 {
     if (EvaluateParameter != null)
         EvaluateParameter(name, args);
 }