private ICompletionDataProvider GlobalComplete() { CProject project = Document.Project as CProject; if (project == null) { return(null); } ProjectInformation info = ProjectInformationManager.Instance.Get(project); CompletionDataProvider provider = new CompletionDataProvider(); foreach (LanguageItem li in info.Containers()) { if (li.Parent == null) { provider.AddCompletionData(new CompletionData(li)); } } foreach (Function f in info.Functions) { if (f.Parent == null) { provider.AddCompletionData(new CompletionData(f)); } } foreach (Enumerator e in info.Enumerators) { provider.AddCompletionData(new CompletionData(e)); } foreach (Macro m in info.Macros) { provider.AddCompletionData(new CompletionData(m)); } string currentFileName = Document.FileName; if (info.IncludedFiles.ContainsKey(currentFileName)) { foreach (FileInformation fi in info.IncludedFiles[currentFileName]) { foreach (LanguageItem li in fi.Containers()) { if (li.Parent == null) { provider.AddCompletionData(new CompletionData(li)); } } foreach (Function f in fi.Functions) { if (f.Parent == null) { provider.AddCompletionData(new CompletionData(f)); } } foreach (Enumerator e in fi.Enumerators) { provider.AddCompletionData(new CompletionData(e)); } foreach (Macro m in fi.Macros) { provider.AddCompletionData(new CompletionData(m)); } } } return(provider); }
private CompletionDataProvider GetMembersOfItem(string itemFullName) { CProject project = Document.Project as CProject; if (project == null) { return(null); } ProjectInformation info = ProjectInformationManager.Instance.Get(project); CompletionDataProvider provider = new CompletionDataProvider(); LanguageItem container = null; string currentFileName = Document.FileName; bool in_project = false; foreach (LanguageItem li in info.Containers()) { if (itemFullName == li.FullName) { container = li; in_project = true; } } if (!in_project && info.IncludedFiles.ContainsKey(currentFileName)) { foreach (FileInformation fi in info.IncludedFiles[currentFileName]) { foreach (LanguageItem li in fi.Containers()) { if (itemFullName == li.FullName) { container = li; } } } } if (container == null) { return(null); } if (in_project) { foreach (LanguageItem li in info.AllItems()) { if (li.Parent != null && li.Parent.Equals(container)) { provider.AddCompletionData(new CompletionData(li)); } } } else { foreach (FileInformation fi in info.IncludedFiles[currentFileName]) { foreach (LanguageItem li in fi.AllItems()) { if (li.Parent != null && li.Parent.Equals(container)) { provider.AddCompletionData(new CompletionData(li)); } } } } return(provider); }