![]() |
00001 // Copyright (C) 2003 Jim Tilander. 00002 // Licensed under the GNU GPL Version 2. 00003 // 00004 // Modified for DOLFIN by Anders Logg. 00005 00006 #ifndef __LOGGER_MACROS_H 00007 #define __LOGGER_MACROS_H 00008 00009 #include <stdarg.h> 00010 #include <dolfin/LogManager.h> 00011 00012 // Info (does not need to be a macro) 00013 namespace dolfin { void dolfin_info(const char *msg, ...); } 00014 namespace dolfin { void dolfin_info_aptr(const char *msg, va_list aptr); } 00015 00016 // Update (force refresh of curses interface) 00017 namespace dolfin { void dolfin_update(); } 00018 00019 // Stop program 00020 namespace dolfin { void dolfin_quit(); } 00021 00022 // Check if the computation is still running 00023 namespace dolfin { bool dolfin_finished(); } 00024 00025 // Raise a segmentation fault, useful for debugging 00026 namespace dolfin { void dolfin_segfault(); } 00027 00028 // Task notification 00029 00030 namespace dolfin { void dolfin_start(); } 00031 namespace dolfin { void dolfin_start(const char* msg, ...); } 00032 namespace dolfin { void dolfin_end(); } 00033 namespace dolfin { void dolfin_end(const char* msg, ...); } 00034 00035 // Switch logging on or off 00036 namespace dolfin { void dolfin_log(bool state); } 00037 00038 // Debug macros (with varying number of arguments) 00039 00040 #define dolfin_debug(msg) do { dolfin::LogManager::log.debug(__FILE__, __LINE__, __FUNCTION__, msg); } while( false ) 00041 #define dolfin_debug1(msg, a0) do { dolfin::LogManager::log.debug(__FILE__, __LINE__, __FUNCTION__, msg, a0); } while( false ) 00042 #define dolfin_debug2(msg, a0, a1) do { dolfin::LogManager::log.debug(__FILE__, __LINE__, __FUNCTION__, msg, a0, a1); } while( false ) 00043 #define dolfin_debug3(msg, a0, a1, a2) do { dolfin::LogManager::log.debug(__FILE__, __LINE__, __FUNCTION__, msg, a0, a1, a2); } while( false ) 00044 #define dolfin_debug4(msg, a0, a1, a2, a3) do { dolfin::LogManager::log.debug(__FILE__, __LINE__, __FUNCTION__, msg, a0, a1, a2, a3); } while( false ) 00045 00046 // Warning macros (with varying number of arguments) 00047 00048 #define dolfin_warning(msg) do { dolfin::LogManager::log.warning(__FILE__, __LINE__, __FUNCTION__, msg); } while( false ) 00049 #define dolfin_warning1(msg, a0) do { dolfin::LogManager::log.warning(__FILE__, __LINE__, __FUNCTION__, msg, a0); } while( false ) 00050 #define dolfin_warning2(msg, a0, a1) do { dolfin::LogManager::log.warning(__FILE__, __LINE__, __FUNCTION__, msg, a0, a1); } while( false ) 00051 #define dolfin_warning3(msg, a0, a1, a2) do { dolfin::LogManager::log.warning(__FILE__, __LINE__, __FUNCTION__, msg, a0, a1, a2); } while( false ) 00052 #define dolfin_warning4(msg, a0, a1, a2, a3) do { dolfin::LogManager::log.warning(__FILE__, __LINE__, __FUNCTION__, msg, a0, a1, a2, a3); } while( false ) 00053 00054 // Error macros (with varying number of arguments) 00055 00056 #define dolfin_error(msg) do { dolfin::LogManager::log.error(__FILE__, __LINE__, __FUNCTION__, msg); } while( false ) 00057 #define dolfin_error1(msg, a0) do { dolfin::LogManager::log.error(__FILE__, __LINE__, __FUNCTION__, msg, a0); } while( false ) 00058 #define dolfin_error2(msg, a0, a1) do { dolfin::LogManager::log.error(__FILE__, __LINE__, __FUNCTION__, msg, a0, a1); } while( false ) 00059 #define dolfin_error3(msg, a0, a1, a2) do { dolfin::LogManager::log.error(__FILE__, __LINE__, __FUNCTION__, msg, a0, a1, a2); } while( false ) 00060 #define dolfin_error4(msg, a0, a1, a2, a3) do { dolfin::LogManager::log.error(__FILE__, __LINE__, __FUNCTION__, msg, a0, a1, a2, a3); } while( false ) 00061 00062 // Assertion, turned off if DEBUG is not defined 00063 00064 #ifdef DEBUG 00065 #define dolfin_assert(check) do { if ( !(check) ) dolfin::LogManager::log.dassert(__FILE__, __LINE__, __FUNCTION__, "(" #check ")"); } while ( false ) 00066 #else 00067 #define dolfin_assert(check) 00068 #endif 00069 00070 #endif
Documentation automatically generated with Doxygen on 10 Sep 2004.