uint GetSignatureInternId(CallingConvention callingConvention, IEnumerable<IParameterTypeInformation> parameters, IEnumerable<IParameterTypeInformation> extraArgumentTypes,
IEnumerable<ICustomModifier> returnValueCustomModifiers, bool returnValueIsByRef, ITypeReference returnType) {
Contract.Requires(parameters != null);
Contract.Requires(extraArgumentTypes != null);
Contract.Requires(returnValueCustomModifiers != null);
Contract.Requires(returnType != null);
uint requiredParameterTypesInternedId = this.GetParameterTypeListInternId(parameters.GetEnumerator());
uint extraArgumentTypesInteredId = this.GetParameterTypeListInternId(extraArgumentTypes.GetEnumerator());
uint returnValueCustomModifiersInternedId = this.GetCustomModifierListInternId(returnValueCustomModifiers.GetEnumerator());
uint returnTypeReferenceInternedId = this.GetTypeReferenceInternId(returnType);
foreach (SignatureStore signatureStore in this.SignatureHashtable.GetValuesFor(requiredParameterTypesInternedId)) {
if (
signatureStore.CallingConvention == callingConvention
&& signatureStore.RequiredParameterListInternedId == requiredParameterTypesInternedId
&& signatureStore.ExtraParameterListInternedId == extraArgumentTypesInteredId
&& signatureStore.ReturnValueCustomModifiersListInteredId == returnValueCustomModifiersInternedId
&& signatureStore.ReturnValueIsByRef == returnValueIsByRef
&& signatureStore.ReturnTypeReferenceInternedId == returnTypeReferenceInternedId
) {
return signatureStore.InternedId;
}
}
SignatureStore signatureStore1 = new SignatureStore(callingConvention, requiredParameterTypesInternedId, extraArgumentTypesInteredId, returnValueIsByRef, returnValueCustomModifiersInternedId, returnTypeReferenceInternedId, 0, this.CurrentSignatureInternValue++);
this.SignatureHashtable.Add(requiredParameterTypesInternedId, signatureStore1);
return signatureStore1.InternedId;
}