File: test_tuple_parser_file.cpp

package info (click to toggle)
libgtextutils 0.6.2-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 1,680 kB
  • sloc: sh: 10,041; cpp: 947; ansic: 415; makefile: 69
file content (100 lines) | stat: -rw-r--r-- 1,938 bytes parent folder | download | duplicates (7)
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;
}