Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

LoggerMacros.h

Go to the documentation of this file.
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.