private void LoadFile() { loadTime = 0; LoadTimer timer = new LoadTimer("XML Parsing"); NanoXmlDocument xml = NanoXmlDocument.LoadFromFile(filename); loadTime += timer.Stop(); timer = new LoadTimer("Items Processing"); NanoXmlElement doc = xml.DocumentElement; NanoXmlElement types = (NanoXmlElement)doc["renamedTypes"]; modules.Clear(); namespaces.Clear(); namespacesObfuscated.Clear(); classes.Clear(); classesCache.Clear(); haveSystemEntities = false; methodsCount = classesCount = subclassesCount = skippedCount = 0; lastModified = File.GetLastWriteTime(filename); List <RenamedClass> subclasses = new List <RenamedClass>(); if (types != null) { foreach (NanoXmlElement element in types.ChildElements) { if (string.Compare(element.Name, "renamedClass", StringComparison.Ordinal) == 0) { RenamedClass c = new RenamedClass(element, this); classesCount++; if (c.OwnerClassName == null) { classes.Add(c); if (c.Name.NameOld != null && c.Name.NameOld.Namespace != null) { haveSystemEntities |= c.Name.NameOld.Namespace.StartsWith("System."); } } else { subclasses.Add(c); } methodsCount += c.MethodsCount; if (c.ModuleNew != null) { modules.Add(c.ModuleNew); } if (c.Name.NameOld != null) { classesCache[c.NameOld] = c; classesCache[c.NameOldFull] = c; if (!string.IsNullOrEmpty(c.Name.NameOld.Namespace)) { namespaces.Add(c.Name.NameOld.Namespace); } } if (c.Name.NameNew != null) { classesCache[c.NameNew] = c; classesCache[c.NameNewFull] = c; if (!string.IsNullOrEmpty(c.Name.NameNew.Namespace)) { namespacesObfuscated.Add(c.Name.NameNew.Namespace); } } } } } types = (NanoXmlElement)doc["skippedTypes"]; if (types != null) { foreach (NanoXmlElement element in types.ChildElements) { if (string.Compare(element.Name, "skippedClass", StringComparison.Ordinal) == 0) { skippedCount++; classesCount++; RenamedClass c = new RenamedClass(element, this); if (c.OwnerClassName == null) { classes.Add(c); } else { subclasses.Add(c); } classesCache[c.NameOld] = c; classesCache[c.NameOldFull] = c; } } } loadTime += timer.Stop(); timer = new LoadTimer("Subclasses Processing"); foreach (RenamedClass subclass in subclasses) { RenamedClass c; if (classesCache.TryGetValue(subclass.OwnerClassName, out c)) { c.Items.Add(subclass); subclass.OwnerClass = c; subclassesCount++; continue; } Debug.WriteLine("Failed to find root class: " + subclass.OwnerClassName); classes.Add(subclass); } loadTime += timer.Stop(); timer = new LoadTimer("Values Updating"); foreach (RenamedClass c in classes) { c.UpdateNewNames(this); } loadTime += timer.Stop(); Debug.WriteLine("Total Elapsed: {0} ms", loadTime); }
public void Load() { NanoXmlDocument doc = NanoXmlDocument.LoadFromFile(filename); xml = doc.DocumentElement; }
private void LoadFile() { Stopwatch sw = new Stopwatch(); sw.Start(); NanoXmlDocument xml = NanoXmlDocument.LoadFromFile(filename); timingXML = sw.ElapsedMilliseconds; Debug.WriteLine("XML Loading: " + timingXML + " ms"); sw.Reset(); sw.Start(); NanoXmlElement doc = xml.DocumentElement; NanoXmlElement types = (NanoXmlElement)doc["renamedTypes"]; modules.Clear(); namespaces.Clear(); namespacesObfuscated.Clear(); classes.Clear(); haveSystemEntities = false; methodsCount = classesCount = subclassesCount = skippedCount = 0; lastModified = File.GetLastWriteTime(filename); List <RenamedClass> subclasses = new List <RenamedClass>(); if (types != null) { foreach (NanoXmlElement element in types.ChildElements) { if (string.Compare(element.Name, "renamedClass", StringComparison.Ordinal) == 0) { RenamedClass c = new RenamedClass(element, this); classesCount++; if (c.OwnerClassName == null) { classes.Add(c); if (c.Name.NameOld != null && c.Name.NameOld.Namespace != null) { haveSystemEntities |= c.Name.NameOld.Namespace.StartsWith("System."); } } else { subclasses.Add(c); } methodsCount += c.MethodsCount; if (c.ModuleNew != null && !modules.Contains(c.ModuleNew)) { modules.Add(c.ModuleNew); } if (c.Name.NameOld != null && !string.IsNullOrEmpty(c.Name.NameOld.Namespace) && !namespaces.Contains(c.Name.NameOld.Namespace)) { namespaces.Add(c.Name.NameOld.Namespace); } if (c.Name.NameNew != null && !string.IsNullOrEmpty(c.Name.NameNew.Namespace) && !namespacesObfuscated.Contains(c.Name.NameNew.Namespace)) { namespacesObfuscated.Add(c.Name.NameNew.Namespace); } } } } types = (NanoXmlElement)doc["skippedTypes"]; if (types != null) { foreach (NanoXmlElement element in types.ChildElements) { if (string.Compare(element.Name, "skippedClass", StringComparison.Ordinal) == 0) { skippedCount++; classesCount++; RenamedClass c = new RenamedClass(element, this); if (c.OwnerClassName == null) { classes.Add(c); } else { subclasses.Add(c); } } } } timingParsing = sw.ElapsedMilliseconds; Debug.WriteLine("Parsing: " + timingParsing + " ms"); sw.Reset(); sw.Start(); foreach (RenamedClass subclass in subclasses) { RenamedClass c = (RenamedClass)SearchForOldName(subclass.OwnerClassName); if (c == null) { c = (RenamedClass)SearchForNewName(subclass.OwnerClassName); } if (c != null) { c.Items.Add(subclass); subclass.OwnerClass = c; subclassesCount++; continue; } Debug.WriteLine("Failed to find root class: " + subclass.OwnerClassName); classes.Add(subclass); } timingSubclasses = sw.ElapsedMilliseconds; Debug.WriteLine("Subclasses processing: " + timingSubclasses + " ms"); sw.Reset(); sw.Start(); foreach (RenamedClass c in classes) { c.UpdateNewNames(this); } timingUpdateNewNames = sw.ElapsedMilliseconds; Debug.WriteLine("Values updating: " + timingUpdateNewNames + " ms"); Debug.WriteLine("Total elapsed: " + TimingTotal + " ms"); sw.Stop(); }