]> git.donarmstrong.com Git - rsem.git/commitdiff
Modified my_assert.h to postpone error message string generation
authorBo Li <bli@cs.wisc.edu>
Mon, 15 Apr 2013 05:56:55 +0000 (00:56 -0500)
committerBo Li <bli@cs.wisc.edu>
Mon, 15 Apr 2013 05:56:55 +0000 (00:56 -0500)
my_assert.h
scanForPairedEndReads.cpp

index d63c3a2584b71b09537da0df482bc79126cc0fad..3688d9630d27869880dc2a12010d34d1d95c1c70 100644 (file)
@@ -31,17 +31,18 @@ inline std::string cstrtos(const char* s) {
 }
 
 
-inline 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);
 }
 
-inline 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") {
index b220fa82f2dcd9d8c16843a9b18ac7f42611f06c..7b20e11d9d9e81252f14f3f8c5984f96a005fe6d 100644 (file)
@@ -75,12 +75,12 @@ int main(int argc, char* argv[]) {
                if (isPaired) {
                        add_to_appropriate_arr(b);
                        while ((go_on = (samread(in, b) >= 0)) && (qname == bam1_qname(b))) {
-                               general_assert(b->core.flag & 0x0001, "Read " + qname + " is detected as both single-end and paired-end read!", true);
+                               general_assert_1(b->core.flag & 0x0001, "Read " + qname + " is detected as both single-end and paired-end read!");
                                add_to_appropriate_arr(b);
                        }
 
-                       general_assert(arr_both.size() % 2 == 0, "Number of first and second mates in read " + qname + "'s full alignments (both mates are aligned) are not matched!", true);
-                       general_assert((arr_partial_1.size() + arr_partial_2.size() + arr_partial_unknown.size()) % 2 == 0, "Number of first and second mates in read " + qname + "'s partial alignments (at most one mate is aligned) are not matched!", true);
+                       general_assert_1(arr_both.size() % 2 == 0, "Number of first and second mates in read " + qname + "'s full alignments (both mates are aligned) are not matched!");
+                       general_assert_1((arr_partial_1.size() + arr_partial_2.size() + arr_partial_unknown.size()) % 2 == 0, "Number of first and second mates in read " + qname + "'s partial alignments (at most one mate is aligned) are not matched!");
 
                        if (!arr_both.empty()) {
                                sort(arr_both.begin(), arr_both.end(), less_than);