private void ApplyGlVersion(GlVersion glVersion) { foreach (GlEnum glEnum in glVersion.AddedEnums) { if (!Enums.Contains(glEnum)) { Enums.Add(glEnum); } } foreach (GlFunction glFunction in glVersion.AddedFunctions) { if (!Functions.Contains(glFunction)) { Functions.Add(glFunction); } } if (HasProfiles) { if (Profile == GlProfile.Core) { ApplyCoreProfile(glVersion); } else if (Profile == GlProfile.Compatibility) { ApplyCompatibilityProfile(glVersion); } } }
private void ApplyCoreProfile(GlVersion glVersion) { foreach (GlEnum glEnum in glVersion.AddedCoreEnums) { if (!Enums.Contains(glEnum)) { Enums.Add(glEnum); } } Enums.RemoveAll(glEnum => glVersion.RemovedCoreEnums.Contains(glEnum)); Functions.RemoveAll(glFunction => glVersion.RemovedCoreFunctions.Contains(glFunction)); }
private void ApplyCompatibilityProfile(GlVersion glVersion) { foreach (GlEnum glEnum in glVersion.AddedCompatibilityEnums) { if (!Enums.Contains(glEnum)) { Enums.Add(glEnum); } } foreach (GlFunction glFunction in glVersion.AddedCompatibilityFunctions) { if (!Functions.Contains(glFunction)) { Functions.Add(glFunction); } } }
protected override async Task <int> BuildInternal(BuildSettings settings) { var filesToCreate = EntityHelper.EntityTypes.Where(e => Enums.Contains(e.Name)); BuilderFileCountUpdate(filesToCreate.Count()); await Pause.WaitWhilePausedAsync(); foreach (var file in filesToCreate) { var filePath = string.Concat(settings.EnumerationPath, file.Name, settings.FileExtension); await BuildFile <eBuildSectionEnumeration>(filePath, file, settings); await Pause.WaitWhilePausedAsync(); if (Cancellation.IsCancellationRequested) { break; } } return(filesToCreate.Count()); }
public void MapObj(Type o) { bool isArray = false, isByRef = false; string ShortName = FixName(o, ref isArray, ref isByRef); if (Enums.Contains(ShortName)) { return; } Console.WriteLine(ShortName); Enums.Add(ShortName); XmlDocument CDOC = new XmlDocument(); string title = "class"; if (o.IsValueType) { title = "struct"; } if (o.IsInterface) { title = "interface"; } var x1 = NewNode(CDOC, title, FixName(o, ref isArray, ref isByRef)); AddAttribute(x1, "fullName", o.FullName); AddAttribute(x1, "assembly", o.Assembly.FullName); AddAttribute(x1, "location", o.Assembly.Location); IdType(o, x1); if (o.GetConstructor(Type.EmptyTypes) == null && o.IsAbstract && o.IsSealed) { AddAttribute(x1, "static", "1"); } x1.AppendChild(CDOC.CreateElement("interfaces")); x1.AppendChild(CDOC.CreateElement("constructors")); x1.AppendChild(CDOC.CreateElement("fields")); x1.AppendChild(CDOC.CreateElement("props")); var xMethods = (CDOC.CreateElement("methods")); x1.AppendChild(xMethods); CDOC.AppendChild(x1); foreach (var i in o.GetInterfaces()) { var Name = (i.FullName == null ? i.Name : i.FullName); if (Name != null) { bool dum = false; var x2 = NewNode(CDOC, "interface", FixName(i, ref dum, ref dum)); Type iT = i.GetType(); MapObj(i); x1.SelectSingleNode("interfaces").AppendChild(x2); } } foreach (var mi in o.GetConstructors()) { var x2 = (XmlElement)CDOC.CreateElement("constructor"); foreach (var pi in mi.GetParameters()) { var x3 = NewNode(CDOC, "param", pi.Name); IdType(pi.ParameterType, x3); x2.AppendChild(x3); } x1.SelectSingleNode("constructors").AppendChild(x2); } var pnames = new List <string>(); foreach (FieldInfo fi in o.GetFields()) { pnames.Add(fi.Name); var f = NewNode(CDOC, "field", fi.Name); AddAttribute(f, "value"); Type t = fi.FieldType; IdType(t, f); int iType = Convert.ToInt32(f.GetAttribute("type")); x1.SelectSingleNode("fields").AppendChild(f); } foreach (PropertyInfo pi in o.GetProperties()) { //necessary because adds prop twice if read/write if (!pnames.Contains(pi.Name)) { var p = NewNode(CDOC, "prop", pi.Name); var list = pi.GetIndexParameters(); if (list.Length > 0) { AddAttribute(p, "index", GetDataType(list[0].ParameterType).ToString()); } AddAttribute(p, "value"); AddAttribute(p, "read", pi.CanRead ? "1" : "0"); AddAttribute(p, "write", pi.CanWrite ? "1" : "0"); Type t = pi.PropertyType; IdType(t, p); x1.SelectSingleNode("props").AppendChild(p); pnames.Add(pi.Name); x1.SelectSingleNode("props").AppendChild(p); } } int staticMethods = 0; int totalMethods = 0; if (o.IsInterface) { int i = 0; } foreach (var mi in o.GetMethods()) { if (mi.Name.StartsWith("get_") || mi.Name.StartsWith("set_")) { continue; } if (mi.Name == "GetType") { continue; } totalMethods++; XmlElement x2 = null; XmlElement x3 = null; foreach (XmlElement x2a in xMethods.SelectNodes("method")) { if (x2a.GetAttribute("name") == mi.Name) { x2 = x2a; break; } } if (x2 == null) { x2 = NewNode(CDOC, "method", mi.Name); xMethods.AppendChild(x2); x3 = CDOC.CreateElement("overloads"); x2.AppendChild(x3); Type t = mi.ReturnType; IdType(t, x2); int iType = Convert.ToInt32(x2.GetAttribute("type")); } else { x3 = (XmlElement)x2.SelectSingleNode("overloads"); } if (mi.IsStatic) { staticMethods++; AddAttribute(x2, "static", "1"); } var x4 = CDOC.CreateElement("params"); foreach (var pi in mi.GetParameters()) { Type t = pi.ParameterType; var x5 = NewNode(CDOC, "param", pi.Name); IdType(t, x5); x4.AppendChild(x5); } bool dupe = false; foreach (XmlElement nowParms in x3.ChildNodes) { dupe = (nowParms.InnerXml == x4.InnerXml); if (dupe) { break; } } if (!dupe) { x3.AppendChild(x4); } } if (totalMethods == staticMethods && totalMethods != 0) { // this should be good cuz can't have non static methods in a static class AddAttribute(x1, "static", "1"); } if (ShortName == "System.Data.SqlClient.SqlCommand") { Debug.Print("bam"); } ; Write(CDOC); }