Exemplo n.º 1
0
        public static TypeNameParseInfo Parse(string name)
        {
            TypeNameParseInfo info = new TypeNameParseInfo();

            char[] data = name.ToCharArray();
            Unity.IL2CPP.Common.TypeNameParser parser = new Unity.IL2CPP.Common.TypeNameParser(data, 0, data.Length, info, false);
            return(parser.Parse(true) ? info : null);
        }
Exemplo n.º 2
0
        private bool ParseTypeArgumentsOptional(ref int arity)
        {
            bool flag2;

            this.SkipWhites();
            if (this.IsEOL)
            {
                return(true);
            }
            if (!this.CurrentIs('['))
            {
                return(true);
            }
            if ((this.NextWillBe(']', true) || this.NextWillBe(',', true)) || this.NextWillBe('*', true))
            {
                return(true);
            }
            if (!this.Next(true))
            {
                return(false);
            }
            this._info.TypeArguments.Capacity = arity;
Label_0083:
            flag2 = false;
            if (this.CurrentIs('['))
            {
                flag2 = true;
                if (!this.Next(true))
                {
                    return(false);
                }
            }
            TypeNameParseInfo info = new TypeNameParseInfo();

            Unity.IL2CPP.Common.TypeNameParser parser = new Unity.IL2CPP.Common.TypeNameParser(this._data, this._p, this._end, info, true);
            if (!parser.Parse(flag2))
            {
                return(false);
            }
            this._p = parser._p;
            this._info.TypeArguments.Add(info);
            this.SkipWhites();
            if (this.IsEOL)
            {
                return(false);
            }
            if (flag2)
            {
                if (!this.CurrentIs(']'))
                {
                    return(false);
                }
                if (!this.Next(true))
                {
                    return(false);
                }
            }
            if (!this.CurrentIs(']'))
            {
                if (!this.CurrentIs(','))
                {
                    return(false);
                }
                if (!this.Next(true))
                {
                    return(false);
                }
                goto Label_0083;
            }
            if (this._info.TypeArguments.Count != arity)
            {
                return(false);
            }
            this.Next(true);
            return(true);
        }