5 #ifndef __MONO_ERROR_H__
6 #define __MONO_ERROR_H__
8 #include <mono/utils/mono-publib.h>
12 The supplied strings were dup'd by means of calling mono_error_dup_strings.
14 MONO_ERROR_FREE_STRINGS
= 0x0001,
17 Something happened while processing the error and the resulting message is incomplete.
19 MONO_ERROR_INCOMPLETE
= 0x0002,
21 This MonoError is heap allocated in a mempool
23 MONO_ERROR_MEMPOOL_BOXED
= 0x0004
28 MONO_ERROR_MISSING_METHOD
= 1,
29 MONO_ERROR_MISSING_FIELD
= 2,
30 MONO_ERROR_TYPE_LOAD
= 3,
31 MONO_ERROR_FILE_NOT_FOUND
= 4,
32 MONO_ERROR_BAD_IMAGE
= 5,
33 MONO_ERROR_OUT_OF_MEMORY
= 6,
34 MONO_ERROR_ARGUMENT
= 7,
35 MONO_ERROR_ARGUMENT_NULL
= 11,
36 MONO_ERROR_NOT_VERIFIABLE
= 8,
37 MONO_ERROR_INVALID_PROGRAM
= 12,
38 MONO_ERROR_MEMBER_ACCESS
= 13,
41 * This is a generic error mechanism is you need to raise an arbitrary corlib exception.
42 * You must pass the exception name otherwise prepare_exception will fail with internal execution.
44 MONO_ERROR_GENERIC
= 9,
45 /* This one encapsulates a managed exception instance */
46 MONO_ERROR_EXCEPTION_INSTANCE
= 10,
48 /* Not a valid error code - indicates that the error was cleaned up and reused */
49 MONO_ERROR_CLEANUP_CALLED_SENTINEL
= 0xffff
53 __pragma(warning (push
))
54 __pragma(warning (disable
:4201))
57 /*Keep in sync with MonoErrorInternal*/
58 typedef union _MonoError
{
59 // Merge two uint16 into one uint32 so it can be initialized
60 // with one instruction instead of two.
64 uint16_t private_flags
; /*DON'T TOUCH */
65 void *hidden_1
[12]; /*DON'T TOUCH */
70 __pragma(warning (pop
))
73 /* Mempool-allocated MonoError.*/
74 typedef struct _MonoErrorBoxed MonoErrorBoxed
;
78 MONO_API MONO_RT_EXTERNAL_ONLY
void
79 mono_error_init (MonoError
*error
);
82 mono_error_init_flags (MonoError
*error
, unsigned short flags
);
85 mono_error_cleanup (MonoError
*error
);
88 mono_error_ok (MonoError
*error
);
90 MONO_API
unsigned short
91 mono_error_get_error_code (MonoError
*error
);
94 mono_error_get_message (MonoError
*error
);