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