48 lines
1.2 KiB
C++
48 lines
1.2 KiB
C++
|
|
#include "textgame.hpp"
|
|
#include "lpxclient.hpp"
|
|
#include "lpxserver.hpp"
|
|
#include "drivertests.hpp"
|
|
#include "driver.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 },
|
|
{ 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)
|
|
{
|
|
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());
|
|
}
|
|
|