using System;
using System.Runtime.InteropServices;
enum TokenType { String, Keyword, Ident, Number, Symbol }
public class Test
{
public static void Main()
{
// your code goes here
Console.WriteLine(Marshal.SizeOf(typeof(Token0)));
Console.WriteLine(Marshal.SizeOf(typeof(Token1)));
Console.WriteLine(Marshal.SizeOf(typeof(Token2)));
}
}
[StructLayout(LayoutKind.Sequential)]
class Token2
{
TokenType Type;
object Value;
int Value1;
public override string ToString() { return "Type: " + Type.ToString() + "\t\tValue: " + Value.ToString(); }
}
[StructLayout(LayoutKind.Sequential)]
class Token1
{
TokenType Type;
object Value;
public override string ToString() { return "Type: " + Type.ToString() + "\t\tValue: " + Value.ToString(); }
}
[StructLayout(LayoutKind.Sequential)]
struct Token0
{
TokenType Type;
object Value;
public override string ToString() { return "Type: " + Type.ToString() + "\t\tValue: " + Value.ToString(); }
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXM7CgplbnVtIFRva2VuVHlwZSB7IFN0cmluZywgS2V5d29yZCwgSWRlbnQsIE51bWJlciwgU3ltYm9sIH0KCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgkJQ29uc29sZS5Xcml0ZUxpbmUoTWFyc2hhbC5TaXplT2YodHlwZW9mKFRva2VuMCkpKTsKCQlDb25zb2xlLldyaXRlTGluZShNYXJzaGFsLlNpemVPZih0eXBlb2YoVG9rZW4xKSkpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKE1hcnNoYWwuU2l6ZU9mKHR5cGVvZihUb2tlbjIpKSk7Cgl9Cn0KCltTdHJ1Y3RMYXlvdXQoTGF5b3V0S2luZC5TZXF1ZW50aWFsKV0KY2xhc3MgVG9rZW4yCnsKICAgIFRva2VuVHlwZSBUeXBlOwogICAgb2JqZWN0IFZhbHVlOwogICAgaW50IFZhbHVlMTsKICAgIHB1YmxpYyBvdmVycmlkZSBzdHJpbmcgVG9TdHJpbmcoKSB7IHJldHVybiAiVHlwZTogIiArIFR5cGUuVG9TdHJpbmcoKSArICJcdFx0VmFsdWU6ICIgKyBWYWx1ZS5Ub1N0cmluZygpOyB9Cn0KCltTdHJ1Y3RMYXlvdXQoTGF5b3V0S2luZC5TZXF1ZW50aWFsKV0KY2xhc3MgVG9rZW4xCnsKICAgIFRva2VuVHlwZSBUeXBlOwogICAgb2JqZWN0IFZhbHVlOwogICAgcHVibGljIG92ZXJyaWRlIHN0cmluZyBUb1N0cmluZygpIHsgcmV0dXJuICJUeXBlOiAiICsgVHlwZS5Ub1N0cmluZygpICsgIlx0XHRWYWx1ZTogIiArIFZhbHVlLlRvU3RyaW5nKCk7IH0KfQoKW1N0cnVjdExheW91dChMYXlvdXRLaW5kLlNlcXVlbnRpYWwpXQpzdHJ1Y3QgVG9rZW4wCnsKICAgIFRva2VuVHlwZSBUeXBlOwogICAgb2JqZWN0IFZhbHVlOwogICAgcHVibGljIG92ZXJyaWRlIHN0cmluZyBUb1N0cmluZygpIHsgcmV0dXJuICJUeXBlOiAiICsgVHlwZS5Ub1N0cmluZygpICsgIlx0XHRWYWx1ZTogIiArIFZhbHVlLlRvU3RyaW5nKCk7IH0KfQ==