]> git.donarmstrong.com Git - mothur.git/blobdiff - sequencedb.cpp
some changes while testing 1.9
[mothur.git] / sequencedb.cpp
index e0bd10033459896f10c2d42fb9b3b4f6921add7f..9ddb40f44a7e9ded9ba12a625e647c5abd3bed43 100644 (file)
@@ -15,7 +15,7 @@
 
 /***********************************************************************/
 
-SequenceDB::SequenceDB() {}
+SequenceDB::SequenceDB() {  m = MothurOut::getInstance();  }
 /***********************************************************************/
 //the clear function free's the memory
 SequenceDB::~SequenceDB() { clear(); }
@@ -23,31 +23,20 @@ SequenceDB::~SequenceDB() { clear(); }
 /***********************************************************************/
 
 SequenceDB::SequenceDB(int newSize) {
-       data.resize(newSize, NULL);
+       data.resize(newSize, Sequence());
 }
 
 /***********************************************************************/
 
 SequenceDB::SequenceDB(ifstream& filehandle) {
        try{
-               string name, sequence, line;
-               sequence = "";
-               int c;
-               string temp;
-               
-               
+                               
                //read through file
-               while ((c = filehandle.get()) != EOF) {
-                       name = ""; sequence = ""; 
-                       //is this a name
-                       if (c == '>') { 
-                               name = readName(filehandle); 
-                               sequence = readSequence(filehandle); 
-                       }else {  cout << "Error fasta in your file. Please correct." << endl; }
-
+               while (!filehandle.eof()) {
                        //input sequence info into sequencedb
-                       Sequence* newSequence = new Sequence(name, sequence);
-                       data.push_back(newSequence);
+                       Sequence newSequence(filehandle);
+                       
+                       if (newSequence.getName() != "") {   data.push_back(newSequence);  }
                        
                        //takes care of white space
                        gobble(filehandle);
@@ -57,11 +46,7 @@ SequenceDB::SequenceDB(ifstream& filehandle) {
                
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function SequenceDB. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SequenceDB class function SequenceDB. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               m->errorOut(e, "SequenceDB", "SequenceDB");
                exit(1);
        }
 }
@@ -82,11 +67,7 @@ string SequenceDB::readName(ifstream& in) {
                return name;
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function readName. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SequenceDB class function readName. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               m->errorOut(e, "SequenceDB", "readName");
                exit(1);
        }
 }
@@ -115,11 +96,7 @@ string SequenceDB::readSequence(ifstream& in) {
                return sequence;
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function readSequence. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SequenceDB class function readSequence. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               m->errorOut(e, "SequenceDB", "readSequence");
                exit(1);
        }
 }
@@ -134,41 +111,29 @@ int SequenceDB::getNumSeqs() {
 
 void SequenceDB::set(int index, string newUnaligned) {
        try {
-               if (data[index] != NULL) {  delete data[index];  } //free memory
-       
-               Sequence* newSeq = new Sequence(data[index]->getName(), newUnaligned);
-               data[index] = newSeq;
+               data[index] = Sequence(data[index].getName(), newUnaligned);
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SequenceDB class function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               m->errorOut(e, "SequenceDB", "set");
                exit(1);
        }
 }
 
 /***********************************************************************/
 
-void SequenceDB::set(int index, Sequence* newSeq) {
+void SequenceDB::set(int index, Sequence newSeq) {
        try {
-               if (data[index] != NULL) {  delete data[index];  } //free memory
                data[index] = newSeq;
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SequenceDB class function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               m->errorOut(e, "SequenceDB", "set");
                exit(1);
        }
 }
 
 /***********************************************************************/
 
-Sequence* SequenceDB::get(int index) {
+Sequence SequenceDB::get(int index) {
        return data[index];
 }
 
@@ -176,17 +141,10 @@ Sequence* SequenceDB::get(int index) {
 
 void SequenceDB::resize(int newSize) {
        try {
-               int size = data.size();
-       
-               for (int i = size; i > newSize; i--) {  delete data[i]; }
                data.resize(newSize);
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function resize. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SequenceDB class function resize. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               m->errorOut(e, "SequenceDB", "resize");
                exit(1);
        }
 }
@@ -195,15 +153,10 @@ void SequenceDB::resize(int newSize) {
 
 void SequenceDB::clear() {
        try {
-               for (int i = 0; i < data.size(); i++) { delete data[i];  }
                data.clear();
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function clear. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SequenceDB class function clear. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               m->errorOut(e, "SequenceDB", "clear");
                exit(1);
        }
 }
@@ -219,31 +172,23 @@ int SequenceDB::size() {
 void SequenceDB::print(ostream& out) {
        try {
                for(int i = 0; i < data.size(); i++) {
-                       data[i]->printSequence(out);
+                       data[i].printSequence(out);
                }
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SequenceDB class function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               m->errorOut(e, "SequenceDB", "print");
                exit(1);
        }
 }
        
 /***********************************************************************/
 
-void SequenceDB::push_back(Sequence* newSequence) {
+void SequenceDB::push_back(Sequence newSequence) {
        try {
                data.push_back(newSequence);
        }
        catch(exception& e) {
-               cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function add. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
-               exit(1);
-       }
-       catch(...) {
-               cout << "An unknown error has occurred in the SequenceDB class function add. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               m->errorOut(e, "SequenceDB", "push_back");
                exit(1);
        }
 }