+/***********************************************************************/
+
+inline int openOutputFileAppend(string fileName, ofstream& fileHandle){
+
+ fileHandle.open(fileName.c_str(), ios::app);
+ if(!fileHandle) {
+ cout << "Error: Could not open " << fileName << endl;
+ return 1;
+ }
+ else {
+ return 0;
+ }
+
+}
+
+/**************************************************************************************************/
+
+inline void mothurOut(string message) {
+ try{
+ ofstream out;
+ string logFileName = "mothur.logFile";
+ openOutputFileAppend(logFileName, out);
+
+ cout << message;
+ out << message;
+
+ out.close();
+ }
+ catch(exception& e) {
+ cout << "Error in mothur class mothurOut" << endl;
+ exit(1);
+ }
+}
+/**************************************************************************************************/
+
+inline void mothurOut(string message, string precision) {
+ try{
+ ofstream out;
+ string logFileName = "mothur.logFile";
+ openOutputFileAppend(logFileName, out);
+
+ cout << precision << message;
+ out << precision << message;
+
+ out.close();
+ }
+ catch(exception& e) {
+ cout << "Error in mothur class mothurOut" << endl;
+ exit(1);
+ }
+}
+
+/**************************************************************************************************/
+
+inline void mothurOutEndLine() {
+ try {
+ ofstream out;
+ string logFileName = "mothur.logFile";
+ openOutputFileAppend(logFileName, out);
+
+ cout << endl;
+ out << endl;
+
+ out.close();
+ }
+ catch(exception& e) {
+ cout << "error in mothur mothurOutEndLine" << endl;
+ exit(1);
+ }
+}
+
+
+/**************************************************************************************************/
+
+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.");
+ mothurOutEndLine();
+
+}
+
+