public void ReadDelegates(string file, DelegateCollection delegates, string apiname, string apiversions) { var specs = new XPathDocument(file); // The pre-GL4.4 spec format does not distinguish between // different apinames (it is assumed that different APIs // are stored in distinct signature.xml files). // To maintain compatibility, we detect the version of the // signatures.xml file and ignore apiname if it is version 1. var specversion = GetSpecVersion(specs); if (specversion == "1") { apiname = null; } foreach (var apiversion in apiversions.Split('|')) { string xpath_add, xpath_delete; GetSignaturePaths(apiname, apiversion, out xpath_add, out xpath_delete); foreach (XPathNavigator nav in specs.CreateNavigator().Select(xpath_delete)) { foreach (XPathNavigator node in nav.SelectChildren("function", String.Empty)) { delegates.Remove(node.GetAttribute("name", String.Empty)); } } foreach (XPathNavigator nav in specs.CreateNavigator().Select(xpath_add)) { delegates.AddRange(ReadDelegates(nav, apiversion)); } } }
public void ReadDelegates(string file, DelegateCollection delegates, string apiname, string apiversions) { var specs = new XPathDocument(file); // The pre-GL4.4 spec format does not distinguish between // different apinames (it is assumed that different APIs // are stored in distinct signature.xml files). // To maintain compatibility, we detect the version of the // signatures.xml file and ignore apiname if it is version 1. var specversion = GetSpecVersion(specs); if (specversion == "1") { apiname = null; } foreach (var apiversion in apiversions.Split('|')) { string xpath_add, xpath_delete; GetSignaturePaths(apiname, apiversion, out xpath_add, out xpath_delete); foreach (XPathNavigator nav in specs.CreateNavigator().Select(xpath_delete)) { foreach (XPathNavigator node in nav.SelectChildren("function", String.Empty)) delegates.Remove(node.GetAttribute("name", String.Empty)); } foreach (XPathNavigator nav in specs.CreateNavigator().Select(xpath_add)) { delegates.AddRange(ReadDelegates(nav, apiversion)); } } }
public void ReadDelegates(string file, DelegateCollection delegates) { var specs = new XPathDocument(file); foreach (XPathNavigator nav in specs.CreateNavigator().Select("/signatures/delete")) { foreach (XPathNavigator node in nav.SelectChildren("function", String.Empty)) delegates.Remove(node.GetAttribute("name", String.Empty)); } foreach (XPathNavigator nav in specs.CreateNavigator().Select("/signatures/add")) { Utilities.Merge(delegates, ReadDelegates(nav)); } }
public void ReadDelegates(string file, DelegateCollection delegates) { var specs = new XPathDocument(file); foreach (XPathNavigator nav in specs.CreateNavigator().Select("/signatures/delete")) { foreach (XPathNavigator node in nav.SelectChildren("function", String.Empty)) { delegates.Remove(node.GetAttribute("name", String.Empty)); } } foreach (XPathNavigator nav in specs.CreateNavigator().Select("/signatures/add")) { Utilities.Merge(delegates, ReadDelegates(nav)); } }