/// <summary> /// Load UI element data from args /// </summary> private void LoadArgs() { actionComboBox.Text = ArgAction; gracefulCheckBox.Checked = ArgGraceful; preventSleepCheckBox.Checked = ArgPreventSleep; backgroundCheckBox.Checked = ArgBackground; hoursNumericUpDown.Value = ArgTimeH; minutesNumericUpDown.Value = ArgTimeM; secondsNumericUpDown.Value = ArgTimeS; if (ArgMode.Equals("Lock")) { ExceptionHandler.LogEvent("[Menu] Setting 'Lock' mode"); startButton.Text = "Start (with recommended settings)"; settingsButton.Enabled = false; actionGroupBox.Enabled = false; timeGroupBox.Enabled = false; } }
/// <summary> /// Récupère la liste de tous les arguments selon leurs modes, nom et position dans le corps de la règle. /// </summary> /// <param name="argMode">Mode des arguments à récupérer/</param> /// <param name="actionSet">Ensemble d'action à traiter.</param> /// <param name="index">Index de l'ensemble d'action. </param> /// <returns>La liste des arguments selon un mode, leurs noms et positions respectives.</returns> private Dictionary <ArgType, Dictionary <string, List <int[]> > > GetAllValues(ArgMode argMode, List <Classifier> parentActionSet, int index) { List <Classifier> actionSet = ObjectCopier.Clone(parentActionSet); Dictionary <ArgType, Dictionary <string, List <int[]> > > argList = new Dictionary <ArgType, Dictionary <string, List <int[]> > >(); switch (argMode) { case ArgMode.ANONYMOUS: for (int i = 0; i < actionSet[index].rule.head.arity; i++) { if (actionSet[index].rule.head.values[i].Equals("_")) { if (!argList.ContainsKey(actionSet[index].rule.head.predOp.argsOptions[i].argType)) { argList.Add(actionSet[index].rule.head.predOp.argsOptions[i].argType, new Dictionary <string, List <int[]> >()); } if (!argList[actionSet[index].rule.head.predOp.argsOptions[i].argType].ContainsKey("_")) { argList[actionSet[index].rule.head.predOp.argsOptions[i].argType].Add("_", new List <int[]>()); } argList[actionSet[index].rule.head.predOp.argsOptions[i].argType]["_"].Add(new int[2] { -1, i }); } } for (int i = 0; i < actionSet[index].rule.body.Count(); i++) { for (int j = 0; j < actionSet[index].rule.body[i].arity; j++) { if (actionSet[index].rule.body[i].values[j].Equals("_")) { if (!argList.ContainsKey(actionSet[index].rule.body[i].predOp.argsOptions[j].argType)) { argList.Add(actionSet[index].rule.body[i].predOp.argsOptions[j].argType, new Dictionary <string, List <int[]> >()); } if (!argList[actionSet[index].rule.body[i].predOp.argsOptions[j].argType].ContainsKey("_")) { argList[actionSet[index].rule.body[i].predOp.argsOptions[j].argType].Add("_", new List <int[]>()); } argList[actionSet[index].rule.body[i].predOp.argsOptions[j].argType]["_"].Add(new int[2] { i, j }); } } } return(argList); case ArgMode.VAR: case ArgMode.BOUND: for (int i = 0; i < actionSet[index].rule.head.arity; i++) { string value = (string)actionSet[index].rule.head.values[i]; if (!IsMinChar(value.ToCharArray()[0])) { if (!argList.ContainsKey(actionSet[index].rule.head.predOp.argsOptions[i].argType)) { argList.Add(actionSet[index].rule.head.predOp.argsOptions[i].argType, new Dictionary <string, List <int[]> >()); } if (!argList[actionSet[index].rule.head.predOp.argsOptions[i].argType].ContainsKey((string)actionSet[index].rule.head.values[i])) { argList[actionSet[index].rule.head.predOp.argsOptions[i].argType].Add((string)actionSet[index].rule.head.values[i], new List <int[]>()); } argList[actionSet[index].rule.head.predOp.argsOptions[i].argType][(string)actionSet[index].rule.head.values[i]].Add(new int[2] { -1, i }); } } for (int i = 0; i < actionSet[index].rule.body.Count(); i++) { for (int j = 0; j < actionSet[index].rule.body[i].arity; j++) { string value = (string)actionSet[index].rule.body[i].values[j]; if (!IsMinChar(value.ToCharArray()[0])) { if (!argList.ContainsKey(actionSet[index].rule.body[i].predOp.argsOptions[j].argType)) { argList.Add(actionSet[index].rule.body[i].predOp.argsOptions[j].argType, new Dictionary <string, List <int[]> >()); } if (!argList[actionSet[index].rule.body[i].predOp.argsOptions[j].argType].ContainsKey((string)actionSet[index].rule.body[i].values[j])) { argList[actionSet[index].rule.body[i].predOp.argsOptions[j].argType].Add((string)actionSet[index].rule.body[i].values[j], new List <int[]>()); } argList[actionSet[index].rule.body[i].predOp.argsOptions[j].argType][(string)actionSet[index].rule.body[i].values[j]].Add(new int[2] { i, j }); } } } return(argList); case ArgMode.CONST: for (int i = 0; i < actionSet[index].rule.head.arity; i++) { string value = (string)actionSet[index].rule.head.values[i]; if (IsMinChar(value.ToCharArray()[0])) { if (!argList.ContainsKey(actionSet[index].rule.head.predOp.argsOptions[i].argType)) { argList.Add(actionSet[index].rule.head.predOp.argsOptions[i].argType, new Dictionary <string, List <int[]> >()); } if (!argList[actionSet[index].rule.head.predOp.argsOptions[i].argType].ContainsKey((string)actionSet[index].rule.head.values[i])) { argList[actionSet[index].rule.head.predOp.argsOptions[i].argType].Add((string)actionSet[index].rule.head.values[i], new List <int[]>()); } argList[actionSet[index].rule.head.predOp.argsOptions[i].argType][(string)actionSet[index].rule.head.values[i]].Add(new int[2] { -1, i }); } } for (int i = 0; i < actionSet[index].rule.body.Count(); i++) { for (int j = 0; j < actionSet[index].rule.body[i].arity; j++) { string value = (string)actionSet[index].rule.body[i].values[j]; if (IsMinChar(value.ToCharArray()[0])) { if (!argList.ContainsKey(actionSet[index].rule.body[i].predOp.argsOptions[j].argType)) { argList.Add(actionSet[index].rule.body[i].predOp.argsOptions[j].argType, new Dictionary <string, List <int[]> >()); } if (!argList[actionSet[index].rule.body[i].predOp.argsOptions[j].argType].ContainsKey((string)actionSet[index].rule.body[i].values[j])) { argList[actionSet[index].rule.body[i].predOp.argsOptions[j].argType].Add((string)actionSet[index].rule.body[i].values[j], new List <int[]>()); } argList[actionSet[index].rule.body[i].predOp.argsOptions[j].argType][(string)actionSet[index].rule.body[i].values[j]].Add(new int[2] { i, j }); } } } return(argList); default: return(null); } }
/// <summary> /// Get the String representation of an parameter with a Sharing Mode. /// Rule: TCCODEGEN_FUNCALL_PARAMS /// </summary> /// <param name="parameter">The Parameter</param> /// <param name="table">The Symbol table</param> /// <param name="mode">Argument mode Input, InOut, Output, etc...</param> /// <param name="previousSharingMode">The previous Sharing Mode</param> /// <param name="previousSpan">The previous marging span</param> /// <returns>The String representation of the Sharing Mode paramaters</returns> private string ToString(TypeCobol.Compiler.CodeElements.CallSiteParameter parameter, Compiler.CodeModel.SymbolTable table, ArgMode mode, ref TypeCobol.Compiler.CodeElements.ParameterSharingMode previousSharingMode, ref int previousSpan) { Variable variable = parameter.StorageAreaOrValue; var name = variable.ToString(true); string share_mode = ""; int defaultSpan = string.Intern("by reference ").Length; if (parameter.SharingMode.Token != null) { if (previousSharingMode != parameter.SharingMode.Value) { share_mode = "by " + parameter.SharingMode.Token.Text; share_mode += new string(' ', defaultSpan - share_mode.Length); previousSharingMode = parameter.SharingMode.Value; } } else { if (mode == ArgMode.InOut || mode == ArgMode.Output) { if (previousSharingMode != TypeCobol.Compiler.CodeElements.ParameterSharingMode.ByReference) { share_mode = string.Intern("by reference "); previousSharingMode = TypeCobol.Compiler.CodeElements.ParameterSharingMode.ByReference; } } } if (share_mode.Length == 0) { share_mode = new string(' ', previousSpan == 0 ? defaultSpan : previousSpan); } else { previousSpan = share_mode.Length; } if (variable.IsLiteral) { return(share_mode + name); } var found = table.GetVariable(variable); if (found.Count < 1) //this can happens for special register : LENGTH OF, ADDRESS OF { return(share_mode + variable.ToCobol85()); } // if (found.Count > 1) return "?AMBIGUOUS?"; var data = found[0] as Compiler.Nodes.DataDescription; if (data.DataType == DataType.Boolean) { name += "-value"; } return(share_mode + name); }
/// <summary> /// Get the String representation of an parameter with a Sharing Mode. /// Rule: TCCODEGEN_FUNCALL_PARAMS /// </summary> /// <param name="parameter">The Parameter</param> /// <param name="node">The node</param> /// <param name="mode">Argument mode Input, InOut, Output, etc...</param> /// <param name="previousSharingMode">The previous Sharing Mode</param> /// <param name="previousSpan">The previous marging span</param> /// <returns>The String representation of the Sharing Mode paramaters</returns> private string ToString(TypeCobol.Compiler.CodeElements.CallSiteParameter parameter, Node node, ArgMode mode, ref TypeCobol.Compiler.CodeElements.ParameterSharingMode previousSharingMode, ref int previousSpan) { Variable variable = parameter.StorageAreaOrValue; bool bTypeBool = false; if (variable != null) {//We must detect a boolean variable if (!variable.IsLiteral) { var found = node.GetDataDefinitionFromStorageAreaDictionary(variable.StorageArea); if (found != null) { var data = found as DataDescription; bTypeBool = (data != null && data.DataType == DataType.Boolean); } } } var name = parameter.IsOmitted ? "omitted" : variable.ToString(true, bTypeBool); string share_mode = ""; int defaultSpan = string.Intern("by reference ").Length; if (parameter.SharingMode.Token != null) { if (previousSharingMode != parameter.SharingMode.Value) { share_mode = "by " + parameter.SharingMode.Token.Text; share_mode += new string(' ', defaultSpan - share_mode.Length); previousSharingMode = parameter.SharingMode.Value; } } else { if (mode == ArgMode.InOut || mode == ArgMode.Output) { if (previousSharingMode != TypeCobol.Compiler.CodeElements.ParameterSharingMode.ByReference) { share_mode = string.Intern("by reference "); previousSharingMode = TypeCobol.Compiler.CodeElements.ParameterSharingMode.ByReference; } } } if (share_mode.Length == 0) { share_mode = new string(' ', previousSpan == 0 ? defaultSpan : previousSpan); } else { previousSpan = share_mode.Length; } if (variable != null) { if (variable.IsLiteral) { return(share_mode + name); } var found = node.GetDataDefinitionFromStorageAreaDictionary(variable.StorageArea); if (found == null) //this can happens for special register : LENGTH OF, ADDRESS OF { return(share_mode + variable.ToCobol85()); } } return(share_mode + name); }
public PipeArg(string name, ArgMode argMode, object value = null) { Name = name; ArgMode = argMode; Value = value; }