- handle seed in args
This commit is contained in:
57
.vscode/settings.json
vendored
Normal file
57
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"cctype": "cpp",
|
||||||
|
"clocale": "cpp",
|
||||||
|
"cmath": "cpp",
|
||||||
|
"cstdarg": "cpp",
|
||||||
|
"cstddef": "cpp",
|
||||||
|
"cstdio": "cpp",
|
||||||
|
"cstdlib": "cpp",
|
||||||
|
"cstring": "cpp",
|
||||||
|
"cwchar": "cpp",
|
||||||
|
"array": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"bit": "cpp",
|
||||||
|
"*.tcc": "cpp",
|
||||||
|
"compare": "cpp",
|
||||||
|
"concepts": "cpp",
|
||||||
|
"cstdint": "cpp",
|
||||||
|
"deque": "cpp",
|
||||||
|
"list": "cpp",
|
||||||
|
"map": "cpp",
|
||||||
|
"set": "cpp",
|
||||||
|
"unordered_map": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"exception": "cpp",
|
||||||
|
"algorithm": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"iterator": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"memory_resource": "cpp",
|
||||||
|
"random": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"string_view": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"utility": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"iostream": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"mutex": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"ostream": "cpp",
|
||||||
|
"ranges": "cpp",
|
||||||
|
"sstream": "cpp",
|
||||||
|
"streambuf": "cpp",
|
||||||
|
"cinttypes": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"cwctype": "cpp",
|
||||||
|
"fstream": "cpp",
|
||||||
|
"numbers": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"optional": "cpp"
|
||||||
|
}
|
||||||
|
}
|
@ -4,6 +4,7 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <sstream>
|
||||||
#include "file_input.h"
|
#include "file_input.h"
|
||||||
#include "file_output.h"
|
#include "file_output.h"
|
||||||
#include "console_input.h"
|
#include "console_input.h"
|
||||||
@ -15,7 +16,8 @@ feature proc_args(int argc, char **argv,
|
|||||||
std::unique_ptr<cursor> &curse,
|
std::unique_ptr<cursor> &curse,
|
||||||
std::unique_ptr<input> &in,
|
std::unique_ptr<input> &in,
|
||||||
std::unique_ptr<display> &out,
|
std::unique_ptr<display> &out,
|
||||||
std::unique_ptr<logger> &log) {
|
std::unique_ptr<logger> &log,
|
||||||
|
std::unique_ptr<RNG> &rng) {
|
||||||
feature result = 0;
|
feature result = 0;
|
||||||
std::string str;
|
std::string str;
|
||||||
std::string fn_fin;
|
std::string fn_fin;
|
||||||
@ -122,6 +124,16 @@ feature proc_args(int argc, char **argv,
|
|||||||
out = std::make_unique<curses_output>(curse);
|
out = std::make_unique<curses_output>(curse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (result & FEATURE_SEED) {
|
||||||
|
std::istringstream iss {seed};
|
||||||
|
unsigned int tmp;
|
||||||
|
iss >> tmp;
|
||||||
|
if (!iss.good())
|
||||||
|
return FEATURE_PANIC_SEED;
|
||||||
|
|
||||||
|
rng = std::make_unique<RNG>(tmp);
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,6 +165,9 @@ void panic_args(feature panic) {
|
|||||||
cerr << "Something must have went really, really, wrong..."
|
cerr << "Something must have went really, really, wrong..."
|
||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else if (panic & FEATURE_PANIC_SEED) {
|
||||||
|
cerr << "Invalid seed" << endl;
|
||||||
} else
|
} else
|
||||||
cerr << "Something must have went really, really, wrong..."
|
cerr << "Something must have went really, really, wrong..."
|
||||||
<< endl;
|
<< endl;
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
#include "cursor.h"
|
#include "cursor.h"
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
|
#include "rng.h"
|
||||||
|
|
||||||
|
|
||||||
#include "constants.h"
|
#include "constants.h"
|
||||||
|
|
||||||
@ -28,7 +30,8 @@ feature proc_args(int argc, char **argv,
|
|||||||
std::unique_ptr<cursor> &curse,
|
std::unique_ptr<cursor> &curse,
|
||||||
std::unique_ptr<input> &in,
|
std::unique_ptr<input> &in,
|
||||||
std::unique_ptr<display> &out,
|
std::unique_ptr<display> &out,
|
||||||
std::unique_ptr<logger> &log);
|
std::unique_ptr<logger> &log,
|
||||||
|
std::unique_ptr<RNG> &rng);
|
||||||
|
|
||||||
void panic_args(feature panic);
|
void panic_args(feature panic);
|
||||||
|
|
||||||
|
@ -82,6 +82,8 @@ const feature FEATURE_SEED = 1 << 7;
|
|||||||
const feature FEATURE_MENU = 1 << 8;
|
const feature FEATURE_MENU = 1 << 8;
|
||||||
const feature FEATURE_IN_FILE = 1 << 9;
|
const feature FEATURE_IN_FILE = 1 << 9;
|
||||||
const feature FEATURE_OUT_FILE = 1 << 10;
|
const feature FEATURE_OUT_FILE = 1 << 10;
|
||||||
|
|
||||||
|
const feature FEATURE_PANIC_SEED = 1 << 27;
|
||||||
const feature FEATURE_PANIC_FILE = 1 << 28;
|
const feature FEATURE_PANIC_FILE = 1 << 28;
|
||||||
const feature FEATURE_PANIC = 1 << 29;
|
const feature FEATURE_PANIC = 1 << 29;
|
||||||
const feature FEATURE_CONFLICT = 1 << 30;
|
const feature FEATURE_CONFLICT = 1 << 30;
|
||||||
|
@ -6,11 +6,15 @@ int main(int argc, char **argv) {
|
|||||||
std::unique_ptr<input> in;
|
std::unique_ptr<input> in;
|
||||||
std::unique_ptr<display> out;
|
std::unique_ptr<display> out;
|
||||||
std::unique_ptr<logger> log;
|
std::unique_ptr<logger> log;
|
||||||
|
std::unique_ptr<RNG> rng;
|
||||||
|
|
||||||
feature enabled_features = proc_args(argc, argv, curse, in, out, log);
|
|
||||||
|
feature enabled_features = proc_args(argc, argv,
|
||||||
|
curse, in, out, log, rng);
|
||||||
|
|
||||||
if (enabled_features &
|
if (enabled_features &
|
||||||
(FEATURE_PANIC | FEATURE_PANIC_FILE | FEATURE_CONFLICT)) {
|
(FEATURE_PANIC | FEATURE_PANIC_FILE |
|
||||||
|
FEATURE_CONFLICT | FEATURE_PANIC_SEED)) {
|
||||||
panic_args(enabled_features);
|
panic_args(enabled_features);
|
||||||
return RETURN_PANICKED;
|
return RETURN_PANICKED;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user