 	stats.time_shuffle = 0;
 }
 
+bool getNextNonEmptyLine(std::ifstream &fin, string &str)
+{
+	if (!fin.is_open())
+		return false;
+
+	while (getline(fin, str)) {
+		int length = str.length();
+
+		if (length == 0)
+			continue;
+		
+		for (int i=0; i < length; i++)
+			if (str[i] > ' ')
+				return true;
+	}
+	return false;
+}

                bool               verbose);

void ClearStats(const SpikeSolver& mySolver);


// -------------------------------------------------------------------

	{ OPT_KRYLOV,        "--krylov-method",      SO_REQ_CMB },
	{ OPT_SAFE_FACT,     "--safe-fact",          SO_NONE    },
	{ OPT_CONST_BAND,    "--const-band",         SO_NONE    },
	{ OPT_VERBOSE,       "-v",                   SO_NONE    },
	{ OPT_VERBOSE,       "--verbose",            SO_NONE    },
    { OPT_HELP,          "-?",                   SO_NONE    },
