public void ReadEnums(string file, EnumCollection enums) { // First, read all enum definitions from spec and override file. // Afterwards, read all token/enum overrides from overrides file. // Every single enum is merged into var specs = new XPathDocument(file); foreach (XPathNavigator nav in specs.CreateNavigator().Select("/signatures/delete")) { foreach (XPathNavigator node in nav.SelectChildren("enum", String.Empty)) { enums.Remove(node.GetAttribute("name", String.Empty)); } } foreach (XPathNavigator nav in specs.CreateNavigator().Select("/signatures/add")) { Utilities.Merge(enums, ReadEnums(nav)); } }
public void ReadEnums(string file, EnumCollection enums, 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); // First, read all enum definitions from spec and override file. // Afterwards, read all token/enum overrides from overrides file. foreach (XPathNavigator nav in specs.CreateNavigator().Select(xpath_delete)) { foreach (XPathNavigator node in nav.SelectChildren("enum", String.Empty)) { enums.Remove(node.GetAttribute("name", String.Empty)); } } foreach (XPathNavigator nav in specs.CreateNavigator().Select(xpath_add)) { Utilities.Merge(enums, ReadEnums(nav)); } } }
public void ReadEnums(string file, EnumCollection enums) { // First, read all enum definitions from spec and override file. // Afterwards, read all token/enum overrides from overrides file. // Every single enum is merged into var specs = new XPathDocument(file); foreach (XPathNavigator nav in specs.CreateNavigator().Select("/signatures/delete")) { foreach (XPathNavigator node in nav.SelectChildren("enum", String.Empty)) enums.Remove(node.GetAttribute("name", String.Empty)); } foreach (XPathNavigator nav in specs.CreateNavigator().Select("/signatures/add")) { Utilities.Merge(enums, ReadEnums(nav)); } }
public void ReadEnums(string file, EnumCollection enums, 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); // First, read all enum definitions from spec and override file. // Afterwards, read all token/enum overrides from overrides file. foreach (XPathNavigator nav in specs.CreateNavigator().Select(xpath_delete)) { foreach (XPathNavigator node in nav.SelectChildren("enum", String.Empty)) enums.Remove(node.GetAttribute("name", String.Empty)); } foreach (XPathNavigator nav in specs.CreateNavigator().Select(xpath_add)) { Utilities.Merge(enums, ReadEnums(nav)); } } }