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; }