예제 #1
0
        /// <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;
            }
        }
예제 #2
0
        /// <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);
            }
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
 public PipeArg(string name, ArgMode argMode, object value = null)
 {
     Name    = name;
     ArgMode = argMode;
     Value   = value;
 }