| 432 | } |
| 433 | |
| 434 | static int Main(const int argc, const char* argv[]) |
| 435 | try { |
| 436 | #ifdef WIN32 |
| 437 | _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); |
| 438 | ::SetConsoleCP(1251); |
| 439 | ::SetConsoleOutputCP(1251); |
| 440 | #endif // WIN32 |
| 441 | const TOptions o = ParseOptions(argc, argv); |
| 442 | if (o.NoValues) { |
| 443 | return ProcessInput<ui64, TRecord>(o, TNullPacker<ui64>()); |
| 444 | } else { |
| 445 | #define CHECK_TYPE_AND_PROCESS(valueType) \ |
| 446 | if (o.ValueType == #valueType) { \ |
| 447 | return ProcessInput<valueType>(o); \ |
| 448 | } |
| 449 | CHECK_TYPE_AND_PROCESS(ui16) |
| 450 | CHECK_TYPE_AND_PROCESS(i16) |
| 451 | CHECK_TYPE_AND_PROCESS(ui32) |
| 452 | CHECK_TYPE_AND_PROCESS(i32) |
| 453 | CHECK_TYPE_AND_PROCESS(ui64) |
| 454 | CHECK_TYPE_AND_PROCESS(i64) |
| 455 | CHECK_TYPE_AND_PROCESS(bool) |
| 456 | CHECK_TYPE_AND_PROCESS(float) |
| 457 | CHECK_TYPE_AND_PROCESS(double) |
| 458 | CHECK_TYPE_AND_PROCESS(TString) |
| 459 | CHECK_TYPE_AND_PROCESS(TUtf16String) |
| 460 | #undef CHECK_TYPE_AND_PROCESS |
| 461 | ythrow yexception() << "unknown type for -t option: " << o.ValueType; |
| 462 | } |
| 463 | } catch (const std::exception& e) { |
| 464 | Cerr << "Exception: " << e.what() << Endl; |
| 465 | return 2; |
| 466 | } catch (...) { |
| 467 | Cerr << "Unknown exception!\n"; |
| 468 | return 3; |
| 469 | } |
| 470 | |
| 471 | int NTrieOps::MainCompile(const int argc, const char* argv[]) { |
| 472 | return ::Main(argc, argv); |
no test coverage detected