Пример #1
0
        private string BuildName(string className, string ownName, bool useNew, bool isShort)
        {
            if (className == null)
            {
                className = string.Empty;
            }
            else
            {
                className = className + ".";
            }

            string result;

            if (resultType == null)
            {
                result = "void";
            }
            else
            {
                EntityName resultName = useNew ? resultType.NameNew : resultType.NameOld;
                result = SystemTypeProcessor.SimplifyType(resultName, !isShort);
            }

            if (entityType == EntityType.Method)
            {
                return(string.Format("{0} {1}{2}({3})", result, className, ownName, MethodParamList(isShort, useNew)));
            }

            if (resultType != null)
            {
                return(string.Format("{0} {1}{2}", result, className, ownName));
            }

            return(string.Format("{0}{1}", className, ownName));
        }
        public RenamedClass SearchForNewName(EntityName target)
        {
            if (name.NameNew != null)
            {
                if (target.Compare(NameNew))
                {
                    return(this);
                }
                if (target.Compare(NameNewFull))
                {
                    return(this);
                }
            }

            foreach (RenamedBase item in items)
            {
                if (item.EntityType != EntityType.Class)
                {
                    continue;
                }

                RenamedClass c = (RenamedClass)item;
                c = c.SearchForNewName(target);
                if (c != null)
                {
                    return(c);
                }
            }

            return(null);
        }
Пример #3
0
        public Renamed(string nameOld, string nameNew = null)
        {
            if (string.IsNullOrEmpty(nameOld))
            {
                throw new ArgumentNullException(nameof(nameOld));
            }

            this.nameOld = new EntityName(nameOld);
            this.nameNew = string.IsNullOrEmpty(nameNew) ? (EntityName)this.nameOld.Clone() : new EntityName(nameNew);
        }
Пример #4
0
        public Renamed(EntityName nameOld, EntityName nameNew)
        {
            if (nameOld == null)
            {
                throw new ArgumentNullException(nameof(nameOld));
            }

            this.nameOld = nameOld;
            this.nameNew = nameNew;

            if (this.nameNew == null)
            {
                this.nameNew = (EntityName)nameOld.Clone();
            }
        }
Пример #5
0
        public Entity(string s)
        {
            methodParams = BuildParams(ref s);
            s            = s.TrimEnd(' ');
            int i = s.IndexOf(' ');

            if (i == -1)
            {
                name = new EntityName(s);
            }
            else
            {
                string res = s.Substring(0, i);
                if (res != "void")
                {
                    result = new EntityName(res);
                }
                name = new EntityName(s.Substring(i).TrimStart(' '));
            }
        }
Пример #6
0
        public bool Compare(string name)
        {
            int i = name.IndexOf('(');

            EntityName ename = new EntityName(name.Substring(0, i));

            if (!ename.Compare(this.name.NameNew, false))
            {
                return(false);
            }

            int    j = name.IndexOf(')', i);
            string p = name.Substring(i + 1, j - i - 1);

            string[] strings = p.Split(new string[] { ", ", "," }, StringSplitOptions.RemoveEmptyEntries);
            if (strings.Length != methodParams.Count)
            {
                return(false);
            }

            for (int k = 0; k < strings.Length; k++)
            {
                string s = strings[k].Trim(' ');
                if (s == "*")
                {
                    continue;
                }

                EntityName e = new EntityName(s);
                if (!e.Compare(methodParams[k].NameNew, true))
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #7
0
        public RenamedItem(IMappingEntity reader, RenamedClass owner)
        {
            this.owner = owner;

            try
            {
                this.owner = owner;
                entityType = reader.Type;
                string str = reader.Name;

                int i;
                if ((i = str.IndexOf(' ')) != -1)
                {
                    string s = str.Substring(0, i);
                    int    k = s.IndexOf('/');
                    if (k != -1)
                    {
                        resultType = new RenamedParam(s.Substring(0, k) + "." + s.Substring(k + 1));
                    }
                    else
                    {
                        resultType = new RenamedParam(s);
                    }
                    str = str.Substring(i + 1);
                }

                if ((i = str.IndexOf("::")) != -1)
                {
                    str = str.Substring(i + 2);
                }

                if ((i = str.IndexOf('(')) != -1)
                {
                    methodParams = new List <RenamedParam>();
                    foreach (string s in EntityName.ParseList(str, i + 1, ')'))
                    {
                        int k = s.IndexOf('/');
                        if (k != -1)
                        {
                            methodParams.Add(new RenamedParam(s.Substring(0, k) + "." + s.Substring(k + 1)));
                        }
                        else
                        {
                            methodParams.Add(new RenamedParam(s));
                        }
                    }

                    str = str.Substring(0, i);

                    i = str.IndexOf('[');
                    if (i != -1 && str[i + 2] == ']')
                    {
                        str = str.Substring(0, i);
                    }
                }

                string strNew = reader.NewName;
                if (strNew != "dropped")
                {
                    name = new Renamed(str, strNew);
                }
                else
                {
                    name = new Renamed(str);
                }

                skipReason = reader.SkipReason;
                if (name.NameOld.Name == "ctor")
                {
                    entityType = EntityType.Constructor;
                }
            }
            catch (Exception e)
            {
                throw new ObfuscarParserException("Failed to process item element", e, reader.Path);
            }
        }
Пример #8
0
 public Entity(Entity entity, RenamedBase item, IList <EntityName> methodParams)
 {
     this.methodParams = new List <EntityName>(methodParams);
     result            = entity.result;
     name = new EntityName(item.NameOldFull + "." + entity.name.Name);
 }
Пример #9
0
 public Renamed(Renamed nameOld, EntityName nameNew)
 {
     this.nameNew = nameNew;
     this.nameOld = nameOld.nameOld;
 }