protected virtual unsafe void DefineGenericTypeParameter(TypeBuilder typeBuilder, GenericTypeParameterBuilder paramBuilder, BCSYM_GenericParam *pParam) { paramBuilder.SetGenericParameterAttributes(GetGenericParameterAttributes(pParam)); List <Type> list = new List <Type>(); for (BCSYM_GenericConstraint *constraintPtr = *((BCSYM_GenericConstraint **)(pParam + 0x54)); constraintPtr != null; constraintPtr = *((BCSYM_GenericConstraint **)(constraintPtr + 8))) { if (((byte)(*(((byte *)constraintPtr)) == 0x26)) != 0) { BCSYM *pSymbol = BCSYM.DigThroughNamedType(*((BCSYM * modopt(IsConst) modopt(IsConst) *)(constraintPtr + 12))); Type item = this.GetType(typeBuilder, pSymbol); if (BCSYM.IsInterface(pSymbol)) { list.Add(item); } else { paramBuilder.SetBaseTypeConstraint(item); } } } if (list.Count > 0) { paramBuilder.SetInterfaceConstraints(list.ToArray()); } }
private unsafe bool Equals(BCSYM* pSymbol, Type type) { int num2; if (pSymbol == null) { RaiseException(GetLastHResultError(), 0, 0, null); } if (type == null) { RaiseException(GetLastHResultError(), 0, 0, null); } bool flag = false; byte num = *((byte*) pSymbol); int num3 = num * 3; if (((byte) (num3[&?s_rgBilkindInfo@BCSYM@@1QBUBilkindInfo@@B] & 4)) != 0)