Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 3
0
        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();
        }