public static XNodeOut SignatureToClass(string signature, XNodeOut fileNode) { // create syntax tree for signature XDef def = XDef.ParseAndCheck(signature); // iterate syntax tree and add to our node map XNodeOut currentNode = fileNode; while (def != null) { if (def.DefType == XDef.XDefType.Namespace) { currentNode = currentNode.AddNode(def.Name, XObjType.Namespace); } else if (def.DefType == XDef.XDefType.Class) { currentNode = currentNode.AddNode(def.GetShortName(), XObjType.Class); /* Cant map generic params because the fileNode is not right * if (def.Generics != null) * foreach (var genericSig in def.Generics) * SignatureToClass(genericSig.GetFullName(), fileNode);*/ } def = def.SubDef; } Debug.Assert(currentNode.ObjType == XObjType.Class); return(currentNode); }
static void Main() { XDef.Test(); PacketExts.Test(); GenericPacket.Test(); Pro.LoadFromDirectory(Application.StartupPath); XRay.BuilderVersion = Assembly.GetEntryAssembly().GetName().Version.ToString(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); }
internal XNodeOut AddField(FieldReference fieldDef) { // include namespace later for dynamic lookups - string name = fieldDef.FieldType.FullName + "::" + fieldDef.Name; XDef fieldTypeDef = XDef.ParseAndCheck(fieldDef.FieldType.ToString()); string name = fieldTypeDef.GetShortName() + " " + fieldDef.Name; var node = AddNode(name, XObjType.Field); node.Lines = 1; return(node); }