InputData::InputData(string fName, string f) : format(f){
m = MothurOut::getInstance();
+ globaldata = GlobalData::getInstance();
m->openInputFile(fName, fileHandle);
filename = fName;
InputData::InputData(string fName, string orderFileName, string f) : format(f){
try {
m = MothurOut::getInstance();
+ globaldata = GlobalData::getInstance();
ifstream ofHandle;
m->openInputFile(orderFileName, ofHandle);
string name;
string thisLabel;
m->openInputFile(filename, in);
-
+ globaldata->saveNextLabel = "";
+
if(in){
if (format == "sharedfile") {
while (in.eof() != true) {
SharedRAbundVector* SharedRAbund = new SharedRAbundVector(in);
if (SharedRAbund != NULL) {
thisLabel = SharedRAbund->getLabel();
+
//if you are at the last label
if (thisLabel == label) { in.close(); return SharedRAbund->getSharedRAbundVectors(); }
else {
if (SharedRelAbund != NULL) {
return SharedRelAbund->getSharedRAbundFloatVectors();
}
+ }else if (format == "sharedfile") {
+ SharedRAbundVector* SharedRAbund = new SharedRAbundVector(fileHandle);
+ if (SharedRAbund != NULL) {
+ vector<SharedRAbundVector*> lookup = SharedRAbund->getSharedRAbundVectors();
+ vector<SharedRAbundFloatVector*> lookupFloat = SharedRAbund->getSharedRAbundFloatVectors(lookup);
+ for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; } lookup.clear();
+ return lookupFloat;
+ }
+
}
m->gobble(fileHandle);
}
string thisLabel;
m->openInputFile(filename, in);
+ globaldata->saveNextLabel = "";
if(in){
- if (format == "sharedfile") {
+ if (format == "relabund") {
while (in.eof() != true) {
SharedRAbundFloatVector* SharedRelAbund = new SharedRAbundFloatVector(in);
}else{ break; }
m->gobble(in);
}
- }
+ }else if (format == "sharedfile") {
+ while (in.eof() != true) {
+
+ SharedRAbundVector* SharedRAbund = new SharedRAbundVector(in);
+ if (SharedRAbund != NULL) {
+ thisLabel = SharedRAbund->getLabel();
+
+ //if you are at the last label
+ if (thisLabel == label) {
+ in.close();
+ vector<SharedRAbundVector*> lookup = SharedRAbund->getSharedRAbundVectors();
+ vector<SharedRAbundFloatVector*> lookupFloat = SharedRAbund->getSharedRAbundFloatVectors(lookup);
+ for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; } lookup.clear();
+ return lookupFloat;
+ }else {
+ //so you don't loose this memory
+ vector<SharedRAbundVector*> lookup = SharedRAbund->getSharedRAbundVectors();
+ for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; } lookup.clear();
+ delete SharedRAbund;
+ }
+ }else{ break; }
+ m->gobble(in);
+ }
+ }
}
+
//this is created to signal to calling function that the input file is at eof
vector<SharedRAbundFloatVector*> null; null.push_back(NULL);