|
libyasm
|
00001 00030 #ifndef YASM_ERRWARN_H 00031 #define YASM_ERRWARN_H 00032 00033 #ifndef YASM_LIB_DECL 00034 #define YASM_LIB_DECL 00035 #endif 00036 00038 typedef enum yasm_warn_class { 00039 YASM_WARN_NONE = 0, 00040 YASM_WARN_GENERAL, 00041 YASM_WARN_UNREC_CHAR, 00042 YASM_WARN_PREPROC, 00043 YASM_WARN_ORPHAN_LABEL, 00044 YASM_WARN_UNINIT_CONTENTS, 00045 YASM_WARN_SIZE_OVERRIDE, 00046 YASM_WARN_IMPLICIT_SIZE_OVERRIDE 00047 } yasm_warn_class; 00048 00050 typedef enum yasm_error_class { 00051 YASM_ERROR_NONE = 0x0000, 00052 YASM_ERROR_GENERAL = 0xFFFF, 00053 YASM_ERROR_ARITHMETIC = 0x0001, 00054 YASM_ERROR_OVERFLOW = 0x8001, 00055 YASM_ERROR_FLOATING_POINT = 0x4001, 00056 YASM_ERROR_ZERO_DIVISION = 0x2001, 00057 YASM_ERROR_ASSERTION = 0x0002, 00058 YASM_ERROR_VALUE = 0x0004, 00060 YASM_ERROR_NOT_ABSOLUTE = 0x8004, 00061 YASM_ERROR_TOO_COMPLEX = 0x4004, 00062 YASM_ERROR_NOT_CONSTANT = 0x2004, 00063 YASM_ERROR_IO = 0x0008, 00064 YASM_ERROR_NOT_IMPLEMENTED = 0x0010, 00065 YASM_ERROR_TYPE = 0x0020, 00066 YASM_ERROR_SYNTAX = 0x0040, 00067 YASM_ERROR_PARSE = 0x8040 00068 } yasm_error_class; 00069 00071 YASM_LIB_DECL 00072 void yasm_errwarn_initialize(void); 00073 00077 YASM_LIB_DECL 00078 void yasm_errwarn_cleanup(void); 00079 00088 YASM_LIB_DECL 00089 extern /*@exits@*/ void (*yasm_internal_error_) 00090 (const char *file, unsigned int line, const char *message); 00091 00096 #define yasm_internal_error(message) \ 00097 yasm_internal_error_(__FILE__, __LINE__, message) 00098 00105 YASM_LIB_DECL 00106 extern /*@exits@*/ void (*yasm_fatal) (const char *message, va_list va); 00107 00114 YASM_LIB_DECL 00115 /*@exits@*/ void yasm__fatal(const char *message, ...); 00116 00120 YASM_LIB_DECL 00121 void yasm_error_clear(void); 00122 00128 yasm_error_class yasm_error_occurred(void); 00129 00137 YASM_LIB_DECL 00138 int yasm_error_matches(yasm_error_class eclass); 00139 00140 #ifndef YASM_DOXYGEN 00141 YASM_LIB_DECL 00142 extern yasm_error_class yasm_eclass; 00143 #define yasm_error_occurred() yasm_eclass 00144 #endif 00145 00152 YASM_LIB_DECL 00153 void yasm_error_set_va(yasm_error_class eclass, const char *format, va_list va); 00154 00161 YASM_LIB_DECL 00162 void yasm_error_set(yasm_error_class eclass, const char *format, ...) 00163 /*@printflike@*/; 00164 00172 YASM_LIB_DECL 00173 void yasm_error_set_xref_va(unsigned long xrefline, const char *format, 00174 va_list va); 00175 00183 YASM_LIB_DECL 00184 void yasm_error_set_xref(unsigned long xrefline, const char *format, ...) 00185 /*@printflike@*/; 00186 00199 YASM_LIB_DECL 00200 void yasm_error_fetch(/*@out@*/ yasm_error_class *eclass, 00201 /*@out@*/ /*@only@*/ /*@null@*/ char **str, 00202 /*@out@*/ unsigned long *xrefline, 00203 /*@out@*/ /*@only@*/ /*@null@*/ char **xrefstr); 00204 00208 YASM_LIB_DECL 00209 void yasm_warn_clear(void); 00210 00216 YASM_LIB_DECL 00217 yasm_warn_class yasm_warn_occurred(void); 00218 00224 YASM_LIB_DECL 00225 void yasm_warn_set_va(yasm_warn_class wclass, const char *format, va_list va); 00226 00232 YASM_LIB_DECL 00233 void yasm_warn_set(yasm_warn_class wclass, const char *format, ...) 00234 /*@printflike@*/; 00235 00246 YASM_LIB_DECL 00247 void yasm_warn_fetch(/*@out@*/ yasm_warn_class *wclass, 00248 /*@out@*/ /*@only@*/ char **str); 00249 00253 YASM_LIB_DECL 00254 void yasm_warn_enable(yasm_warn_class wclass); 00255 00259 YASM_LIB_DECL 00260 void yasm_warn_disable(yasm_warn_class wclass); 00261 00263 YASM_LIB_DECL 00264 void yasm_warn_disable_all(void); 00265 00269 YASM_LIB_DECL 00270 /*@only@*/ yasm_errwarns *yasm_errwarns_create(void); 00271 00275 YASM_LIB_DECL 00276 void yasm_errwarns_destroy(/*@only@*/ yasm_errwarns *errwarns); 00277 00288 YASM_LIB_DECL 00289 void yasm_errwarn_propagate(yasm_errwarns *errwarns, unsigned long line); 00290 00296 YASM_LIB_DECL 00297 unsigned int yasm_errwarns_num_errors(yasm_errwarns *errwarns, 00298 int warning_as_error); 00299 00308 typedef void (*yasm_print_error_func) 00309 (const char *fn, unsigned long line, const char *msg, 00310 /*@null@*/ const char *xref_fn, unsigned long xref_line, 00311 /*@null@*/ const char *xref_msg); 00312 00318 typedef void (*yasm_print_warning_func) 00319 (const char *fn, unsigned long line, const char *msg); 00320 00328 YASM_LIB_DECL 00329 void yasm_errwarns_output_all 00330 (yasm_errwarns *errwarns, yasm_linemap *lm, int warning_as_error, 00331 yasm_print_error_func print_error, yasm_print_warning_func print_warning); 00332 00338 YASM_LIB_DECL 00339 char *yasm__conv_unprint(int ch); 00340 00345 YASM_LIB_DECL 00346 extern const char * (*yasm_gettext_hook) (const char *msgid); 00347 00348 #endif
1.7.3