public override string ToString()
{
switch (Type)
{
case KecaknoahILCodeType.Label:
return $"{StringValue}:";
case KecaknoahILCodeType.PushInteger:
return $"Push.int {IntegerValue}";
case KecaknoahILCodeType.PushSingle:
return $"Push.single {FloatValue}";
case KecaknoahILCodeType.PushDouble:
return $"Push.double {FloatValue}";
case KecaknoahILCodeType.PushString:
return $"Push.string \"{StringValue}\"";
case KecaknoahILCodeType.PushBoolean:
return $"Push.bool {BooleanValue}";
case KecaknoahILCodeType.PushNil:
return $"Push.nil";
case KecaknoahILCodeType.Jump:
return $"Jump to {IntegerValue}";
case KecaknoahILCodeType.FalseJump:
return $"FalseJump to {IntegerValue}";
case KecaknoahILCodeType.TrueJump:
return $"TrueJump to {IntegerValue}";
case KecaknoahILCodeType.Call:
return $"Call with {IntegerValue} arguments";
case KecaknoahILCodeType.IndexerCall:
return $"Indexer with {IntegerValue} arguments";
case KecaknoahILCodeType.LoadMember:
return $"LoadMember \"{StringValue}\"";
case KecaknoahILCodeType.LoadObject:
return $"LoadObject \"{StringValue}\"";
case KecaknoahILCodeType.PushArgument:
return $"Push Argument#{IntegerValue}";
case KecaknoahILCodeType.LoadVarg:
return $"Load Vargs with {IntegerValue} arguments";
case KecaknoahILCodeType.StartCoroutine:
return $"Start \"{StringValue}\" with {IntegerValue} arguments";
case KecaknoahILCodeType.ResumeCoroutine:
return $"Resume \"{StringValue}\"";
default:
return Type.ToString();
}
}
}