1*19c3b8c2SApple OSS Distributions #ifndef __FAIL_H_ 2*19c3b8c2SApple OSS Distributions #define __FAIL_H_ 3*19c3b8c2SApple OSS Distributions 4*19c3b8c2SApple OSS Distributions #define TOSTRING_HELPER(x) #x 5*19c3b8c2SApple OSS Distributions #define TOSTRING(x) TOSTRING_HELPER(x) 6*19c3b8c2SApple OSS Distributions 7*19c3b8c2SApple OSS Distributions #define PERFINDEX_FAILURE -1 8*19c3b8c2SApple OSS Distributions #define PERFINDEX_SUCCESS 0 9*19c3b8c2SApple OSS Distributions 10*19c3b8c2SApple OSS Distributions extern char* error_str; 11*19c3b8c2SApple OSS Distributions 12*19c3b8c2SApple OSS Distributions #define FAIL(message) do {\ 13*19c3b8c2SApple OSS Distributions error_str = message " at " __FILE__ ": " TOSTRING(__LINE__);\ 14*19c3b8c2SApple OSS Distributions return PERFINDEX_FAILURE;\ 15*19c3b8c2SApple OSS Distributions } while(0) 16*19c3b8c2SApple OSS Distributions 17*19c3b8c2SApple OSS Distributions #define VERIFY(condition, fail_message) do {\ 18*19c3b8c2SApple OSS Distributions if(!(condition)) FAIL(fail_message);\ 19*19c3b8c2SApple OSS Distributions } while(0) 20*19c3b8c2SApple OSS Distributions 21*19c3b8c2SApple OSS Distributions #endif 22