Merge remote-tracking branch 'origin/master' into sampling-wip

Change-Id: Iae5c02be5801d75e8adc55222ccb35c559f7ebf4
This commit is contained in:
Horst Schirmeier
2015-01-21 00:19:52 +01:00
121 changed files with 16634 additions and 611 deletions

View File

@ -35,7 +35,8 @@ int main(int argc, char *argv[]) {
cmd.add_args(argv[i]);
}
cmd.addOption("", "", Arg::None, "USAGE: import-trace [options]");
CommandLine::option_handle UNKNOWN =
cmd.addOption("", "", Arg::None, "USAGE: prune-trace [options]");
CommandLine::option_handle HELP = cmd.addOption("h", "help", Arg::None, "-h,--help \tPrint usage and exit");
Database::cmdline_setup();
@ -76,35 +77,15 @@ int main(int argc, char *argv[]) {
// try and get the according pruner object; die on failure
if ((pruner = (Pruner *)registry.get(pruner_name)) == 0) {
if (pruner_name != "?" ) {
std::cerr << "Unknown import method: " << pruner_name << std::endl;
std::cerr << "Unknown pruning method: " << pruner_name << std::endl;
}
std::cerr << "Available import methods: " << pruners << std::endl;
std::cerr << "Available pruning methods: " << pruners << std::endl;
exit(-1);
}
registry.getPrimeAlias(pruner, pruner_name);
LOG << "Using " << pruner_name << endl;
if (cmd[PRUNER]) {
std::string imp(cmd[PRUNER].first()->arg);
if (imp == "BasicPruner" || imp == "basic") {
LOG << "Using BasicPruner" << endl;
pruner = new BasicPruner();
} else if (imp == "BasicPrunerLeft" || imp == "basic-left") {
LOG << "Using BasicPruner (use left border, instr1)" << endl;
pruner = new BasicPruner(true);
} else if (imp == "FESamplingPruner" || imp == "sampling") {
LOG << "Using FESamplingPruner" << endl;
pruner = new FESamplingPruner;
} else {
LOG << "Unknown pruning method: " << imp << endl;
exit(-1);
}
} else {
LOG << "Using BasicPruner" << endl;
pruner = new BasicPruner();
}
if (pruner && !(pruner->commandline_init())) {
if (!(pruner->commandline_init())) {
std::cerr << "Pruner's commandline initialization failed" << std::endl;
exit(-1);
}
@ -112,9 +93,15 @@ int main(int argc, char *argv[]) {
// reparse all arguments.
cmd.parse();
if (cmd[HELP]) {
if (cmd[HELP] || cmd[UNKNOWN] || cmd.parser()->nonOptionsCount() > 0) {
for (option::Option* opt = cmd[UNKNOWN]; opt; opt = opt->next()) {
std::cerr << "Unknown option: " << opt->name << "\n";
}
for (int i = 0; i < cmd.parser()->nonOptionsCount(); ++i) {
std::cerr << "Unknown non-option: " << cmd.parser()->nonOption(i) << "\n";
}
cmd.printUsage();
exit(0);
exit(!cmd[HELP]);
}
Database *db = Database::cmdline_connect();
@ -166,7 +153,7 @@ int main(int argc, char *argv[]) {
}
////////////////////////////////////////////////////////////////
// Do the actual import
// Do the actual pruning
////////////////////////////////////////////////////////////////
if (!cmd[NO_DELETE] && cmd[OVERWRITE] && !pruner->clear_database()) {
LOG << "clear_database() failed" << endl;