2020-11-12 14:24:33 -05:00
|
|
|
|
2021-01-22 19:10:47 -05:00
|
|
|
#include "textgame.hpp"
|
2021-10-14 15:51:38 -04:00
|
|
|
#include "lpxclient.hpp"
|
|
|
|
|
#include "lpxserver.hpp"
|
|
|
|
|
#include "drivertests.hpp"
|
2021-10-04 17:45:18 -04:00
|
|
|
#include "driver.hpp"
|
2021-12-16 13:06:15 -05:00
|
|
|
#include "source.hpp"
|
2021-10-12 13:54:08 -04:00
|
|
|
#include <iostream>
|
2021-10-08 16:38:10 -04:00
|
|
|
|
2021-10-14 15:51:38 -04:00
|
|
|
struct EngineMaker {
|
|
|
|
|
const char *name;
|
|
|
|
|
DrivenEngineMaker func;
|
2021-10-12 13:54:08 -04:00
|
|
|
};
|
|
|
|
|
|
2021-10-14 15:51:38 -04:00
|
|
|
static EngineMaker makers[] = {
|
|
|
|
|
{ "textgame", make_TextGame },
|
|
|
|
|
{ "lpxclient", make_LpxClient },
|
|
|
|
|
{ "lpxserver", make_LpxServer },
|
|
|
|
|
{ "driverlistentest", make_DriverListenTest },
|
|
|
|
|
{ "driverwebservertest", make_DriverWebServerTest },
|
|
|
|
|
{ "driverdnsfailtest", make_DriverDNSFailTest },
|
|
|
|
|
{ "driverprintclocktest", make_DriverPrintClockTest },
|
2021-11-14 15:57:18 -05:00
|
|
|
{ "unittest", make_RunUnitTests },
|
2021-10-14 15:51:38 -04:00
|
|
|
{ nullptr, nullptr },
|
2021-10-12 13:54:08 -04:00
|
|
|
};
|
|
|
|
|
|
2021-10-14 15:51:38 -04:00
|
|
|
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;
|
2021-10-12 13:54:08 -04:00
|
|
|
}
|
2021-10-14 15:51:38 -04:00
|
|
|
exit(1);
|
|
|
|
|
}
|
2021-10-12 13:54:08 -04:00
|
|
|
|
2020-11-12 14:24:33 -05:00
|
|
|
int main(int argc, char **argv)
|
|
|
|
|
{
|
2021-12-16 13:06:15 -05:00
|
|
|
SourceDB::register_lua_builtins();
|
2021-10-14 15:51:38 -04:00
|
|
|
UniqueDrivenEngine engine;
|
2021-10-14 16:41:24 -04:00
|
|
|
if (argc < 2) usage();
|
2021-10-14 15:51:38 -04:00
|
|
|
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();
|
2021-10-14 16:41:24 -04:00
|
|
|
// Remove one argument from the argument vector,
|
|
|
|
|
// so that it looks like a normal argument vector.
|
|
|
|
|
driver_drive(engine.get(), argc - 1, argv + 1);
|
2020-11-12 14:24:33 -05:00
|
|
|
}
|
2021-10-14 15:51:38 -04:00
|
|
|
|