]> git.donarmstrong.com Git - mothur.git/blobdiff - tree.cpp
working on pam
[mothur.git] / tree.cpp
index 0bd98e01f1c305d93851e1a5e465c92a22fc9a1f..745893471e065abee12e7752b91c71bb37c1a635 100644 (file)
--- a/tree.cpp
+++ b/tree.cpp
@@ -1233,7 +1233,7 @@ void Tree::printTree() {
 
 /*****************************************************************/
 //this code is a mess and should be rethought...-slw
-void Tree::parseTreeFile() {
+int Tree::parseTreeFile() {
        
        //only takes names from the first tree and assumes that all trees use the same names.
        try {
@@ -1246,8 +1246,10 @@ void Tree::parseTreeFile() {
                
                //ifyou are not a nexus file 
                if((c = filehandle.peek()) != '#') {  
-                       while((c = filehandle.peek()) != ';') { 
+                       while((c = filehandle.peek()) != ';') {
+                if (m->control_pressed) {  filehandle.close(); return 0; }
                                while ((c = filehandle.peek()) != ';') {
+                    if (m->control_pressed) {  filehandle.close(); return 0; }
                                        // get past comments
                                        if(c == '[') {
                                                comment = 1;
@@ -1267,7 +1269,8 @@ void Tree::parseTreeFile() {
                        string holder = "";
                                        
                        // get past comments
-                       while(holder != "translate" && holder != "Translate"){  
+                       while(holder != "translate" && holder != "Translate"){
+                if (m->control_pressed) {  filehandle.close(); return 0; }
                                if(holder == "[" || holder == "[!"){
                                        comment = 1;
                                }
@@ -1296,7 +1299,8 @@ void Tree::parseTreeFile() {
 
                                string number, name, h;
                                h = ""; // so it enters the loop the first time
-                               while((h != ";") && (number != ";")) { 
+                               while((h != ";") && (number != ";")) {
+                    if (m->control_pressed) {  filehandle.close(); return 0; }
                                        filehandle >> number;
                                        filehandle >> name;
        
@@ -1309,7 +1313,7 @@ void Tree::parseTreeFile() {
                        }
                }
                filehandle.close();
-               
+               return 0;
                //for (int i = 0; i < globaldata->Treenames.size(); i++) {
 //cout << globaldata->Treenames[i] << endl; }
 //cout << globaldata->Treenames.size() << endl;
@@ -1327,7 +1331,8 @@ int Tree::readTreeString(ifstream& filehandle)    {
                int c;
                string name;  //, k
                
-               while((c = filehandle.peek()) != ';') { 
+               while((c = filehandle.peek()) != ';') {
+            if (m->control_pressed) {  return 0; }
 //k = c;
 //cout << " at beginning of while " <<  k << endl;                     
                        if(c == ')')  {    
@@ -1344,7 +1349,7 @@ int Tree::readTreeString(ifstream& filehandle)    {
                                c = filehandle.get();
                        //k = c;
 //cout << k << endl;
-                               while ((c != '(') && (c != ')') && (c != ',') && (c != ':') && (c != '\n') && (c != 32) && (c != '\t')) {                       
+                               while ((c != '(') && (c != ')') && (c != ',') && (c != ':')  && (c != '\n') && (c != 32) && (c != '\t')) {                      
                                        name += c;
                                        c = filehandle.get();
                        //k = c;
@@ -1352,7 +1357,9 @@ int Tree::readTreeString(ifstream& filehandle)    {
                                }
                                
 //cout << "name = " << name << endl;
-                               m->Treenames.push_back(name);
+                if (name != "\r" ) {
+                    m->Treenames.push_back(name);   } //cout << m->Treenames.size() << '\t' << name << endl;
+                
                                filehandle.putback(c);
 //k = c;
 //cout << " after putback" <<  k << endl;