From cc8cefc83ca7216594d937b839673efafeee68f4 Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Mon, 30 Jul 2007 10:07:13 +0000 Subject: [PATCH] adding command line options --- src/CMakeLists.txt | 6 +++++- src/main.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 16e2936..88e33de 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,7 +2,11 @@ PROJECT(GeneSort) SET(CMAKE_VERBOSE_MAKEFILE OFF) -ADD_DEFINITIONS(-Wall -g) +ADD_DEFINITIONS(-Wall -pedantic -g -D_GLIBCXX_DEBUG) + +#INCLUDE(CheckCXXSourceCompiles) + +#CheckCXXSourceCompiles(test HAVE_TR1) INCLUDE_DIRECTORIES(.) ADD_LIBRARY(GeneSort geneorder genealgorithms modelidentifier genesorter) diff --git a/src/main.cpp b/src/main.cpp index 5e6a5c9..34ac34f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,8 +2,12 @@ #include #include #include +#include + using namespace std; +#include + #include "geneorder.h" #include "modelidentifier.h" #include "genesorter.h" @@ -11,16 +15,51 @@ using namespace std; typedef pair modelpair; -int main(){ +int main(int argc, char** argv){ + + string ann = "default.ann"; + int opt; + while ((opt = getopt(argc, argv, "n:h")) != -1) { + switch (opt) { + case 'n': + ann = optarg; + break; + case 'h': + cout << "Usage: " << argv[0] << " [OPTION] [FILE]" << endl + << endl << " -n Specifies which artificial neural network to use for identification. '" << ann << "' is used by default" + << endl << " -h Prints this help message" + << endl << endl + << "With no FILE, or if FILE is '-', stdin will be used" + << endl; + exit(EXIT_SUCCESS); + break; + default: /* '?' */ + cerr << "Usage: " << argv[0] << " [-n ] [-h] [FILE]" << endl; + exit(EXIT_FAILURE); + } + } + + istream* in; + ifstream file; + if (optind == argc || *argv[optind] == '-'){ + in = &cin; + }else{ + file.open(argv[optind]); + if (file.fail()){ + cerr << "Could not open file: '" << argv[optind] << "'" << endl; + exit(EXIT_FAILURE); + } + in = &file; + } //TODO: Parse vector g; - copy(istream_iterator(cin), istream_iterator(), + copy(istream_iterator(*in), istream_iterator(), back_inserter(g)); GeneOrder go(g.begin(),g.end()); //TODO: Identify - ModelIdentifier mi("default.ann"); + ModelIdentifier mi(ann); map scores = mi.identify(go); for (map::iterator m = scores.begin(); m != scores.end(); ++m){ @@ -32,5 +71,5 @@ int main(){ //TODO: Sort GeneSorter::ActionList al = so.sort(go); //TODO: Print result - return 0; + return EXIT_SUCCESS; } -- 2.39.2