]> git.donarmstrong.com Git - rsem.git/blobdiff - my_assert.h
Added error detection for cases such as a read's two mates having different names...
[rsem.git] / my_assert.h
index 02844e1baa3271f6da9e3933c29b1881b11c0824..3688d9630d27869880dc2a12010d34d1d95c1c70 100644 (file)
@@ -9,39 +9,40 @@
 #include<sstream>
 #include<iomanip>
 
-std::string itos(int i) {
+inline std::string itos(int i) {
   std::ostringstream strout;
   strout<<i;
   return strout.str();
 }
 
 // n : number of significant digits
-std::string ftos(double f, int n) {
+inline std::string ftos(double f, int n) {
   std::ostringstream strout;
   strout<<std::setprecision(n)<<f;
   return strout.str();
 }
 
-std::string ctos(char c) {
+inline std::string ctos(char c) {
   return std::string(1, c);
 }
 
-std::string cstrtos(const char* s) {
+inline std::string cstrtos(const char* s) {
   return std::string(s);
 }
 
 
-void general_assert(int expr, const std::string& errmsg, bool putEnter = false) {
-       if (expr) return;
+#define general_assert(expr, errmsg) if (!(expr)) general_report((errmsg), false)
+#define general_assert_1(expr, errmsg) if (!(expr)) general_report((errmsg), true)
 
+inline void general_report(const std::string& errmsg, bool putEnter) {
        if (putEnter) printf("\n");
        fprintf(stderr, "%s\n", errmsg.c_str());
        exit(-1);
 }
 
-void pthread_assert(int rc, const std::string& func_name, const std::string& errmsg) {
-       if (rc == 0) return;
+#define pthread_assert(rc, func_name, errmsg) if ((rc) != 0) pthread_report((rc), (func_name), (errmsg))
 
+inline void pthread_report(int rc, const std::string& func_name, const std::string& errmsg) {
        fprintf(stderr, "%s\n", errmsg.c_str());
 
        if (func_name == "pthread_create") {