]> git.donarmstrong.com Git - mothur.git/blobdiff - mothur.h
added groups option to read.otu, added qtrim option to trim.seqs, fixed bug in get...
[mothur.git] / mothur.h
index 29124330420f1af5e8a7b5f54fb8f86689e20ee9..23b9f189c992f97e2e9a47823cacce62db363696 100644 (file)
--- a/mothur.h
+++ b/mothur.h
 #include <ctime>
 #include <limits>
 
-using namespace std;
 
-#ifdef _WIN32
-       #define exp(x) (exp((double) x))
-       #define sqrt(x) (sqrt((double) x))
-       #define log10(x) (log10((double) x))
-       #define log2(x) (log10(x)/log10(2))
-       #define isnan(x) ((x) != (x))
-       #define isinf(x) (fabs(x) == std::numeric_limits<double>::infinity())
-#else
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
        #include <sys/wait.h>
        #include <unistd.h>
 #endif
 
+using namespace std;
+
+#define exp(x) (exp((double) x))
+#define sqrt(x) (sqrt((double) x))
+#define log10(x) (log10((double) x))
+#define log2(x) (log10(x)/log10(2))
+#define isnan(x) ((x) != (x))
+#define isinf(x) (fabs(x) == std::numeric_limits<double>::infinity())
+
 
 typedef unsigned long ull;
 
@@ -77,6 +78,14 @@ struct ThreadNode {
        IntNode* right;
 };
 
+/************************************************************/
+struct clusterNode {
+       int numSeq;
+       int parent;
+       int smallChild; //used to make linkTable work with list and rabund. represents bin number of this cluster node
+       clusterNode(int num, int par, int kid) : numSeq(num), parent(par), smallChild(kid) {};
+};
+
 /***********************************************************************/
 
 // snagged from http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.2
@@ -96,6 +105,7 @@ inline void convert(const string& s, T& x, bool failIfLeftoverChars = true){
        if (!(i >> x) || (failIfLeftoverChars && i.get(c)))
                throw BadConversion(s);
 }
+
 //**********************************************************************************************************************
 
 template<typename T>
@@ -169,6 +179,16 @@ inline int openOutputFileAppend(string fileName, ofstream& fileHandle){
 }
 /***********************************************************************/
 
+inline void gobble(istream& f){
+       
+       char d;
+    while(isspace(d=f.get()))          {;}
+       f.putback(d);
+       
+}
+
+/***********************************************************************/
+
 inline string getline(ifstream& fileHandle) {
        try {
        
@@ -179,7 +199,7 @@ inline string getline(ifstream& fileHandle) {
                        char c = fileHandle.get(); 
                        
                        //are you at the end of the line
-                       if (c == 10 || c == 13){   break;       }       
+                       if ((c == '\n') || (c == '\r') || (c == '\f')){  break; }       
                        else {          line += c;              }
                }
                
@@ -255,7 +275,7 @@ inline void errorOut(exception& e, string object, string function) {
        
                mothurOut("Error: ");
                mothurOut(toString(e.what()));
-               mothurOut(" has occurred in the " + object + " class function " + function + ". Please contact Pat Schloss at pschloss@microbio.umass.edu, and be sure to include the mothur.logFile with your inquiry.");
+               mothurOut(" has occurred in the " + object + " class function " + function + ". Please contact Pat Schloss at mothur.bugs@gmail.com, and be sure to include the mothur.logFile with your inquiry.");
                mothurOutEndLine();
        
 }
@@ -263,15 +283,6 @@ inline void errorOut(exception& e, string object, string function) {
 
 
 
-/***********************************************************************/
-
-inline void gobble(istream& f){
-       
-       char d;
-    while(isspace(d=f.get()))          {;}
-       f.putback(d);
-       
-}
 /***********************************************************************/
 
 inline bool isTrue(string f){
@@ -422,6 +433,10 @@ inline int openInputFile(string fileName, ifstream& fileHandle){
                return 1;
        }
        else {
+               //check for blank file
+               gobble(fileHandle);
+               if (fileHandle.eof()) { mothurOut(fileName + " is blank. Please correct."); mothurOutEndLine();  return 1;  }
+               
                return 0;
        }