]> git.donarmstrong.com Git - mothur.git/blob - readtree.h
Revert to previous commit
[mothur.git] / readtree.h
1 #ifndef READTREE_H
2 #define READTREE_H
3 /*
4  *  readtree.h
5  *  Mothur
6  *
7  *  Created by Sarah Westcott on 1/22/09.
8  *  Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
9  *
10  */
11
12 #include "mothur.h"
13 #include "tree.h"
14
15 #define MAX_LINE                513
16 #define SKIPLINE(f,c)   {while((c=f.get())!=EOF && ((c) != '\n')){}}
17
18 class Tree;
19
20 /****************************************************************************/
21
22 class ReadTree {
23         public:
24                 ReadTree(); 
25                 virtual ~ReadTree() {};
26                 
27                 virtual int read(TreeMap*) = 0;
28                 int readSpecialChar(istream&, char, string);
29                 int readNodeChar(istream& f);
30                 float readBranchLength(istream& f);
31         
32                 vector<Tree*> getTrees() { return Trees; }
33                 int AssembleTrees(map<string, string>);
34                 
35         protected:
36                 vector<Tree*> Trees;
37                 TreeMap* treeMap;
38                 int numNodes, numLeaves;
39                 MothurOut* m;
40                 
41                 
42 };
43
44 /****************************************************************************/
45
46 class ReadNewickTree : public ReadTree {
47         
48 public:
49         ReadNewickTree(string file) : treeFile(file) { m->openInputFile(file, filehandle); readOk = 0; } 
50         ~ReadNewickTree() {};
51         int read(TreeMap*);
52         
53 private:
54         Tree* T;
55         int readNewickInt(istream&, int&, Tree*, TreeMap*);
56         int readTreeString(TreeMap*);
57         string nexusTranslation(TreeMap*);
58         ifstream filehandle;
59         string treeFile;
60         string holder;
61         int readOk;  // readOk = 0 means success, readOk = 1 means errors.
62         
63 };
64
65 /****************************************************************************/
66
67 #endif