summaryrefslogtreecommitdiff
path: root/external/ikvm/reflect/Emit/TypeBuilder.cs
diff options
context:
space:
mode:
Diffstat (limited to 'external/ikvm/reflect/Emit/TypeBuilder.cs')
-rw-r--r--external/ikvm/reflect/Emit/TypeBuilder.cs56
1 files changed, 7 insertions, 49 deletions
diff --git a/external/ikvm/reflect/Emit/TypeBuilder.cs b/external/ikvm/reflect/Emit/TypeBuilder.cs
index aa6d264290..30cde68c8e 100644
--- a/external/ikvm/reflect/Emit/TypeBuilder.cs
+++ b/external/ikvm/reflect/Emit/TypeBuilder.cs
@@ -571,12 +571,11 @@ namespace IKVM.Reflection.Emit
{
layout = (LayoutKind)val;
}
- StructLayoutAttribute attr = new StructLayoutAttribute(layout);
- attr.Pack = (int?)customBuilder.GetFieldValue("Pack") ?? 0;
- attr.Size = (int?)customBuilder.GetFieldValue("Size") ?? 0;
- attr.CharSet = customBuilder.GetFieldValue<CharSet>("CharSet") ?? CharSet.None;
+ pack = (short)((int?)customBuilder.GetFieldValue("Pack") ?? 0);
+ size = (int?)customBuilder.GetFieldValue("Size") ?? 0;
+ CharSet charSet = customBuilder.GetFieldValue<CharSet>("CharSet") ?? CharSet.None;
attribs &= ~TypeAttributes.LayoutMask;
- switch (attr.Value)
+ switch (layout)
{
case LayoutKind.Auto:
attribs |= TypeAttributes.AutoLayout;
@@ -589,7 +588,7 @@ namespace IKVM.Reflection.Emit
break;
}
attribs &= ~TypeAttributes.StringFormatMask;
- switch (attr.CharSet)
+ switch (charSet)
{
case CharSet.None:
case CharSet.Ansi:
@@ -602,8 +601,6 @@ namespace IKVM.Reflection.Emit
attribs |= TypeAttributes.UnicodeClass;
break;
}
- pack = (short)attr.Pack;
- size = attr.Size;
hasLayout = pack != 0 || size != 0;
}
@@ -870,45 +867,6 @@ namespace IKVM.Reflection.Emit
return methods;
}
- public override StructLayoutAttribute StructLayoutAttribute
- {
- get
- {
- LayoutKind layout;
- switch (attribs & TypeAttributes.LayoutMask)
- {
- case TypeAttributes.ExplicitLayout:
- layout = LayoutKind.Explicit;
- break;
- case TypeAttributes.SequentialLayout:
- layout = LayoutKind.Sequential;
- break;
- default:
- layout = LayoutKind.Auto;
- break;
- }
- StructLayoutAttribute attr = new StructLayoutAttribute(layout);
- attr.Pack = (ushort)pack;
- attr.Size = size;
- switch (attribs & TypeAttributes.StringFormatMask)
- {
- case TypeAttributes.AutoClass:
- attr.CharSet = CharSet.Auto;
- break;
- case TypeAttributes.UnicodeClass:
- attr.CharSet = CharSet.Unicode;
- break;
- case TypeAttributes.AnsiClass:
- attr.CharSet = CharSet.Ansi;
- break;
- default:
- attr.CharSet = CharSet.None;
- break;
- }
- return attr;
- }
- }
-
public override Type DeclaringType
{
get { return owner as TypeBuilder; }
@@ -1194,9 +1152,9 @@ namespace IKVM.Reflection.Emit
get { return underlyingType.DeclaringType; }
}
- public override StructLayoutAttribute StructLayoutAttribute
+ public override bool __GetLayout(out int packingSize, out int typeSize)
{
- get { return underlyingType.StructLayoutAttribute; }
+ return underlyingType.__GetLayout(out packingSize, out typeSize);
}
public override Type[] GetGenericArguments()