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); }
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); }