| 73 | |
| 74 | |
| 75 | void usage( |
| 76 | const char base[]) |
| 77 | { |
| 78 | string basename(base); |
| 79 | const size_t l = basename.find_last_of("\\/"); |
| 80 | if (l != string::npos) |
| 81 | basename.erase(0, l+1); |
| 82 | |
| 83 | cout << |
| 84 | "Usage: " << basename << " [options]\n\n" << |
| 85 | "-f, --file s Input file, or the number n;\n" << |
| 86 | " '100' means ../hands/list100.txt).\n" << |
| 87 | " (Default: input.txt)\n" << |
| 88 | "\n" << |
| 89 | "-s, --solver One of: solve, calc, play, par, dealerpar.\n" << |
| 90 | " (Default: solve)\n" << |
| 91 | "\n" << |
| 92 | "-n, --numthr n Maximum number of threads (legacy option).\n" << |
| 93 | " (Default: 0 uses DDS/library defaults; when using\n" << |
| 94 | " the modern SolverContext API, prefer configuring\n" << |
| 95 | " threads via SolverConfig instead of this option.)\n" << |
| 96 | "\n" << |
| 97 | "-m, --memory n Total DDS memory size in MB (legacy option).\n" << |
| 98 | " (Default: 0 uses DDS/library defaults; when using\n" << |
| 99 | " the modern SolverContext API, prefer configuring\n" << |
| 100 | " memory via SolverConfig instead of this option.)\n" << |
| 101 | "\n" << |
| 102 | "-r, --report Print per-board timings sorted by longest first.\n" << |
| 103 | "\n" << |
| 104 | endl; |
| 105 | } |
| 106 | |
| 107 | |
| 108 | int nextToken = 1; |