public static int GetIndex(string extension) { int index; if (Extension.IsArbVendor(extension)) { if (sExtensionIndices.mIndicesMap.TryGetValue(extension, out index)) { return(index); } Console.WriteLine("Extension {0} has automatically assigned the index {1}", extension, sUnknownExtensionIndex + 1); sExtensionIndices.mIndicesMap.Add(extension, ++sUnknownExtensionIndex); return(sUnknownExtensionIndex); } else { if (sVendorExtensionIndices.mIndicesMap.TryGetValue(extension, out index)) { return(index); } Console.WriteLine("Extension {0} has automatically assigned the index {1}", extension, sUnknownExtensionIndex + 1); sVendorExtensionIndices.mIndicesMap.Add(extension, ++sUnknownExtensionIndex); return(sUnknownExtensionIndex); } }
static ExtensionIndices() { // Load extension indices using (Stream sr = Assembly.GetExecutingAssembly().GetManifestResourceStream("BindingsGen.GLSpecs.ExtIndices.xml")) { XmlSerializer serializer = new XmlSerializer(typeof(ExtensionIndices)); sExtensionIndices = (ExtensionIndices)serializer.Deserialize(sr); } // Build map foreach (Index index in sExtensionIndices.Indices) { string extension = index.Extension.Trim(); if (!Extension.IsArbVendor(extension)) { continue; } foreach (string extensionItem in Regex.Split(extension, " ")) { sExtensionIndices.mIndicesMap.Add(extensionItem, index.IndexValue); } } // Build map sVendorExtensionIndices = new ExtensionIndices(); foreach (Index index in sExtensionIndices.Indices) { string extension = index.Extension.Trim(); if (Extension.IsArbVendor(extension)) { continue; } foreach (string extensionItem in Regex.Split(extension, " ")) { sVendorExtensionIndices.mIndicesMap.Add(extensionItem, index.IndexValue); } } }