|
|
|
@ -337,7 +337,10 @@ namespace ICSharpCode.Decompiler.Disassembler
@@ -337,7 +337,10 @@ namespace ICSharpCode.Decompiler.Disassembler
|
|
|
|
|
output.WriteLine(" = {"); |
|
|
|
|
output.Indent(); |
|
|
|
|
var blob = metadata.GetBlobReader(secdecl.PermissionSet); |
|
|
|
|
if ((char)blob.ReadByte() != '.') throw new InvalidOperationException("sanity check!"); |
|
|
|
|
if ((char)blob.ReadByte() != '.') { |
|
|
|
|
blob.Reset(); |
|
|
|
|
WriteXmlSecurityDeclaration(blob.ReadUTF8(blob.RemainingBytes)); |
|
|
|
|
} else { |
|
|
|
|
int count = blob.ReadCompressedInteger(); |
|
|
|
|
for (int i = 0; i < count; i++) { |
|
|
|
|
var typeName = blob.ReadSerializedString(); |
|
|
|
@ -378,11 +381,18 @@ namespace ICSharpCode.Decompiler.Disassembler
@@ -378,11 +381,18 @@ namespace ICSharpCode.Decompiler.Disassembler
|
|
|
|
|
output.Write(','); |
|
|
|
|
output.WriteLine(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
output.Unindent(); |
|
|
|
|
output.WriteLine("}"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void WriteXmlSecurityDeclaration(string xml) |
|
|
|
|
{ |
|
|
|
|
output.Write("property string XML = "); |
|
|
|
|
output.Write("string('{0}')", DisassemblerHelpers.EscapeString(xml).Replace("'", "\'")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
enum TypeKind |
|
|
|
|
{ |
|
|
|
|
Primitive, |
|
|
|
@ -709,7 +719,8 @@ namespace ICSharpCode.Decompiler.Disassembler
@@ -709,7 +719,8 @@ namespace ICSharpCode.Decompiler.Disassembler
|
|
|
|
|
output.Write("unsigned int"); |
|
|
|
|
break; |
|
|
|
|
case 0x26: // NATIVE_TYPE_FUNC
|
|
|
|
|
goto default; // ??
|
|
|
|
|
output.Write("Func"); |
|
|
|
|
break; |
|
|
|
|
case 0x2a: // NATIVE_TYPE_ARRAY
|
|
|
|
|
if (blob.RemainingBytes > 0) |
|
|
|
|
WriteNativeType(ref blob); |
|
|
|
@ -755,6 +766,7 @@ namespace ICSharpCode.Decompiler.Disassembler
@@ -755,6 +766,7 @@ namespace ICSharpCode.Decompiler.Disassembler
|
|
|
|
|
break; |
|
|
|
|
case 0x1d: // SafeArray
|
|
|
|
|
output.Write("safearray "); |
|
|
|
|
if (blob.RemainingBytes > 0) { |
|
|
|
|
byte elementType = blob.ReadByte(); |
|
|
|
|
switch (elementType) { |
|
|
|
|
case 0: // None
|
|
|
|
@ -820,6 +832,7 @@ namespace ICSharpCode.Decompiler.Disassembler
@@ -820,6 +832,7 @@ namespace ICSharpCode.Decompiler.Disassembler
|
|
|
|
|
output.Write(elementType.ToString()); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case 0x1e: // FixedArray
|
|
|
|
|
output.Write("fixed array"); |
|
|
|
|