public static ScriptInstruction Read(Script script, BinaryReader reader) { long offset = reader.BaseStream.Position; ScriptOperand opcodeToken = new ScriptOperand(reader, ScriptArgument.Opcode); if (!opcodeToken.IsOpcode) { return(new Invalid(script, offset, opcodeToken)); } ScriptOpcode opcode = opcodeToken.GetOpcode(); switch (opcode) { case ScriptOpcode.Call: return(new Call(script, offset, reader)); case ScriptOpcode.Switch: return(new Switch(script, offset, reader)); case ScriptOpcode.If: return(new If(script, offset, reader)); default: return(new ScriptInstruction(script, offset, reader, opcode)); } }
public static ScriptInstruction Read(Script script, BinaryReader reader) { long offset = reader.BaseStream.Position; ScriptOperand opcodeToken = new ScriptOperand(reader, ScriptArgument.Opcode); if (!opcodeToken.IsOpcode) return new Invalid(script, offset, opcodeToken); ScriptOpcode opcode = opcodeToken.GetOpcode(); switch (opcode) { case ScriptOpcode.Call: return new Call(script, offset, reader); case ScriptOpcode.Switch: return new Switch(script, offset, reader); case ScriptOpcode.If: return new If(script, offset, reader); default: return new ScriptInstruction(script, offset, reader, opcode); } }