Inverted control flow, engine as library
This commit is contained in:
32
luprex/core/cpp/driver.cpp
Normal file
32
luprex/core/cpp/driver.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
#include "driver.hpp"
|
||||
#include <map>
|
||||
#include <iostream>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
|
||||
|
||||
void driver_drive(DrivenEngine *de) {
|
||||
const int MAXINPUT = 1000;
|
||||
char buf[MAXINPUT];
|
||||
int nbytes; const char *bytes;
|
||||
DrivenEngine::set(de);
|
||||
de->drv_logmode_none();
|
||||
de->drv_set_lua_source(util::read_lua_source("lua"));
|
||||
de->drv_invoke_engine_init();
|
||||
while (!de->drv_get_stop_driver()) {
|
||||
if (de->drv_get_rescan_lua_source()) {
|
||||
de->drv_set_lua_source(util::read_lua_source("lua"));
|
||||
}
|
||||
de->drv_peek_outgoing(0, &nbytes, &bytes);
|
||||
if (nbytes > 0) {
|
||||
fwrite(bytes, 1, nbytes, stdout);
|
||||
}
|
||||
if (fgets(buf, MAXINPUT, stdin)) {
|
||||
de->drv_recv_incoming(0, strlen(buf), buf);
|
||||
}
|
||||
de->drv_invoke_engine_update();
|
||||
}
|
||||
DrivenEngine::set(nullptr);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user