00001
00034 #ifndef YASM_ERRWARN_H
00035 #define YASM_ERRWARN_H
00036
00037 #ifndef YASM_LIB_DECL
00038 #define YASM_LIB_DECL
00039 #endif
00040
00042 typedef enum yasm_warn_class {
00043 YASM_WARN_NONE = 0,
00044 YASM_WARN_GENERAL,
00045 YASM_WARN_UNREC_CHAR,
00046 YASM_WARN_PREPROC,
00047 YASM_WARN_ORPHAN_LABEL,
00048 YASM_WARN_UNINIT_CONTENTS,
00049 YASM_WARN_SIZE_OVERRIDE,
00050 YASM_WARN_IMPLICIT_SIZE_OVERRIDE
00051 } yasm_warn_class;
00052
00054 typedef enum yasm_error_class {
00055 YASM_ERROR_NONE = 0x0000,
00056 YASM_ERROR_GENERAL = 0xFFFF,
00057 YASM_ERROR_ARITHMETIC = 0x0001,
00058 YASM_ERROR_OVERFLOW = 0x8001,
00059 YASM_ERROR_FLOATING_POINT = 0x4001,
00060 YASM_ERROR_ZERO_DIVISION = 0x2001,
00061 YASM_ERROR_ASSERTION = 0x0002,
00062 YASM_ERROR_VALUE = 0x0004,
00064 YASM_ERROR_NOT_ABSOLUTE = 0x8004,
00065 YASM_ERROR_TOO_COMPLEX = 0x4004,
00066 YASM_ERROR_NOT_CONSTANT = 0x2004,
00067 YASM_ERROR_IO = 0x0008,
00068 YASM_ERROR_NOT_IMPLEMENTED = 0x0010,
00069 YASM_ERROR_TYPE = 0x0020,
00070 YASM_ERROR_SYNTAX = 0x0040,
00071 YASM_ERROR_PARSE = 0x8040
00072 } yasm_error_class;
00073
00075 YASM_LIB_DECL
00076 void yasm_errwarn_initialize(void);
00077
00081 YASM_LIB_DECL
00082 void yasm_errwarn_cleanup(void);
00083
00092 YASM_LIB_DECL
00093 extern void (*yasm_internal_error_)
00094 (const char *file, unsigned int line, const char *message);
00095
00100 #define yasm_internal_error(message) \
00101 yasm_internal_error_(__FILE__, __LINE__, message)
00102
00109 YASM_LIB_DECL
00110 extern void (*yasm_fatal) (const char *message, va_list va);
00111
00118 YASM_LIB_DECL
00119 void yasm__fatal(const char *message, ...);
00120
00124 YASM_LIB_DECL
00125 void yasm_error_clear(void);
00126
00132 yasm_error_class yasm_error_occurred(void);
00133
00141 YASM_LIB_DECL
00142 int yasm_error_matches(yasm_error_class eclass);
00143
00144 #ifndef YASM_DOXYGEN
00145 YASM_LIB_DECL
00146 extern yasm_error_class yasm_eclass;
00147 #define yasm_error_occurred() yasm_eclass
00148 #endif
00149
00156 YASM_LIB_DECL
00157 void yasm_error_set_va(yasm_error_class eclass, const char *format, va_list va);
00158
00165 YASM_LIB_DECL
00166 void yasm_error_set(yasm_error_class eclass, const char *format, ...)
00167 ;
00168
00176 YASM_LIB_DECL
00177 void yasm_error_set_xref_va(unsigned long xrefline, const char *format,
00178 va_list va);
00179
00187 YASM_LIB_DECL
00188 void yasm_error_set_xref(unsigned long xrefline, const char *format, ...)
00189 ;
00190
00203 YASM_LIB_DECL
00204 void yasm_error_fetch( yasm_error_class *eclass,
00205 char **str,
00206 unsigned long *xrefline,
00207 char **xrefstr);
00208
00212 YASM_LIB_DECL
00213 void yasm_warn_clear(void);
00214
00220 YASM_LIB_DECL
00221 yasm_warn_class yasm_warn_occurred(void);
00222
00228 YASM_LIB_DECL
00229 void yasm_warn_set_va(yasm_warn_class wclass, const char *format, va_list va);
00230
00236 YASM_LIB_DECL
00237 void yasm_warn_set(yasm_warn_class wclass, const char *format, ...)
00238 ;
00239
00250 YASM_LIB_DECL
00251 void yasm_warn_fetch( yasm_warn_class *wclass,
00252 char **str);
00253
00257 YASM_LIB_DECL
00258 void yasm_warn_enable(yasm_warn_class wclass);
00259
00263 YASM_LIB_DECL
00264 void yasm_warn_disable(yasm_warn_class wclass);
00265
00267 YASM_LIB_DECL
00268 void yasm_warn_disable_all(void);
00269
00273 YASM_LIB_DECL
00274 yasm_errwarns *yasm_errwarns_create(void);
00275
00279 YASM_LIB_DECL
00280 void yasm_errwarns_destroy( yasm_errwarns *errwarns);
00281
00292 YASM_LIB_DECL
00293 void yasm_errwarn_propagate(yasm_errwarns *errwarns, unsigned long line);
00294
00300 YASM_LIB_DECL
00301 unsigned int yasm_errwarns_num_errors(yasm_errwarns *errwarns,
00302 int warning_as_error);
00303
00312 typedef void (*yasm_print_error_func)
00313 (const char *fn, unsigned long line, const char *msg,
00314 const char *xref_fn, unsigned long xref_line,
00315 const char *xref_msg);
00316
00322 typedef void (*yasm_print_warning_func)
00323 (const char *fn, unsigned long line, const char *msg);
00324
00332 YASM_LIB_DECL
00333 void yasm_errwarns_output_all
00334 (yasm_errwarns *errwarns, yasm_linemap *lm, int warning_as_error,
00335 yasm_print_error_func print_error, yasm_print_warning_func print_warning);
00336
00342 YASM_LIB_DECL
00343 char *yasm__conv_unprint(int ch);
00344
00349 YASM_LIB_DECL
00350 extern const char * (*yasm_gettext_hook) (const char *msgid);
00351
00352 #endif