]> git.donarmstrong.com Git - mothur.git/blobdiff - readtree.h
Revert to previous commit
[mothur.git] / readtree.h
diff --git a/readtree.h b/readtree.h
new file mode 100644 (file)
index 0000000..6b074de
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef READTREE_H
+#define READTREE_H
+/*
+ *  readtree.h
+ *  Mothur
+ *
+ *  Created by Sarah Westcott on 1/22/09.
+ *  Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
+ *
+ */
+
+#include "mothur.h"
+#include "tree.h"
+
+#define MAX_LINE               513
+#define SKIPLINE(f,c)  {while((c=f.get())!=EOF && ((c) != '\n')){}}
+
+class Tree;
+
+/****************************************************************************/
+
+class ReadTree {
+       public:
+               ReadTree(); 
+               virtual ~ReadTree() {};
+               
+               virtual int read(TreeMap*) = 0;
+               int readSpecialChar(istream&, char, string);
+               int readNodeChar(istream& f);
+               float readBranchLength(istream& f);
+       
+               vector<Tree*> getTrees() { return Trees; }
+               int AssembleTrees(map<string, string>);
+               
+       protected:
+               vector<Tree*> Trees;
+               TreeMap* treeMap;
+               int numNodes, numLeaves;
+               MothurOut* m;
+               
+               
+};
+
+/****************************************************************************/
+
+class ReadNewickTree : public ReadTree {
+       
+public:
+       ReadNewickTree(string file) : treeFile(file) { m->openInputFile(file, filehandle); readOk = 0; } 
+       ~ReadNewickTree() {};
+       int read(TreeMap*);
+       
+private:
+       Tree* T;
+       int readNewickInt(istream&, int&, Tree*, TreeMap*);
+       int readTreeString(TreeMap*);
+       string nexusTranslation(TreeMap*);
+       ifstream filehandle;
+       string treeFile;
+       string holder;
+       int readOk;  // readOk = 0 means success, readOk = 1 means errors.
+       
+};
+
+/****************************************************************************/
+
+#endif