00001 #ifndef __EH_MESSAGES_H__
00002 #define __EH_MESSAGES_H__
00003
00004 #if defined( DISABLE_WATCH_POINTS )
00005
00006 #define eh_watch_int( val ) {}
00007 #define eh_watch_lng( val ) {}
00008 #define eh_watch_ptr( val ) {}
00009 #define eh_watch_dbl( val ) {}
00010 #define eh_watch_exp( val ) {}
00011 #define eh_watch_str( val ) {}
00012 #define eh_watch_chr( val ) {}
00013 #define eh_watch_dbl_vec( val , l , h ) {}
00014
00015 #else
00016
00017 #define eh_watch_int( val ) G_STMT_START { \
00018 fprintf(stderr, \
00019 "%s = %d (%s, line %d)\n", \
00020 #val, \
00021 val, \
00022 g_basename(__FILE__), \
00023 __LINE__), \
00024 fflush(stderr); } G_STMT_END
00025
00026 #define eh_watch_lng( val ) G_STMT_START { \
00027 fprintf(stderr, \
00028 "%s = %ld (%s, line %d)\n", \
00029 #val, \
00030 val, \
00031 g_basename(__FILE__), \
00032 __LINE__), \
00033 fflush(stderr); } G_STMT_END
00034
00035 #define eh_watch_ptr( val ) G_STMT_START { \
00036 fprintf(stderr, \
00037 "%s = %p (%s, line %d)\n", \
00038 #val, \
00039 val, \
00040 g_basename(__FILE__), \
00041 __LINE__), \
00042 fflush(stderr); } G_STMT_END
00043
00044 #define eh_watch_dbl( val ) G_STMT_START { \
00045 if ( fabs(val) < 1e3 && fabs(val)>1e-3 ) \
00046 fprintf(stderr, \
00047 "%s = %f (%s, line %d)\n", \
00048 #val, \
00049 val, \
00050 g_basename(__FILE__), \
00051 __LINE__), \
00052 fflush(stderr); \
00053 else \
00054 eh_watch_exp( val ); } G_STMT_END
00055
00056 #define eh_watch_exp( val ) G_STMT_START { \
00057 fprintf(stderr, \
00058 "%s = %g (%s, line %d)\n", \
00059 #val, \
00060 val, \
00061 g_basename(__FILE__), \
00062 __LINE__), \
00063 fflush(stderr); } G_STMT_END
00064
00065 #define eh_watch_str( val ) G_STMT_START { \
00066 fprintf(stderr, \
00067 "%s = %s (%s, line %d)\n", \
00068 #val, \
00069 (val)?(val):"(null)" , \
00070 g_basename(__FILE__), \
00071 __LINE__), \
00072 fflush(stderr); } G_STMT_END
00073
00074 #define eh_watch_chr( val ) G_STMT_START { \
00075 fprintf(stderr, \
00076 "%s = %f (%s, line %d)\n", \
00077 #val, \
00078 val, \
00079 g_basename(__FILE__), \
00080 __LINE__), \
00081 fflush(stderr); } G_STMT_END
00082
00083 #define eh_watch_dbl_vec( val , l , h ) G_STMT_START { \
00084 int i; \
00085 for ( i=l ; i<=h ; i++ ) { \
00086 fprintf(stderr, \
00087 "%s[%d] = %f (%s, line %d)\n", \
00088 #val, \
00089 i, \
00090 val[i], \
00091 g_basename(__FILE__), \
00092 __LINE__), \
00093 fflush(stderr); } } G_STMT_END
00094
00095 #endif
00096
00097 #if defined( DISABLE_CHECKS )
00098
00099 #define eh_require( expr ) { }
00100 #define eh_require_msg( expr ) { }
00101 #define eh_require_critical( expr ) { }
00102 #define eh_require_msg_critical( expr ) { }
00103 #define eh_require_not_reached( ) { }
00104 #define eh_make_note( expr ) { (expr); }
00105 #define eh_return_if_fail( expr ) { }
00106 #define eh_return_val_if_fail( expr , val ) { }
00107
00108 #else
00109
00110 #define eh_require( expr ) \
00111 if ( !(expr) ) { \
00112 fprintf( stderr , \
00113 "%s : line %d : requirement failed : (%s)\n" , \
00114 g_basename(__FILE__), \
00115 __LINE__, \
00116 #expr ), \
00117 fflush( stderr ); } else
00118
00119 #define eh_require_msg( expr , msg ) \
00120 if ( !(expr) ) { \
00121 fprintf( stderr , \
00122 "%s : line %d : requirement (%s) failed : (%s)\n" , \
00123 g_basename(__FILE__), \
00124 __LINE__, \
00125 (msg)?(msg):"NULL" , \
00126 #expr ), \
00127 fflush( stderr ); } else
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139 #define eh_require_msg_critical( expr , msg ) \
00140 if ( !(expr) ) { eh_require_msg( expr , msg ); eh_exit(-1); } else
00141
00142 #define eh_require_critical( expr ) \
00143 if ( !(expr) ) { eh_require( expr ); eh_exit(-1); } else
00144
00145 #define eh_require_not_reached( ) { \
00146 fprintf( stderr , \
00147 "%s : line %d : should not be reached\n" , \
00148 g_basename(__FILE__) , \
00149 __LINE__ ), \
00150 fflush( stderr ); }
00151
00152 #define eh_make_note( expr ) { \
00153 (expr), \
00154 fprintf( stderr , \
00155 "%s : line %d : %s\n" , \
00156 g_basename(__FILE__) , \
00157 __LINE__ , \
00158 #expr ), \
00159 fflush( stderr ); }
00160
00161 #define eh_note_block( msg , expr ) \
00162 if ( (expr) ) \
00163 { \
00164 gchar* base_name = g_path_get_basename(__FILE__); \
00165 eh_debug( \
00166 "%s : line %d : %s\n" , \
00167 base_name , \
00168 __LINE__, \
00169 (msg)?(msg):"NULL" ) , \
00170 eh_free( base_name ); \
00171 fflush( stderr ); \
00172 } \
00173 if ( !(expr) ) {} else
00174
00175 #define eh_return_val_if_fail( expr , val ) if ( !(expr) ) { return (val); } else
00176 #define eh_return_if_fail( expr ) if ( !(expr) ) { return; } else
00177
00178 #endif
00179
00180 #endif