public CalculationProps(string name, string description, CalcParam[] args, CalcParam result, CalcHandler calcHandler)
 {
     Name        = name;
     Description = description;
     Args        = args;
     Result      = result;
     Handler     = calcHandler;
 }
Beispiel #2
0
        public ExprVar(LexExpr lex, CalcParam calc) : base(lex, calc)
        {
            IsUse = lex.Type == "varuse";
            CalcParam cp = calc;

            while (!cp.Vars.ContainsKey(lex.Code))
            {
                cp = cp.Owner;
            }
            Code = lex.Code;
        }
Beispiel #3
0
 //Запись скомпилированных выражений в таблицу
 private void SaveCompile(RecDao rec, bool isSubParam)
 {
     try
     {
         while (!rec.EOF)
         {
             CalcParam calc = !isSubParam ?
                              CalcParamsId[rec.GetInt("CalcParamId")] :
                              CalcParamsId[rec.GetInt("OwnerId")].MethodsId[rec.GetInt("CalcParamId")];
             if (calc != null)
             {
                 calc.SaveCompile(rec);
             }
             rec.MoveNext();
         }
     }
     catch (Exception ex)
     {
         AddError("Ошибка сохранения параметров", ex);
     }
 }
Beispiel #4
0
        //owner - владелец, caller - вызывающий
        public ParamArchive(CalcParam param, ParamArchive owner = null, ParamArchive caller = null, bool alreadyConcidered = false)
        {
            LastParam = param;
            if (owner == null && caller == null)
            {
                FirstParam = param;
                FullCode   = param.FullCode;
            }
            else
            {
                if (caller != null)
                {
                    FirstParam = caller.FirstParam;
                    FullCode   = caller.FullCode;
                }
                else
                {
                    FirstParam = owner.FirstParam;
                    FullCode   = owner.FullCode + "." + param.Code;
                }
            }
            bool ac = false;
            var  ct = param.CalcType;

            if (!alreadyConcidered && ct.ClassType == ClassType.Single && !param.SuperProcess.IsNone())
            {
                ac = true;
                var tab = param.Tablik;
                if (!tab.ArchiveParams.ContainsKey(FullCode))
                {
                    tab.ArchiveParams.Add(FullCode, this);
                    tab.ArchiveParamsCount++;
                    if (tab.ArchiveParams.Count == 1)
                    {
                        tab.UsedProviders.Add("Archive");
                    }
                    if (param.SuperProcess == SuperProcess.Moment)
                    {
                        tab.IsMoments = true;
                    }
                    if (param.SuperProcess.IsPeriodic())
                    {
                        tab.IsPeriodic = true;
                    }
                    if (param.SuperProcess.IsAbsolute())
                    {
                        tab.IsAbsolute = true;
                    }
                }
            }
            //Параметры с владельцем значения
            var cp = ct.ParentParam;

            if (cp != null && cp.Inputs.Count > 0 && cp.CalcOn && cp.ErrMess == "" && cp != param)
            {
                new ParamArchive(cp, null, this, ac);
            }
            //Методы
            foreach (var met in param.Methods.Values)
            {
                if (met.CalcOn && met.ErrMess == "" && met.Inputs.Count == 0)
                {
                    new ParamArchive(met, this);
                }
            }
        }
Beispiel #5
0
 public ExprCalc(LexExpr lex, CalcParam calc) : base(lex, calc)
 {
     IsMet = Lex.Type == "met";
 }
Beispiel #6
0
 public ExprLexeme(Lexeme lexeme, CalcParam calcParam, bool isPrev = false)
 {
     ExprType  = isPrev ? ExprType.Prev : ExprType.Calc;
     Lexeme    = lexeme;
     CalcParam = calcParam;
 }