|
22 | 22 |
|
23 | 23 | #include <iostream> |
24 | 24 | #include <fstream> |
25 | | -#include <cstdlib> |
26 | 25 | #include <memory> |
27 | 26 | #include <getopt.h> |
28 | 27 | #include "gambit.h" |
@@ -69,7 +68,7 @@ int main(int argc, char *argv[]) |
69 | 68 | int numDecimals = 6, stopAfter = 0, maxDepth = 0; |
70 | 69 |
|
71 | 70 | int long_opt_index = 0; |
72 | | - struct option long_options[] = { |
| 71 | + option long_options[] = { |
73 | 72 | {"help", 0, nullptr, 'h'}, {"version", 0, nullptr, 'v'}, {nullptr, 0, nullptr, 0}}; |
74 | 73 | while ((c = getopt_long(argc, argv, "d:DvhqSe:r:", long_options, &long_opt_index)) != -1) { |
75 | 74 | switch (c) { |
@@ -100,7 +99,7 @@ int main(int argc, char *argv[]) |
100 | 99 | break; |
101 | 100 | case '?': |
102 | 101 | if (isprint(optopt)) { |
103 | | - std::cerr << argv[0] << ": Unknown option `-" << ((char)optopt) << "'.\n"; |
| 102 | + std::cerr << argv[0] << ": Unknown option `-" << static_cast<char>(optopt) << "'.\n"; |
104 | 103 | } |
105 | 104 | else { |
106 | 105 | std::cerr << argv[0] << ": Unknown option character `\\x" << optopt << "`.\n"; |
@@ -132,51 +131,31 @@ int main(int argc, char *argv[]) |
132 | 131 | const Game game = ReadGame(*input_stream); |
133 | 132 | if (!game->IsTree() || useStrategic) { |
134 | 133 | if (useFloat) { |
135 | | - std::shared_ptr<StrategyProfileRenderer<double>> renderer; |
136 | | - if (printDetail) { |
137 | | - renderer = std::make_shared<MixedStrategyDetailRenderer<double>>(std::cout, numDecimals); |
138 | | - } |
139 | | - else { |
140 | | - renderer = std::make_shared<MixedStrategyCSVRenderer<double>>(std::cout, numDecimals); |
141 | | - } |
| 134 | + auto renderer = |
| 135 | + MakeMixedStrategyProfileRenderer<double>(std::cout, numDecimals, printDetail); |
142 | 136 | LcpStrategySolve<double>(game, stopAfter, maxDepth, |
143 | 137 | [&](const MixedStrategyProfile<double> &p, |
144 | 138 | const std::string &label) { renderer->Render(p, label); }); |
145 | 139 | } |
146 | 140 | else { |
147 | | - std::shared_ptr<StrategyProfileRenderer<Rational>> renderer; |
148 | | - if (printDetail) { |
149 | | - renderer = std::make_shared<MixedStrategyDetailRenderer<Rational>>(std::cout); |
150 | | - } |
151 | | - else { |
152 | | - renderer = std::make_shared<MixedStrategyCSVRenderer<Rational>>(std::cout); |
153 | | - } |
| 141 | + auto renderer = |
| 142 | + MakeMixedStrategyProfileRenderer<Rational>(std::cout, numDecimals, printDetail); |
154 | 143 | LcpStrategySolve<Rational>(game, stopAfter, maxDepth, |
155 | 144 | [&](const MixedStrategyProfile<Rational> &p, |
156 | 145 | const std::string &label) { renderer->Render(p, label); }); |
157 | 146 | } |
158 | 147 | } |
159 | 148 | else { |
160 | 149 | if (useFloat) { |
161 | | - std::shared_ptr<StrategyProfileRenderer<double>> renderer; |
162 | | - if (printDetail) { |
163 | | - renderer = std::make_shared<BehavStrategyDetailRenderer<double>>(std::cout, numDecimals); |
164 | | - } |
165 | | - else { |
166 | | - renderer = std::make_shared<BehavStrategyCSVRenderer<double>>(std::cout, numDecimals); |
167 | | - } |
| 150 | + auto renderer = |
| 151 | + MakeMixedBehaviorProfileRenderer<double>(std::cout, numDecimals, printDetail); |
168 | 152 | LcpBehaviorSolve<double>(game, stopAfter, maxDepth, |
169 | 153 | [&](const MixedBehaviorProfile<double> &p, |
170 | 154 | const std::string &label) { renderer->Render(p, label); }); |
171 | 155 | } |
172 | 156 | else { |
173 | | - std::shared_ptr<StrategyProfileRenderer<Rational>> renderer; |
174 | | - if (printDetail) { |
175 | | - renderer = std::make_shared<BehavStrategyDetailRenderer<Rational>>(std::cout); |
176 | | - } |
177 | | - else { |
178 | | - renderer = std::make_shared<BehavStrategyCSVRenderer<Rational>>(std::cout); |
179 | | - } |
| 157 | + auto renderer = |
| 158 | + MakeMixedBehaviorProfileRenderer<Rational>(std::cout, numDecimals, printDetail); |
180 | 159 | LcpBehaviorSolve<Rational>(game, stopAfter, maxDepth, |
181 | 160 | [&](const MixedBehaviorProfile<Rational> &p, |
182 | 161 | const std::string &label) { renderer->Render(p, label); }); |
|
0 commit comments