protected virtual unsafe PropertyBuilder DefineProperty(TypeBuilder typeBuilder, BCSYM_Property *pProperty) { string name = new string(*((char **)(pProperty + 12))); BCSYM * pSymbol = BCSYM.DigThroughNamedType(*((BCSYM * modopt(IsConst) modopt(IsConst) *)(pProperty + 80))); Type returnType = this.GetType(typeBuilder, pSymbol); PropertyAttributes attributes = (PropertyAttributes)((*(((byte *)(pProperty + 0x4a))) & 2) << 8); Type[] parameterTypes = this.GetParameterTypes(typeBuilder, (BCSYM_Proc *)pProperty); PropertyBuilder builder = typeBuilder.DefineProperty(name, attributes, returnType, parameterTypes); int num2 = *((int *)(pProperty + 0x80)); if (num2 != 0) { BCSYM_Proc * pProc = (BCSYM_Proc *)num2; MethodBuilder mdBuilder = this.DefineMethod(typeBuilder, pProc); builder.SetGetMethod(mdBuilder); } int num = *((int *)(pProperty + 0x84)); if (num != 0) { BCSYM_Proc * procPtr = (BCSYM_Proc *)num; MethodBuilder builder2 = this.DefineMethod(typeBuilder, procPtr); builder.SetSetMethod(builder2); } return(builder); }
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()); } }
protected virtual unsafe FieldBuilder DefineField(TypeBuilder typeBuilder, BCSYM_Variable *pField) { string fieldName = new string(*((char **)(pField + 12))); BCSYM * pSymbol = BCSYM.DigThroughNamedType(*((BCSYM * modopt(IsConst) modopt(IsConst) *)(pField + 80))); Type type = this.GetType(typeBuilder, pSymbol); FieldAttributes fieldAttributes = GetFieldAttributes(pField); return(typeBuilder.DefineField(fieldName, type, fieldAttributes)); }
protected virtual unsafe MethodBuilder DefineMethod(TypeBuilder typeBuilder, BCSYM_Proc *pProc) { string name = new string(*((char **)(pProc + 12))); BCSYM * pSymbol = BCSYM.DigThroughNamedType(*((BCSYM * modopt(IsConst) modopt(IsConst) *)(pProc + 80))); Type returnType = this.GetType(typeBuilder, pSymbol); MethodAttributes methodAttributes = GetMethodAttributes(pProc); Type[] parameterTypes = this.GetParameterTypes(typeBuilder, pProc); return(typeBuilder.DefineMethod(name, methodAttributes, returnType, parameterTypes)); }
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)