]> git.donarmstrong.com Git - mothur.git/blob - fileoutput.h
added concensus command and updated calcs
[mothur.git] / fileoutput.h
1 #ifndef FILEOUTPUT_H
2 #define FILEOUTPUT_H
3
4 #include "mothur.h"
5 #include "globaldata.hpp"
6
7 using namespace std;
8
9 /***********************************************************************/
10
11 class FileOutput {
12         
13 public:
14         FileOutput(){};
15         ~FileOutput(){};
16         
17         virtual void initFile(string) = 0;
18         virtual void initFile(string, vector<string>) = 0;
19         virtual void output(int, vector<double>) = 0;
20         virtual void output(vector<double>) = 0;
21         virtual void resetFile() = 0;
22         virtual string getFileName() = 0;
23
24 protected:
25         GlobalData* globaldata;
26         int renameOk;
27
28 };      
29         
30 /***********************************************************************/
31
32 class ThreeColumnFile : public FileOutput {
33         
34 public:
35         ThreeColumnFile(string n) : FileOutput(), inName(n), counter(0), outName(getPathName(n) + ".temp") { };
36         ~ThreeColumnFile();
37         void initFile(string);
38         void output(int, vector<double>);
39         void resetFile();
40         string getFileName()    { return inName;        };
41         
42         void initFile(string, vector<string>){};
43         void output(vector<double>) {};
44
45 private:
46         string inName;
47         string outName;
48         ifstream inFile;
49         ofstream outFile;
50         int counter;
51 };
52
53
54 /***********************************************************************/
55 class OneColumnFile : public FileOutput {
56         
57         
58 public:
59         OneColumnFile(string n) : inName(n), counter(0), outName(getPathName(n) + ".temp") {};
60         ~OneColumnFile();
61         void output(int, vector<double>);
62         void initFile(string);
63         void resetFile();
64         string getFileName()    { return inName;        };
65         
66         void initFile(string, vector<string>) {};
67         void output(vector<double>) {};
68
69
70 private:
71         string outName;
72         ifstream inFile;
73         string inName;
74         ofstream outFile;
75         int counter;
76 };
77
78 /***********************************************************************/
79 class SharedOneColumnFile : public FileOutput {
80         
81         
82 public:
83         SharedOneColumnFile(string n) : inName(n), counter(0), outName(getPathName(n) + ".temp") {};
84         ~SharedOneColumnFile();
85         void output(int, vector<double>);
86         void initFile(string);
87         void resetFile();
88         string getFileName()    { return inName;        };
89         
90         void initFile(string, vector<string>) {};
91         void output(vector<double>) {};
92
93
94 private:
95         string outName;
96         ifstream inFile;
97         string inName;
98         ofstream outFile;
99         int counter;
100                 
101 };
102
103 /***********************************************************************/
104
105 class SharedThreeColumnFile : public FileOutput {
106         
107 public:
108         SharedThreeColumnFile(string n, string groups) : FileOutput(), groupLabel(groups), inName(n), counter(0), numGroup(1), outName(getPathName(n) + ".temp") {      };
109         ~SharedThreeColumnFile();
110         void initFile(string);
111         void output(int, vector<double>);
112         void resetFile();
113         string getFileName()    { return inName;        };
114         
115         
116         void initFile(string, vector<string>) {};
117         void output(vector<double>) {};
118
119 private:
120         string inName, groupLabel;
121         string outName;
122         ifstream inFile;
123         ofstream outFile;
124         int counter, numGroup;
125 };
126
127 /***********************************************************************/
128 //used by parsimony, unifrac.weighted and unifrac.unweighted
129 class ColumnFile : public FileOutput {
130         
131 public:
132         ColumnFile(string n) : FileOutput(), inName(n), counter(0), outName(getPathName(n) + ".temp") { globaldata = GlobalData::getInstance(); };
133         ~ColumnFile();
134         
135         //to make compatible with parent class
136         void output(int, vector<double>){};
137         void initFile(string){};
138         
139         void initFile(string, vector<string>);
140         void output(vector<double>);
141         void resetFile();
142         string getFileName()    { return inName;        };
143 private:
144         string inName;
145         string outName;
146         ifstream inFile;
147         ofstream outFile;
148         int counter;
149 };
150
151 /***********************************************************************/
152
153 #endif