示例#1
0
        private List <EntityHierarchyItem> ReportDuplicatedEntities(Dictionary <string, List <string> > dup)
        {
            items = new List <EntityHierarchyItem>();
            EntityHierarchyItem top = new EntityHierarchyItem
            {
                IsValid = false,
                Level   = 0,
                Name    = "<!> Entity が重複して定義されています."
            };

            items.Add(top);
            foreach (KeyValuePair <string, List <string> > kvp in dup)
            {
                foreach (string source in kvp.Value)
                {
                    EntityHierarchyItem sourceItem = new EntityHierarchyItem
                    {
                        IsValid   = false,
                        Level     = 1,
                        Name      = kvp.Key,
                        LongPath  = source,
                        ShortPath = Path.GetFileName(source)
                    };
                    items.Add(sourceItem);
                }
            }
            project.topModule = "";
            return(items);
        }
示例#2
0
        // トップモジュールを指定するボタン (Set as Top)が押された場合
        private void SetAsTop_Click(object sender, RoutedEventArgs e)
        {
            EntityHierarchyItem item = (EntityHierarchyItem)lstHierarchy.SelectedItem;

            if (item == null)
            {
                return;
            }
            Util.currentProject.topModule      = item.Name;
            Util.currentProject.guessTopModule = false;
            UpdateHierarchy();
        }
示例#3
0
        private List <EntityHierarchyItem> InvalidHierarchy(string message)
        {
            items = new List <EntityHierarchyItem>();
            EntityHierarchyItem item = new EntityHierarchyItem
            {
                IsValid = false,
                Level   = 0,
                Name    = message
            };

            items.Add(item);
            project.topModule = "";
            return(items);
        }
示例#4
0
        // target からの参照関係を出力
        private List <EntityHierarchyItem> SearchEntityTree(string target, List <string> parents, List <string> entities, List <VHDLSource.Component> components)
        {
            List <EntityHierarchyItem> result = new List <EntityHierarchyItem>();

            if (parents.Contains(target))  // 循環参照の場合エラー
            {
                return(null);
            }

            EntityHierarchyItem targetItem = new EntityHierarchyItem
            {
                IsValid = entities.Contains(target), // Entity 宣言がない場合無効
                Level   = 0,
                Name    = target
            };

            result.Add(targetItem);
            if (!entities.Contains(target)) // Entity 宣言がない場合はそれ以上掘らない
            {
                targetItem.ShortPath = "???";
                return(result);
            }

            List <string> newParents = new List <string>(parents);

            newParents.Add(target);
            foreach (VHDLSource.Component component in components)
            {
                if (component.From.Equals(target))
                {
                    List <EntityHierarchyItem> children = SearchEntityTree(component.Name, newParents, entities, components);
                    if (children == null)
                    {
                        return(null);
                    }
                    foreach (EntityHierarchyItem child in children)
                    {
                        child.Level += 1;
                    }
                    result.AddRange(children);
                }
            }
            return(result);
        }