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

51 lines
1.3 KiB
C++
Raw Normal View History

2020-11-12 14:24:33 -05:00
2021-01-22 19:10:47 -05:00
#include "textgame.hpp"
#include "lpxclient.hpp"
#include "lpxserver.hpp"
#include "drivertests.hpp"
#include "driver.hpp"
2021-10-12 13:54:08 -04:00
#include <iostream>
struct EngineMaker {
const char *name;
DrivenEngineMaker func;
2021-10-12 13:54:08 -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 },
{ nullptr, nullptr },
2021-10-12 13:54:08 -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
}
exit(1);
}
2021-10-12 13:54:08 -04:00
2020-11-12 14:24:33 -05:00
int main(int argc, char **argv)
{
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();
// 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
}