X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Futils%2Fmono-error-internals.h;h=926e76c9bbd65525f1b1a185d66d84cc29c193f6;hb=2002994d0c06860d22253edbb7bae0ddcda7df44;hp=8067240308997df026b0da010afd58a42157af1d;hpb=e86837b7d28558b34d38f54d4d7e99a97f1aae1b;p=mono.git diff --git a/mono/utils/mono-error-internals.h b/mono/utils/mono-error-internals.h index 80672403089..926e76c9bbd 100644 --- a/mono/utils/mono-error-internals.h +++ b/mono/utils/mono-error-internals.h @@ -15,63 +15,92 @@ typedef struct { const char *member_name; const char *exception_name_space; const char *exception_name; - MonoClass *klass; + union { + /* Valid if error_code != MONO_ERROR_EXCEPTION_INSTANCE. + * Used by type or field load errors and generic error specified by class. + */ + MonoClass *klass; + /* Valid if error_code == MONO_ERROR_EXCEPTION_INSTANCE. + * Generic error specified by a managed instance. + */ + uint32_t instance_handle; + } exn; const char *full_message; + const char *full_message_with_fields; + const char *first_argument; - void *padding [5]; - char message [128]; + void *padding [3]; } MonoErrorInternal; +#define error_init(error) do { \ + (error)->error_code = MONO_ERROR_NONE; \ + (error)->flags = 0; \ +} while (0); + +#define is_ok(error) ((error)->error_code == MONO_ERROR_NONE) + void -mono_error_dup_strings (MonoError *error, gboolean dup_strings) MONO_INTERNAL; +mono_error_assert_ok (MonoError *error); + +void +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_INTERNAL; +mono_error_set_error (MonoError *error, int error_code, const char *msg_format, ...); + +void +mono_error_set_assembly_load (MonoError *error, const char *assembly_name, const char *msg_format, ...); + +void +mono_error_set_assembly_load_simple (MonoError *error, const char *assembly_name, gboolean refection_only); void -mono_error_set_assembly_load (MonoError *error, const char *assembly_name, const char *msg_format, ...) MONO_INTERNAL; +mono_error_set_type_load_class (MonoError *error, MonoClass *klass, const char *msg_format, ...); void -mono_error_set_type_load_class (MonoError *error, MonoClass *klass, const char *msg_format, ...) MONO_INTERNAL; +mono_error_set_type_load_name (MonoError *error, const char *type_name, const char *assembly_name, const char *msg_format, ...); void -mono_error_set_type_load_name (MonoError *error, const char *type_name, const char *assembly_name, const char *msg_format, ...) MONO_INTERNAL; +mono_error_set_method_load (MonoError *error, MonoClass *klass, const char *method_name, const char *msg_format, ...); void -mono_error_set_method_load (MonoError *error, MonoClass *klass, const char *method_name, const char *msg_format, ...) MONO_INTERNAL; +mono_error_set_field_load (MonoError *error, MonoClass *klass, const char *field_name, const char *msg_format, ...); void -mono_error_set_field_load (MonoError *error, MonoClass *klass, const char *field_name, const char *msg_format, ...) MONO_INTERNAL; +mono_error_set_bad_image (MonoError *error, MonoImage *image, const char *msg_format, ...); void -mono_error_set_bad_image (MonoError *error, MonoImage *image, const char *msg_format, ...) MONO_INTERNAL; +mono_error_set_bad_image_name (MonoError *error, const char *file_name, const char *msg_format, ...); void -mono_error_set_bad_image_name (MonoError *error, const char *file_name, const char *msg_format, ...) MONO_INTERNAL; +mono_error_set_out_of_memory (MonoError *error, const char *msg_format, ...); void -mono_error_set_out_of_memory (MonoError *error, const char *msg_format, ...) MONO_INTERNAL; +mono_error_set_argument (MonoError *error, const char *argument, const char *msg_format, ...); void -mono_error_set_argument (MonoError *error, const char *argument, const char *msg_format, ...) MONO_INTERNAL; +mono_error_set_not_verifiable (MonoError *oerror, MonoMethod *method, const char *msg_format, ...); void -mono_error_set_not_verifiable (MonoError *oerror, MonoMethod *method, const char *msg_format, ...) MONO_INTERNAL; +mono_error_set_generic_error (MonoError *error, const char * name_space, const char *name, const char *msg_format, ...); void -mono_error_set_generic_error (MonoError *error, const char * name_space, const char *name, const char *msg_format, ...) MONO_INTERNAL; +mono_error_set_exception_instance (MonoError *error, MonoException *exc); void -mono_error_set_from_loader_error (MonoError *error) MONO_INTERNAL; +mono_error_set_from_loader_error (MonoError *error); + +MonoException* +mono_error_prepare_exception (MonoError *error, MonoError *error_out); MonoException* -mono_error_prepare_exception (MonoError *error, MonoError *error_out) MONO_INTERNAL; +mono_error_convert_to_exception (MonoError *error); void -mono_error_raise_exception (MonoError *error) MONO_INTERNAL; +mono_error_raise_exception (MonoError *error); void -mono_loader_set_error_from_mono_error (MonoError *oerror) MONO_INTERNAL; +mono_loader_set_error_from_mono_error (MonoError *oerror); #endif