X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=tree.cpp;h=400a72ae388a88c5b94aa2b8a717471f600b33ed;hb=2a07f8664a7fd1ef0d572b88e8b5bede24cc0b3c;hp=8e459810589cbc23e9f443884406028382e4e212;hpb=4d7ffb38e091e9e7425d94e112551a3f90cacb0f;p=mothur.git diff --git a/tree.cpp b/tree.cpp index 8e45981..400a72a 100644 --- a/tree.cpp +++ b/tree.cpp @@ -736,39 +736,20 @@ int Tree::readTreeString(ifstream& filehandle) { //cout << " at beginning of while " << k << endl; if(c == ')') { //to pass over labels in trees - c=filehandle.get(); - while((c!=',') && (c != -1) && (c!= ':') && (c!=';')){ c=filehandle.get(); } - filehandle.putback(c); + string label = readLabel(filehandle); } + if(c == ';') { return 0; } if(c == -1) { return 0; } + //if you are a name if((c != '(') && (c != ')') && (c != ',') && (c != ':') && (c != '\n') && (c != '\t') && (c != 32)) { //32 is space - name = ""; - c = filehandle.get(); - //k = c; -//cout << k << endl; - while ((c != '(') && (c != ')') && (c != ',') && (c != ':') && (c != '\n') && (c != 32) && (c != '\t')) { - name += c; - c = filehandle.get(); - //k = c; -//cout << " in name while " << k << endl; - } - -//cout << "name = " << name << endl; + name = readName(filehandle); globaldata->Treenames.push_back(name); - filehandle.putback(c); -//k = c; -//cout << " after putback" << k << endl; } if(c == ':') { //read until you reach the end of the branch length - while ((c != '(') && (c != ')') && (c != ',') && (c != ';') && (c != '\n') && (c != '\t') && (c != 32)) { - c = filehandle.get(); - //k = c; - //cout << " in branch while " << k << endl; - } - filehandle.putback(c); + string bl = readBranchLength(filehandle); } c = filehandle.get(); @@ -789,6 +770,68 @@ int Tree::readTreeString(ifstream& filehandle) { } /*******************************************************/ +string Tree::readLabel(ifstream& filehandle) { + try { + + string label = ""; + + //to pass over labels in trees + int c=filehandle.get(); + while((c!=',') && (c != -1) && (c!= ':') && (c!=';')){ label += c; c=filehandle.get(); } + filehandle.putback(c); + + return label; + + } + catch(exception& e) { + m->errorOut(e, "Tree", "readLabel"); + exit(1); + } +} +/*******************************************************/ +string Tree::readName(ifstream& filehandle) { + try { + + string name = ""; + int c = filehandle.get(); + + while ((c != '(') && (c != ')') && (c != ',') && (c != ':') && (c != '\n') && (c != 32) && (c != '\t')) { + name += c; + c = filehandle.get(); + } + +//cout << "name = " << name << endl; + filehandle.putback(c); + + return name; + + } + catch(exception& e) { + m->errorOut(e, "Tree", "readName"); + exit(1); + } +} +/*******************************************************/ +string Tree::readBranchLength(ifstream& filehandle) { + try { + + string br = ""; + int c; + while ((c != '(') && (c != ')') && (c != ',') && (c != ';') && (c != '\n') && (c != '\t') && (c != 32)) { + br += c; + c = filehandle.get(); + } + filehandle.putback(c); + + return br; + + } + catch(exception& e) { + m->errorOut(e, "Tree", "readBranchLength"); + exit(1); + } +} /*******************************************************/ +/*******************************************************/