我有一个C++库,它有一个实现了自定义编程语言的虚拟机(称为'VM')的类。这种语言有一些可以执行的不同指令,其中有“读取输入值”指令。 VM可以以两种模式运行:逐步执行单个指令(直到机器完成)或一次执行所有指令。它也可以用于两个应用程序:控制台和GUI应用程序。从输入设计中读取控制台和GUI应用程序的值(C++)
到目前为止,我只有一个控制台应用程序。当执行“输入读取值”指令时,它只是使用std :: cin读取值,因此虚拟机停止,直到提交输入。当我试图为虚拟机创建一个GUI时,就会出现问题。我将使用典型的文本输入而不是std::cin
。
现在的问题是:您认为从执行指令的角度来建模这样的问题最好的方法是什么?执行“输入读取值”指令时虚拟机应该如何工作?在用户单击“执行单个指令”之前,他不知道将要执行什么类型的指令,因此在指令执行之前他不能提交输入。
我在考虑给VM添加一个新的状态属性:{working|awaiting_input}
。在“读取”指令运行期间,机器应暂停,直到它获得输入。当GUI层获取来自用户的输入时,它会调用虚拟机的新方法,这会额外唤醒虚拟机(以完成单个指令或全部虚拟机)。你能想出一个更简单的解决方案吗(例如不需要添加一个状态属性)?
是的,当确认输入时回调VM(例如用户按下输入文本框内),并让它有正常的消息循环(如WinAPI)。 –