Merge pull request #268 from pcc/menudeactivate
[mono.git] / mono / metadata / opcodes.h
1 #ifndef __MONO_METADATA_OPCODES_H__
2 #define __MONO_METADATA_OPCODES_H__
3
4 /*
5  * opcodes.h: CIL instruction information
6  *
7  * Author:
8  *   Paolo Molaro (lupus@ximian.com)
9  *
10  * (C) 2002 Ximian, Inc.
11  */
12
13 #include <mono/utils/mono-publib.h>
14
15 MONO_BEGIN_DECLS
16
17 #define MONO_CUSTOM_PREFIX 0xf0
18
19 #define OPDEF(a,b,c,d,e,f,g,h,i,j) \
20         MONO_ ## a,
21
22 typedef enum {
23 #include "mono/cil/opcode.def"
24         MONO_CEE_LAST
25 } MonoOpcodeEnum;
26
27 #undef OPDEF
28
29 enum {
30         MONO_FLOW_NEXT,
31         MONO_FLOW_BRANCH,
32         MONO_FLOW_COND_BRANCH,
33         MONO_FLOW_ERROR,
34         MONO_FLOW_CALL,
35         MONO_FLOW_RETURN,
36         MONO_FLOW_META
37 };
38
39 enum {
40         MonoInlineNone,
41         MonoInlineType,
42         MonoInlineField,
43         MonoInlineMethod,
44         MonoInlineTok,
45         MonoInlineString,
46         MonoInlineSig,
47         MonoInlineVar,
48         MonoShortInlineVar,
49         MonoInlineBrTarget,
50         MonoShortInlineBrTarget,
51         MonoInlineSwitch,
52         MonoInlineR,
53         MonoShortInlineR,
54         MonoInlineI,
55         MonoShortInlineI,
56         MonoInlineI8
57 };
58
59 typedef struct {
60         unsigned char argument;
61         unsigned char flow_type;
62         unsigned short opval;
63 } MonoOpcode;
64
65 extern const MonoOpcode mono_opcodes [];
66
67 MONO_API const char*
68 mono_opcode_name (int opcode);
69
70 MONO_API MonoOpcodeEnum
71 mono_opcode_value (const mono_byte **ip, const mono_byte *end);
72
73 MONO_END_DECLS
74
75 #endif /* __MONO_METADATA_OPCODES_H__ */
76