33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
| namespace factor {
 | |
| 
 | |
| extern bool factor_print_p;
 | |
| 
 | |
| #ifdef FACTOR_DEBUG
 | |
| 
 | |
| /* To chop the directory path of the __FILE__ macro. */
 | |
| inline const char* abbrev_path(const char* path) {
 | |
|   const char* p1 = strrchr(path, '\\');
 | |
|   const char* p2 = strrchr(path, '/');
 | |
|   return (p1 > p2 ? p1 : p2) + 1;
 | |
| }
 | |
| 
 | |
| #define FACTOR_PRINT(x)                                          \
 | |
|   do {                                                           \
 | |
|     if (factor_print_p) {                                        \
 | |
|       std::cerr                                                  \
 | |
|           << std::setw(16) << std::left << abbrev_path(__FILE__) \
 | |
|           << " " << std::setw(4) << std::right << __LINE__       \
 | |
|           << " " << std::setw(20) << std::left << __FUNCTION__   \
 | |
|           << " " << x                                            \
 | |
|           << std::endl;                                          \
 | |
|     }                                                            \
 | |
|   } while (0)
 | |
| #define FACTOR_PRINT_MARK FACTOR_PRINT("")
 | |
| 
 | |
| #else
 | |
| #define FACTOR_PRINT(fmt, ...) ((void)0)
 | |
| #define FACTOR_PRINT_MARK ((void)0)
 | |
| #endif
 | |
| 
 | |
| }
 |