b38c7ece226ad1ef3f53534f3bddaace59f83e4f
[mono.git] / mono / utils / mono-error.h
1 #ifndef __MONO_ERROR_H__
2 #define __MONO_ERROR_H__
3
4 enum {
5         /*
6         The supplied strings were dup'd by means of calling mono_error_dup_strings.
7         */
8         MONO_ERROR_FREE_STRINGS = 0x0001,
9
10         /*
11         Something happened while processing the error and the resulting message is incomplete.
12         */
13         MONO_ERROR_INCOMPLETE = 0x0002
14 };
15
16 enum {
17         MONO_ERROR_NONE = 0,
18         MONO_ERROR_MISSING_METHOD = 1,
19         MONO_ERROR_MISSING_FIELD = 2,
20         MONO_ERROR_TYPE_LOAD = 3,
21         MONO_ERROR_FILE_NOT_FOUND = 4,
22         MONO_ERROR_BAD_IMAGE = 5,
23         MONO_ERROR_OUT_OF_MEMORY = 6,
24         /*
25          * This is a generic error mechanism is you need to raise an arbitrary corlib exception.
26          * You must pass the exception name otherwise prepare_exception will fail with internal execution. 
27          */
28         MONO_ERROR_GENERIC = 7
29 };
30
31 /*Keep in sync with MonoErrorInternal*/
32 typedef struct {
33         unsigned short error_code;
34     unsigned short hidden_0; /*DON'T TOUCH */
35
36         void *hidden_1 [12]; /*DON'T TOUCH */
37     char hidden_2 [128]; /*DON'T TOUCH */
38 } MonoError;
39
40 void
41 mono_error_init (MonoError *error);
42
43 void
44 mono_error_init_flags (MonoError *error, unsigned short flags);
45
46 void
47 mono_error_cleanup (MonoError *error);
48
49 gboolean
50 mono_error_ok (MonoError *error);
51
52 unsigned short
53 mono_error_get_error_code (MonoError *error);
54
55 const char*
56 mono_error_get_message (MonoError *error);
57
58 #endif