X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Futils%2Fmono-error-internals.h;h=d181c3b88b1f8f39d1992eb4cfdf3cb47b7e0372;hb=56b3c007f428d93b7f230d58744393ad69e4ca63;hp=23bd0648157e60c71ce4a416d5a59eafc17a1063;hpb=5ed50ba7e377cd2591c2b052019635a6697f93c6;p=mono.git diff --git a/mono/utils/mono-error-internals.h b/mono/utils/mono-error-internals.h index 23bd0648157..d181c3b88b1 100644 --- a/mono/utils/mono-error-internals.h +++ b/mono/utils/mono-error-internals.h @@ -1,3 +1,7 @@ +/** + * \file + */ + #ifndef __MONO_ERROR_INTERNALS_H__ #define __MONO_ERROR_INTERNALS_H__ @@ -32,6 +36,12 @@ typedef struct { void *padding [3]; } MonoErrorInternal; +/* Invariant: the error strings are allocated in the mempool of the given image */ +struct _MonoErrorBoxed { + MonoError error; + MonoImage *image; +}; + #define error_init(error) do { \ ((MonoErrorInternal*)(error))->error_code = MONO_ERROR_NONE; \ ((MonoErrorInternal*)(error))->flags = 0; \ @@ -57,62 +67,74 @@ mono_error_dup_strings (MonoError *error, gboolean dup_strings); /* This function is not very useful as you can't provide any details beyond the message.*/ void -mono_error_set_error (MonoError *error, int error_code, const char *msg_format, ...); +mono_error_set_error (MonoError *error, int error_code, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(3,4); void -mono_error_set_assembly_load (MonoError *error, const char *assembly_name, const char *msg_format, ...); +mono_error_set_assembly_load (MonoError *error, const char *assembly_name, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(3,4); void mono_error_set_assembly_load_simple (MonoError *error, const char *assembly_name, gboolean refection_only); void -mono_error_set_type_load_class (MonoError *error, MonoClass *klass, const char *msg_format, ...); +mono_error_set_type_load_class (MonoError *error, MonoClass *klass, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(3,4); + +void +mono_error_vset_type_load_class (MonoError *error, MonoClass *klass, const char *msg_format, va_list args); void -mono_error_set_type_load_name (MonoError *error, const char *type_name, const char *assembly_name, const char *msg_format, ...); +mono_error_set_type_load_name (MonoError *error, const char *type_name, const char *assembly_name, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(4,5); void -mono_error_set_method_load (MonoError *error, MonoClass *klass, const char *method_name, const char *msg_format, ...); +mono_error_set_method_load (MonoError *error, MonoClass *klass, const char *method_name, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(4,5); void -mono_error_set_field_load (MonoError *error, MonoClass *klass, const char *field_name, const char *msg_format, ...); +mono_error_set_field_load (MonoError *error, MonoClass *klass, const char *field_name, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(4,5); void -mono_error_set_bad_image (MonoError *error, MonoImage *image, const char *msg_format, ...); +mono_error_set_bad_image (MonoError *error, MonoImage *image, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(3,4); void -mono_error_set_bad_image_name (MonoError *error, const char *file_name, const char *msg_format, ...); +mono_error_set_bad_image_name (MonoError *error, const char *file_name, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(3,4); void -mono_error_set_out_of_memory (MonoError *error, const char *msg_format, ...); +mono_error_set_out_of_memory (MonoError *error, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(2,3); void -mono_error_set_argument (MonoError *error, const char *argument, const char *msg_format, ...); +mono_error_set_argument (MonoError *error, const char *argument, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(3,4); void -mono_error_set_argument_null (MonoError *oerror, const char *argument, const char *msg_format, ...); +mono_error_set_argument_null (MonoError *oerror, const char *argument, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(3,4); void -mono_error_set_not_verifiable (MonoError *oerror, MonoMethod *method, const char *msg_format, ...); +mono_error_set_not_verifiable (MonoError *oerror, MonoMethod *method, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(3,4); void -mono_error_set_generic_error (MonoError *error, const char * name_space, const char *name, const char *msg_format, ...); +mono_error_set_generic_error (MonoError *error, const char * name_space, const char *name, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(4,5); void -mono_error_set_execution_engine (MonoError *error, const char *msg_format, ...); +mono_error_set_execution_engine (MonoError *error, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(2,3); void -mono_error_set_not_implemented (MonoError *error, const char *msg_format, ...); +mono_error_set_not_implemented (MonoError *error, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(2,3); void -mono_error_set_not_supported (MonoError *error, const char *msg_format, ...); +mono_error_set_not_supported (MonoError *error, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(2,3); void -mono_error_set_invalid_operation (MonoError *error, const char *msg_format, ...); +mono_error_set_invalid_operation (MonoError *error, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(2,3); + +void +mono_error_set_file_not_found (MonoError *error, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(2,3); void mono_error_set_exception_instance (MonoError *error, MonoException *exc); +void +mono_error_set_invalid_program (MonoError *oerror, const char *msg_format, ...) MONO_ATTR_FORMAT_PRINTF(2,3); + +void +mono_error_set_invalid_cast (MonoError *oerror); + MonoException* mono_error_prepare_exception (MonoError *error, MonoError *error_out); @@ -125,4 +147,13 @@ mono_error_raise_exception (MonoError *error); void mono_error_move (MonoError *dest, MonoError *src); +MonoErrorBoxed* +mono_error_box (const MonoError *error, MonoImage *image); + +gboolean +mono_error_set_from_boxed (MonoError *error, const MonoErrorBoxed *from); + +const char* +mono_error_get_exception_name (MonoError *oerror); + #endif