bool CheckNameAgainstFilter(string name, MemberFilterFlags filter) { if ((filter & MemberFilterFlags.Namespaces) == MemberFilterFlags.None && name.StartsWith("N:")) { return(false); } if ((filter & MemberFilterFlags.Types) == MemberFilterFlags.None && name.StartsWith("T:")) { return(false); } if ((filter & MemberFilterFlags.Methods) == MemberFilterFlags.None && name.StartsWith("M:")) { return(false); } if ((filter & MemberFilterFlags.Properties) == MemberFilterFlags.None && name.StartsWith("P:")) { return(false); } if ((filter & MemberFilterFlags.Fields) == MemberFilterFlags.None && name.StartsWith("F:")) { return(false); } if ((filter & MemberFilterFlags.Events) == MemberFilterFlags.None && name.StartsWith("E:")) { return(false); } return(true); }
bool CheckNameAgainstFilter(string name, MemberFilterFlags filter) { if((filter & MemberFilterFlags.Namespaces) == MemberFilterFlags.None && name.StartsWith("N:")) { return false; } if((filter & MemberFilterFlags.Types) == MemberFilterFlags.None && name.StartsWith("T:")) { return false; } if((filter & MemberFilterFlags.Methods) == MemberFilterFlags.None && name.StartsWith("M:")) { return false; } if((filter & MemberFilterFlags.Properties) == MemberFilterFlags.None && name.StartsWith("P:")) { return false; } if((filter & MemberFilterFlags.Fields) == MemberFilterFlags.None && name.StartsWith("F:")) { return false; } if((filter & MemberFilterFlags.Events) == MemberFilterFlags.None && name.StartsWith("E:")) { return false; } return true; }
public void Process(string assemblyPath, IEnumerable<string> tagsPresent, IEnumerable<string> tagsMissing, MemberFilterFlags filter) { ResultsList.Items.Clear(); string xmlPath = Path.ChangeExtension(assemblyPath, "xml"); XmlDocument docs = new XmlDocument(); docs.Load(xmlPath); XmlNodeList nodes = docs.SelectNodes("/doc/members/member"); foreach(XmlNode node in nodes) { string name = node.Attributes["name"].Value; if(!CheckNameAgainstFilter(name, filter)) continue; bool addItem = true; //check if it contains any tags that are supposed to be missing foreach(string tag in tagsMissing) { XmlNode tagNode = node.SelectSingleNode(tag); if(tagNode != null && tagNode.InnerText != string.Empty) { addItem = false; break; } } //If we've already decided not to add this, don't keep checking the node if(!addItem) continue; //check if it's missing any tags that are supposed to be present foreach(string tag in tagsPresent) { XmlNode tagNode = node.SelectSingleNode(tag); if(tagNode == null || tagNode.InnerText == string.Empty) { addItem = false; break; } } //it checks out, add it to the list if(addItem) ResultsList.Items.Add(name); } m_Symbols = new SymbolEngine(assemblyPath); }
private void SearchButton_Click(object sender, EventArgs e) { MemberFilterFlags filter = MemberFilterFlags.None; if (NamespacesCheckBox.Checked) { filter |= MemberFilterFlags.Namespaces; } if (TypesCheckBox.Checked) { filter |= MemberFilterFlags.Types; } if (MethodsCheckBox.Checked) { filter |= MemberFilterFlags.Methods; } if (PropertiesCheckBox.Checked) { filter |= MemberFilterFlags.Properties; } if (FieldsCheckBox.Checked) { filter |= MemberFilterFlags.Fields; } if (EventsCheckBox.Checked) { filter |= MemberFilterFlags.Events; } ScanResultsWindow results = new ScanResultsWindow(); results.Show(); results.Process(AssemblyPathTextBox.Text, from object present in TagsPresentList.Items select(string) present, from object missing in TagsMissingList.Items select(string) missing, filter ); }
public void Process(string assemblyPath, IEnumerable <string> tagsPresent, IEnumerable <string> tagsMissing, MemberFilterFlags filter) { ResultsList.Items.Clear(); string xmlPath = Path.ChangeExtension(assemblyPath, "xml"); XmlDocument docs = new XmlDocument(); docs.Load(xmlPath); XmlNodeList nodes = docs.SelectNodes("/doc/members/member"); foreach (XmlNode node in nodes) { string name = node.Attributes["name"].Value; if (!CheckNameAgainstFilter(name, filter)) { continue; } bool addItem = true; //check if it contains any tags that are supposed to be missing foreach (string tag in tagsMissing) { XmlNode tagNode = node.SelectSingleNode(tag); if (tagNode != null && tagNode.InnerText != string.Empty) { addItem = false; break; } } //If we've already decided not to add this, don't keep checking the node if (!addItem) { continue; } //check if it's missing any tags that are supposed to be present foreach (string tag in tagsPresent) { XmlNode tagNode = node.SelectSingleNode(tag); if (tagNode == null || tagNode.InnerText == string.Empty) { addItem = false; break; } } //it checks out, add it to the list if (addItem) { ResultsList.Items.Add(name); } } m_Symbols = new SymbolEngine(assemblyPath); }