Lots of work on removing malloc from driver

This commit is contained in:
2022-02-17 20:02:08 -05:00
parent 9d7bf8b0f9
commit 467f25b927
17 changed files with 1301 additions and 197 deletions

View File

@@ -7,44 +7,21 @@
#include "source.hpp"
#include <iostream>
struct EngineMaker {
const char *name;
DrivenEngineMaker func;
};
static EngineMaker makers[] = {
{ "textgame", make_TextGame },
{ "lpxclient", make_LpxClient },
{ "lpxserver", make_LpxServer },
{ "driverlistentest", make_DriverListenTest },
{ "driverwebservertest", make_DriverWebServerTest },
{ "driverdnsfailtest", make_DriverDNSFailTest },
{ "driverprintclocktest", make_DriverPrintClockTest },
{ "unittest", make_RunUnitTests },
{ nullptr, nullptr },
};
static void usage() {
std::cerr << "Usage: main <mode>" << std::endl;
for (int i = 0; makers[i].name != nullptr; i++) {
std::cerr << " <mode> can be: " << makers[i].name << std::endl;
}
exit(1);
}
int main(int argc, char **argv)
{
driver_sysinit(argc, argv);
SourceDB::register_lua_builtins();
UniqueDrivenEngine engine;
if (argc < 2) usage();
std::string mode = argv[1];
for (int i = 0; makers[i].name != nullptr; i++) {
if (mode == makers[i].name) {
engine = makers[i].func();
break;
}
}
if (engine == nullptr) usage();
driver_drive(engine.get(), argc, argv);
DrivenEngine::register_maker("textgame", make_TextGame);
DrivenEngine::register_maker("lpxclient", make_LpxClient);
DrivenEngine::register_maker("lpxserver", make_LpxServer);
DrivenEngine::register_maker("driverlistentest", make_DriverListenTest);
DrivenEngine::register_maker("driverwebservertest", make_DriverWebServerTest);
DrivenEngine::register_maker("driverdnsfailtest", make_DriverDNSFailTest);
DrivenEngine::register_maker("driverprintclocktest", make_DriverPrintClockTest);
DrivenEngine::register_maker("unittest", make_RunUnitTests);
driver_drive(argc, argv);
}