public void GetTagVariables(out TagVarList toList) { TagVarList tmp = new TagVarList(); tmp.CopyFrom(variables); toList = tmp; }
/// <summary> /// Dicionário de lista reordenável contendo todas as variaveis do gráfico criadas ate o momento em formato /// <seealso cref="TagVar"/> /// </summary> /// <returns><seealso cref="TagVarList"/> contendo todas as variaveis do gráfico em formato <seealso cref="TagVar"/></returns> public TagVarList GetVariablesAsTag() { TagVarList tagVariables = new TagVarList(); foreach (string intKey in intVars.Keys) { tagVariables.Add(intKey, GraphVarType.Integer); } foreach (string floatKey in floatVars.Keys) { tagVariables.Add(floatKey, GraphVarType.Float); } foreach (string doubleKey in doubleVars.Keys) { tagVariables.Add(doubleKey, GraphVarType.Double); } foreach (string boolKey in boolVars.Keys) { tagVariables.Add(boolKey, GraphVarType.Boolean); } return(tagVariables); }
/// <summary> /// Sincroniza as variaveis e trajetos do componente com as variaveis do gráfico de estados /// </summary> public void SyncVariablesAndTargets() { SyncTargets(); if (graph == null) { return; } TagVarList graphVariables = null; TagVarList myTagVariables = GetVariablesAsTag(); _graph.GetTagVariables(out graphVariables); //Remove variaveis que estejam somente no componente mas que nao estejam no grafico foreach (string variable in myTagVariables.Keys) { if (graphVariables.ContainsKey(variable) == false) { RemoveVariable(variable, myTagVariables[variable]); } } myTagVariables.Clear(); myTagVariables = null; //Adiciona variaveis marcadas no grafico que não existam no FSM foreach (string variable in graphVariables.Keys) { GraphVarType varType = graphVariables[variable]; switch (varType) { case GraphVarType.Boolean: if (boolVars.ContainsKey(variable) == false) { boolVars.Add(variable, new BoolVar()); } break; case GraphVarType.Double: if (doubleVars.ContainsKey(variable) == false) { doubleVars.Add(variable, new DoubleVar()); } break; case GraphVarType.Float: if (floatVars.ContainsKey(variable) == false) { floatVars.Add(variable, new FloatVar()); } break; case GraphVarType.Integer: if (intVars.ContainsKey(variable) == false) { intVars.Add(variable, new IntVar()); } break; } } graphVariables.Clear(); graphVariables = null; }