mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 12:17:11 +01:00 
			
		
		
		
	Refactored a lot of code from headers into impl headers only compiled into one TU
- also added noimpl option to single header script - which only generates the non impl code
This commit is contained in:
		
							
								
								
									
										49
									
								
								include/internal/catch_debugger.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								include/internal/catch_debugger.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| /* | ||||
|  *  Created by Phil on 3/12/2013. | ||||
|  *  Copyright 2013 Two Blue Cubes Ltd. All rights reserved. | ||||
|  * | ||||
|  *  Distributed under the Boost Software License, Version 1.0. (See accompanying | ||||
|  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
|  * | ||||
|  */ | ||||
| #ifndef TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED | ||||
| #define TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED | ||||
|  | ||||
| #include "catch_platform.h" | ||||
|  | ||||
| #include <string> | ||||
|  | ||||
| namespace Catch{ | ||||
|  | ||||
|     bool isDebuggerActive(); | ||||
|     void writeToDebugConsole( std::string const& text ); | ||||
| } | ||||
|  | ||||
| #ifdef CATCH_PLATFORM_MAC | ||||
|  | ||||
|     // The following code snippet based on: | ||||
|     // http://cocoawithlove.com/2008/03/break-into-debugger.html | ||||
|     #ifdef DEBUG | ||||
|         #if defined(__ppc64__) || defined(__ppc__) | ||||
|             #define CATCH_BREAK_INTO_DEBUGGER() \ | ||||
|                 if( Catch::isDebuggerActive() ) { \ | ||||
|                     __asm__("li r0, 20\nsc\nnop\nli r0, 37\nli r4, 2\nsc\nnop\n" \ | ||||
|                     : : : "memory","r0","r3","r4" ); \ | ||||
|                 } | ||||
|         #else | ||||
|             #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) {__asm__("int $3\n" : : );} | ||||
|         #endif | ||||
|     #endif | ||||
|  | ||||
| #elif defined(_MSC_VER) | ||||
|     #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) { __debugbreak(); } | ||||
| #elif defined(__MINGW32__) | ||||
|     extern "C" __declspec(dllimport) void __stdcall DebugBreak(); | ||||
|     #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) { DebugBreak(); } | ||||
| #endif | ||||
|  | ||||
| #ifndef CATCH_BREAK_INTO_DEBUGGER | ||||
| #define CATCH_BREAK_INTO_DEBUGGER() | ||||
| #endif | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash