Files
integration/luprex/core/cpp/main.cpp

51 lines
1.3 KiB
C++

#include "textgame.hpp"
#include "lpxclient.hpp"
#include "lpxserver.hpp"
#include "drivertests.hpp"
#include "driver.hpp"
#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)
{
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);
}