18
|
1 #ifndef INTERVAL_HPP
|
|
2 #define INTERVAL_HPP
|
|
3 #include <iostream>
|
|
4 #include <fstream>
|
|
5 using namespace std;
|
|
6
|
|
7 typedef unsigned int Position;
|
|
8
|
|
9 class Interval {
|
|
10
|
|
11 public:
|
|
12 Position start;
|
|
13 Position end;
|
|
14
|
|
15 Interval(unsigned int start = 0, unsigned int end = 0): start(start), end(end) { }
|
|
16
|
|
17 Interval(Interval &i): start(i.start), end(i.end) { }
|
|
18
|
|
19 bool include(Interval &interval) {
|
|
20 return ((start <= interval.start) && (end >= interval.end));
|
|
21 }
|
|
22
|
|
23 void writeBinary(ofstream &stream) {
|
|
24 stream.write(reinterpret_cast<const char*>(&start), sizeof(Position));
|
|
25 stream.write(reinterpret_cast<const char*>(&end), sizeof(Position));
|
|
26 }
|
|
27
|
|
28 bool parseBinary(ifstream &stream) {
|
|
29 stream.read(reinterpret_cast<char*>(&start), sizeof(Position));
|
|
30 stream.read(reinterpret_cast<char*>(&end), sizeof(Position));
|
|
31 return (! stream.eof());
|
|
32 }
|
|
33
|
|
34 friend bool operator==(const Interval &i1, const Interval &i2) {
|
|
35 return ((i1.start == i2.start) && (i1.start == i2.end));
|
|
36 }
|
|
37
|
|
38 friend bool operator<(const Interval &i1, const Interval &i2) {
|
|
39 if (i1.start < i2.start) return true;
|
|
40 return ((i1.start == i2.start) && (i1.end > i2.end));
|
|
41 }
|
|
42
|
|
43 };
|
|
44
|
|
45 #endif
|