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); }
// トップモジュールを指定するボタン (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(); }
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); }
// 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); }