/// <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); }
/// <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); }
/// <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); }
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()); } } }
/// <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; }