int main(int argc, char* argv[]) { UIDSet uids; if (argc < 3) { std::cerr << "ERROR: Must have at least two arguments: basename and a UID" << std::endl; return -1; } try { stoi(argv[1], NULL, 10); std::cerr << "ERROR: First argument must not be an integer" << std::endl; return -1; } catch (...) {} std::string basename(std::string(argv[1]) + "_mixed"); if (basename.find("/") != std::string::npos) { std::cerr << "ERROR: Basename may not contain path separator" << std::endl; return -1; } for (int i = 2; i < argc; ++i) { uids.insert(stoi(argv[i], NULL, 10)); } ParamSet extraParams; extraParams.insert(-1); // Don't-care value SetuidState startState = SetuidState::get(); Explorer explorer( Graph(VG(), uids, startState), EG(), uids, extraParams); explorer.exploreAll(); Graph const& graph = explorer.getGraph(); GraphName name(basename, uids, extraParams); ArchiveWriter<Graph>().write(graph, name); DotWriter<Graph>().write(graph, name); return 0; }