Beispiel #1
0
        void renameResources(Module module)
        {
            var renamedTypes = new List<TypeInfo>();
            foreach (var type in module.getAllTypes()) {
                var info = memberInfos.type(type);
                if (info.oldFullName != info.type.TypeDefinition.FullName)
                    renamedTypes.Add(info);
            }
            if (renamedTypes.Count == 0)
                return;

            new ResourceRenamer(module).rename(renamedTypes);
        }
Beispiel #2
0
        void removeOneClassNamespaces(Module module)
        {
            var nsToTypes = new Dictionary<string, List<TypeDef>>(StringComparer.Ordinal);

            foreach (var typeDef in module.getAllTypes()) {
                List<TypeDef> list;
                var ns = typeDef.TypeDefinition.Namespace;
                if (string.IsNullOrEmpty(ns))
                    continue;
                if (module.ObfuscatedFile.NameChecker.isValidNamespaceName(ns))
                    continue;
                if (!nsToTypes.TryGetValue(ns, out list))
                    nsToTypes[ns] = list = new List<TypeDef>();
                list.Add(typeDef);
            }

            var sortedNamespaces = new List<List<TypeDef>>(nsToTypes.Values);
            sortedNamespaces.Sort((a, b) => {
                return string.CompareOrdinal(a[0].TypeDefinition.Namespace, b[0].TypeDefinition.Namespace);
            });
            foreach (var list in sortedNamespaces) {
                const int maxClasses = 1;
                if (list.Count != maxClasses)
                    continue;
                var ns = list[0].TypeDefinition.Namespace;
                Log.v("Removing namespace: {0}", Utils.removeNewlines(ns));
                foreach (var type in list)
                    memberInfos.type(type).newNamespace = "";
            }
        }
Beispiel #3
0
        void renameResources(Module module)
        {
            var renamedTypes = new List<TypeInfo>();
            foreach (var type in module.getAllTypes()) {
                var info = memberInfos.type(type);
                if (info.oldFullName != info.type.TypeDefinition.FullName)
                    renamedTypes.Add(info);
            }
            if (renamedTypes.Count == 0)
                return;

            // Rename the longest names first. Otherwise eg. b.g.resources could be renamed
            // Class0.g.resources instead of Class1.resources when b.g was renamed Class1.
            renamedTypes.Sort((a, b) => Utils.compareInt32(b.oldFullName.Length, a.oldFullName.Length));

            renameResourceNamesInCode(module, renamedTypes);
            renameResources(module, renamedTypes);
        }