1 #ifndef UNITTEST_REPORTASSERTIMPL_H
2 #define UNITTEST_REPORTASSERTIMPL_H
3 
4 #include "Config.h"
5 #include "HelperMacros.h"
6 
7 #ifdef UNITTEST_NO_EXCEPTIONS
8 	#include <csetjmp>
9 #endif
10 
11 namespace UnitTest {
12 
13 class TestResults;
14 class TestDetails;
15 
16 namespace Detail {
17 
18 UNITTEST_LINKAGE void ExpectAssert(bool expected);
19 
20 UNITTEST_LINKAGE void ReportAssertEx(TestResults* testResults,
21 									 const TestDetails* testDetails,
22 									 char const* description,
23 									 char const* filename,
24 									 int lineNumber);
25 
26 UNITTEST_LINKAGE bool AssertExpected();
27 
28 #ifdef UNITTEST_NO_EXCEPTIONS
29 	UNITTEST_LINKAGE UNITTEST_JMPBUF* GetAssertJmpBuf();
30 
31 	#ifdef UNITTEST_WIN32
32 		#define UNITTEST_SET_ASSERT_JUMP_TARGET() \
33 			__pragma(warning(push)) __pragma(warning(disable:4611)) \
34 			UNITTEST_SETJMP(*UnitTest::Detail::GetAssertJmpBuf()) \
35 			__pragma(warning(pop))
36 	#else
37 		#define UNITTEST_SET_ASSERT_JUMP_TARGET() UNITTEST_SETJMP(*UnitTest::Detail::GetAssertJmpBuf())
38 	#endif
39 
40 	#define UNITTEST_JUMP_TO_ASSERT_JUMP_TARGET() UNITTEST_LONGJMP(*UnitTest::Detail::GetAssertJmpBuf(), 1)
41 #endif
42 
43 }
44 }
45 
46 #endif
47