コード例 #1
0
        public override void Perform(Model sourceModel)
        {
            var makefile = (Makefile)sourceModel.RootElements[0];

            if (ElementIndex >= makefile.Elements.Count)
            {
                ElementIndex = makefile.Elements.Count - 1;
            }

            var rule = makefile.Elements[ElementIndex] as IRule;

            while (rule == null && ElementIndex < makefile.Elements.Count - 1)
            {
                ElementIndex++;
                rule = makefile.Elements[ElementIndex] as IRule;
            }

            if (rule == null)
            {
                return;
            }

            var dependencyFileDep = new FileDep
            {
                ID   = Id,
                Name = Name
            };

            rule.Dependencies.Add(dependencyFileDep);
        }
コード例 #2
0
ファイル: AddRule.cs プロジェクト: georghinkel/atlbenchmark
        public override void Perform(Model sourceModel)
        {
            var makefile = (IMakefile)sourceModel.RootElements[0];

            var rule = new Rule
            {
                ID   = IdRule,
                Name = NameRule
            };

            var dependencyFileDep = new FileDep
            {
                ID   = IdFileDep,
                Name = NameFileDep
            };

            rule.Dependencies.Add(dependencyFileDep);

            var shellLine = new ShellLine
            {
                ID      = IdShellLine,
                Command = CommandShellLine,
                Display = false
            };

            rule.ShellLines.Add(shellLine);

            makefile.Elements.Add(rule);
        }
コード例 #3
0
        private static Model CopyMakeModel(Model sourceModel)
        {
            var targetModel = new Model();

            var makefile = (Makefile)sourceModel.RootElements[0];

            var newMakefile = new Makefile
            {
                ID      = makefile.ID,
                Name    = makefile.Name,
                Comment = new Comment()
                {
                    ID   = makefile.Comment.ID,
                    Text = makefile.Comment.Text
                }
            };

            foreach (var element in makefile.Elements)
            {
                if (element is Rule)
                {
                    var rule = element as Rule;

                    var newRule = new Rule
                    {
                        ID   = rule.ID,
                        Name = rule.Name
                    };

                    foreach (var shellLine in rule.ShellLines)
                    {
                        var newShellLine = new ShellLine
                        {
                            ID      = shellLine.ID,
                            Display = shellLine.Display,
                            Command = shellLine.Command
                        };

                        newRule.ShellLines.Add(newShellLine);
                    }

                    foreach (var dependency in rule.Dependencies)
                    {
                        if (dependency is FileDep)
                        {
                            var fileDep = dependency as FileDep;

                            var newFileDep = new FileDep
                            {
                                ID   = fileDep.ID,
                                Name = fileDep.Name
                            };

                            newRule.Dependencies.Add(newFileDep);
                        }
                    }

                    newMakefile.Elements.Add(newRule);
                }
                else if (element is Macro)
                {
                    var macro = element as Macro;

                    var newMacro = new Macro
                    {
                        ID    = macro.ID,
                        Name  = macro.Name,
                        Value = macro.Value
                    };

                    newMakefile.Elements.Add(newMacro);
                }
            }

            targetModel.RootElements.Add(newMakefile);
            return(targetModel);
        }
コード例 #4
0
        public static Model GenerateMake(int numberOfElements)
        {
            var rand  = new Random();
            var rules = new List <Rule>();

            int idCounter = 0;

            var model = new Model();

            var makefile = new Makefile
            {
                ID   = idCounter.ToString(),
                Name = "makefile name"
            };

            model.RootElements.Add(makefile);
            idCounter++;

            var comment = new Comment
            {
                ID   = idCounter.ToString(),
                Text = "comment text" + idCounter
            };

            makefile.Comment = comment;
            idCounter++;

            //~10% macros
            for (int i = 0; i < (numberOfElements / 10); i++)
            {
                var macro = new Macro
                {
                    ID    = idCounter.ToString(),
                    Name  = "macro name" + idCounter,
                    Value = "macro value" + idCounter
                };
                idCounter++;

                makefile.Elements.Add(macro);
            }

            //~25% rules
            for (int i = 0; i < (numberOfElements / 4); i++)
            {
                var rule = new Rule
                {
                    ID   = idCounter.ToString(),
                    Name = "RuleName" + idCounter
                };
                idCounter++;

                rules.Add(rule);
                makefile.Elements.Add(rule);

                var dependencyFileDep = new FileDep
                {
                    ID   = idCounter.ToString(),
                    Name = "fileName" + idCounter
                };
                rule.Dependencies.Add(dependencyFileDep);
                idCounter++;

                var shellLine = new ShellLine
                {
                    ID      = idCounter.ToString(),
                    Command = "command shell line " + idCounter
                };
                var dice = rand.NextDouble();
                shellLine.Display = dice > 0.5;
                rule.ShellLines.Add(shellLine);
                idCounter++;
            }

            for (int i = idCounter; i < numberOfElements; i++)
            {
                var ruleNumber = rand.Next(rules.Count - 1);

                var dice = rand.NextDouble();
                if (dice < 0.5)
                {
                    var shellLine = new ShellLine
                    {
                        ID      = idCounter.ToString(),
                        Command = "command shell line " + idCounter
                    };
                    var displayDice = rand.NextDouble();
                    shellLine.Display = dice > 0.5;
                    rules[ruleNumber].ShellLines.Add(shellLine);
                    idCounter++;
                }
                else
                {
                    var dependencyFileDep = new FileDep
                    {
                        ID   = idCounter.ToString(),
                        Name = "fileName" + idCounter
                    };
                    rules[ruleNumber].Dependencies.Add(dependencyFileDep);
                    idCounter++;
                }
            }

            return(model);
        }