libyasm

libyasm/errwarn.h

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