public MethodSig(CLIFile pCLIFile, byte[] pSignature, ref int pCursor) { CLIFile = pCLIFile; byte callingConvention = pSignature[pCursor++]; HasThis = (callingConvention & CallingConvention.HasThis) != 0; ExplicitThis = (callingConvention & CallingConvention.ExplicitThis) != 0; if ((callingConvention & CallingConvention.HasThis) != 0) callingConvention ^= CallingConvention.HasThis; if ((callingConvention & CallingConvention.ExplicitThis) != 0) callingConvention ^= CallingConvention.ExplicitThis; Default = callingConvention == CallingConvention.Default; CCall = callingConvention == CallingConvention.CCall; STDCall = callingConvention == CallingConvention.STDCall; ThisCall = callingConvention == CallingConvention.ThisCall; FastCall = callingConvention == CallingConvention.FastCall; VarArg = callingConvention == CallingConvention.VarArgs; Generic = callingConvention == CallingConvention.Generic; if (Generic) GenParamCount = CLIFile.ReadCompressedUnsigned(pSignature, ref pCursor); uint paramCount = CLIFile.ReadCompressedUnsigned(pSignature, ref pCursor); Params = new List<SigParam>((int)paramCount); RetType = new SigRetType(CLIFile, pSignature, ref pCursor); if (paramCount > 0) { for (uint paramIndex = 0; paramIndex < paramCount; ++paramIndex) { if (pSignature[pCursor] == (byte)SigElementType.Sentinel) { HasSentinel = true; SentinelIndex = paramIndex; ++pCursor; } Params.Add(new SigParam(CLIFile, pSignature, ref pCursor)); } } }
public MethodSig(CLIFile pCLIFile, byte[] pSignature, ref int pCursor) { CLIFile = pCLIFile; byte callingConvention = pSignature[pCursor++]; HasThis = (callingConvention & CallingConvention.HasThis) != 0; ExplicitThis = (callingConvention & CallingConvention.ExplicitThis) != 0; if ((callingConvention & CallingConvention.HasThis) != 0) { callingConvention ^= CallingConvention.HasThis; } if ((callingConvention & CallingConvention.ExplicitThis) != 0) { callingConvention ^= CallingConvention.ExplicitThis; } Default = callingConvention == CallingConvention.Default; CCall = callingConvention == CallingConvention.CCall; STDCall = callingConvention == CallingConvention.STDCall; ThisCall = callingConvention == CallingConvention.ThisCall; FastCall = callingConvention == CallingConvention.FastCall; VarArg = callingConvention == CallingConvention.VarArgs; Generic = callingConvention == CallingConvention.Generic; if (Generic) { GenParamCount = CLIFile.ReadCompressedUnsigned(pSignature, ref pCursor); } uint paramCount = CLIFile.ReadCompressedUnsigned(pSignature, ref pCursor); Params = new List <SigParam>((int)paramCount); RetType = new SigRetType(CLIFile, pSignature, ref pCursor); if (paramCount > 0) { for (uint paramIndex = 0; paramIndex < paramCount; ++paramIndex) { if (pSignature[pCursor] == (byte)SigElementType.Sentinel) { HasSentinel = true; SentinelIndex = paramIndex; ++pCursor; } Params.Add(new SigParam(CLIFile, pSignature, ref pCursor)); } } }