예제 #1
0
        /// <summary>
        /// Подгатавливает команду и возвращает её идентификатор.
        /// </summary>
        /// <param name="fucntion_header">Заголовок функции.</param>
        /// <param name="input_data">Входные данные.</param>
        /// <returns>Идентификатор команды.</returns>
        public TemplateFunctionRow NewCommand(FunctionHeader fucntion_header, IEnumerable <TemplateFunctionRow> input_data)
        {
            var row = new TemplateFunctionRow
            {
                Type           = TemplateFunctionRowType.Func,
                Input          = input_data.ToList(),
                Triggered      = new List <TemplateFunctionRow>(),
                FunctionHeader = fucntion_header
            };

            foreach (var input in input_data)
            {
                var result = _rows.FirstOrDefault(x => x == input);
                if (result == null)
                {
                    throw new Exception("NewCommand неверно указан входной параметр.");
                }

                if (!result.Triggered.Contains(row))
                {
                    result.Triggered.Add(row);
                }
            }

            _rows.Add(row);

            return(row);
        }
예제 #2
0
        /// <summary>
        /// Возвращает идентификатор входного параметра.
        /// </summary>
        /// <returns></returns>
        public TemplateFunctionRow InputData()
        {
            var row = new TemplateFunctionRow
            {
                Type      = TemplateFunctionRowType.Input,
                Input     = null,
                Triggered = new List <TemplateFunctionRow>()
            };

            _rows.Add(row);
            return(row);
        }
예제 #3
0
        /// <summary>
        /// Формирует строку шаблона функции с константой.
        /// </summary>
        /// <param name="data">Значение константы.</param>
        /// <returns>Строка шаблона функции.</returns>
        public TemplateFunctionRow Constant(object data)
        {
            var row = new TemplateFunctionRow
            {
                Type      = TemplateFunctionRowType.Const,
                Input     = null,
                Triggered = new List <TemplateFunctionRow>(),
                Value     = data
            };

            _rows.Add(row);
            return(row);
        }
예제 #4
0
 private void AddCondition(TemplateFunctionRow condition, params TemplateFunctionRow[] vals)
 {
     foreach (var inp in vals)
     {
         if (!inp.Conditions.Contains(condition))
         {
             inp.Conditions.Add(condition);
         }
         if (inp.Type == TemplateFunctionRowType.Func)
         {
             AddCondition(condition, inp.Input.ToArray());
         }
     }
 }
예제 #5
0
        /// <summary>
        /// Данные из указанной ячейки становятся возвращаемыми данными.
        /// </summary>
        /// <param name="output_data_id">Идентификатор ячейки данных с выходным параметром.</param>
        public void Return(TemplateFunctionRow output_data_id)
        {
            var result = _rows.FirstOrDefault(x => x == output_data_id);

            if (result == null)
            {
                throw new Exception("public void Return Не удалось получить строку.");
            }

            if (result.Type == TemplateFunctionRowType.Input || result.Type == TemplateFunctionRowType.Const)
            {
                result = NewCommand(BasicFunctionModel.Set, new List <TemplateFunctionRow> {
                    output_data_id
                });
            }

            result.Type     = TemplateFunctionRowType.Output;
            result.IsOutput = true;
        }