| 18 | 1 #ifndef INPUT_FILE_PARSER_HPP | 
|  | 2 #define INPUT_FILE_PARSER_HPP | 
|  | 3 | 
|  | 4 #include <string> | 
|  | 5 #include <vector> | 
|  | 6 #include <map> | 
|  | 7 #include "genomicInterval.hpp" | 
|  | 8 | 
|  | 9 typedef vector<Interval *> IntervalsType; | 
|  | 10 typedef map<string, IntervalsType *> SortedIntervalsTypes; | 
|  | 11 typedef map<string, unsigned int> CounterType; | 
|  | 12 typedef pair<Interval *, unsigned int> NumberIntervalType; | 
|  | 13 | 
|  | 14 static bool operator<(const NumberIntervalType &i1, const NumberIntervalType &i2) { | 
|  | 15     if (i1.first < i2.first) return true; | 
|  | 16     return ((i1.first == i2.first) && (i1.second < i2.second)); | 
|  | 17 } | 
|  | 18 | 
|  | 19 class InputFileParser { | 
|  | 20 | 
|  | 21     private: | 
|  | 22         SortedIntervalsTypes sortedIntervals; | 
|  | 23         CounterType counter; | 
|  | 24 | 
|  | 25         void addToList(GenomicInterval &genomicInterval); | 
|  | 26         void writeTmpFile(string &chromosome); | 
|  | 27         void syncFiles(); | 
|  | 28         string getTmpName(const string &chromosome, unsigned int i); | 
|  | 29         string getTmpName(const string &chromosome); | 
|  | 30         void merge(); | 
|  | 31         void merge(const string &chromosome, ofstream &outputFile); | 
|  | 32 | 
|  | 33     public: | 
|  | 34         string inputFileName; | 
|  | 35         string outputFileName; | 
|  | 36         string outputFilePrefix; | 
|  | 37 | 
|  | 38         InputFileParser(string inputFileName, string outputFileName); | 
|  | 39 | 
|  | 40         void parse(); | 
|  | 41 | 
|  | 42 }; | 
|  | 43 | 
|  | 44 #endif | 
|  | 45 |