1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
#include <err.h>
#include <getopt.h>
#include <cstdlib>
#include <cmath>
#include <limits>
#include <iostream>
#include <sstream>
#include <string>
#include <utility>
#include <tr1/tuple>
#include <tr1/type_traits>
#include <gtextutils/stream_wrapper.h>
#include <gtextutils/text_line_reader.h>
#include <gtextutils/tuple_parser.h>
#include "tests_assertion.h"
using namespace std;
using namespace std::tr1;
std::string input_filename = "test.bed";
size_t chrom_column = 1 ;
size_t start_column = 2 ;
size_t end_column = 3 ;
bool verbose = false ;
void read_and_parse_file()
{
InputStreamWrapper input(input_filename);
TextLineReader reader ( input.stream() );
Tuple_Parser<std::string,size_t,size_t> parser( chrom_column,
start_column,
end_column);
while ( reader.next_line() ) {
reader.line_stream() >> parser ;
}
}
void usage()
{
exit(0);
}
void parse_command_line(int argc, char* argv[])
{
int opt;
while ((opt=getopt(argc, argv,"hi:c:s:ev")) != -1) {
switch(opt)
{
case 'h':
usage();
case 'i':
input_filename = optarg ;
break;
case 'c':
if ( sscanf(optarg, "%zu", &chrom_column ) != 1 )
errx(1,"Error: invalid chromosome column (%s)", optarg ) ;
if ( chrom_column <= 0 )
errx(1,"Error: invalid chromosome column (%s)", optarg ) ;
break;
case 's':
if ( sscanf(optarg, "%zu", &start_column ) != 1 )
errx(1,"Error: invalid start column (%s)", optarg ) ;
if ( start_column <= 0 )
errx(1,"Error: invalid start column (%s)", optarg ) ;
break;
case 'e':
if ( sscanf(optarg, "%zu", &end_column ) != 1 )
errx(1,"Error: invalid end column (%s)", optarg ) ;
if ( end_column <= 0 )
errx(1,"Error: invalid end column (%s)", optarg ) ;
break;
case 'v':
verbose=true;
break ;
default:
exit(1);
}
}
}
int main(int argc, char* argv[])
{
parse_command_line(argc, argv) ;
read_and_parse_file();
return 0;
}
|