Merge pull request #4370 from krytarowski/netbsd-support-64
[platform/upstream/coreclr.git] / src / ildasm / gui.h
1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4
5 #include "dynamicarray.h"
6
7 #define BITMAP_WIDTH    15
8 #define BITMAP_HEIGHT   15
9
10 #define DISASSEMBLY_CLASS_NAME  "disassembly"
11 #define MAIN_WINDOW_CLASS       "dasm"
12 #define MAIN_WINDOW_CAPTION     "IL DASM"
13
14 #define DISASSEMBLY_CLASS_NAMEW  L"disassembly"
15 #define MAIN_WINDOW_CLASSW       L"dasm"
16 #define MAIN_WINDOW_CAPTIONW     L"IL DASM\0"
17
18 #define PHDC    (pDIS->hDC)
19 #define PRC     (pDIS->rcItem)
20
21 #define PADDING         28
22
23 #define ID_TREEVIEW     1
24 #define ID_LISTBOX      2
25
26 typedef struct
27 {
28     const char *pszNamespace;
29     HTREEITEM   hRoot;
30 } Namespace_t;
31
32
33 //
34 // Menu info
35 //
36 enum
37 {
38     IDM_PROGRESS,
39     IDM_OPEN,
40     IDM_DUMP,
41     IDM_DUMP_TREE,
42     IDM_EXIT,
43     IDM_SORT_BY_NAME,
44     IDM_SHOW_PUB,
45     IDM_SHOW_PRIV,
46     IDM_SHOW_FAM,
47     IDM_SHOW_ASM,
48     IDM_SHOW_FAA,
49     IDM_SHOW_FOA,
50     IDM_SHOW_PSCOPE,
51     IDM_FULL_INFO,
52     IDM_BYTES,
53     IDM_TOKENS,
54     IDM_SOURCELINES,
55     IDM_EXPANDTRY,
56     IDM_QUOTEALLNAMES,
57     IDM_SHOW_HEADER,
58     IDM_SHOW_STAT,
59     IDM_SHOW_METAINFO,
60     IDM_MI_DEBUG,
61     IDM_MI_HEADER,
62     IDM_MI_HEX,
63     IDM_MI_CSV,
64     IDM_MI_UNREX,
65     IDM_MI_SCHEMA,
66     IDM_MI_RAW,
67     IDM_MI_HEAPS,
68     IDM_MI_VALIDATE,
69     IDM_HELP,
70     IDM_ABOUT,
71     IDM_FONT_TREE,
72     IDM_FONT_DASM,
73     IDM_FIND,
74     IDM_FINDNEXT,
75     IDM_TREEVIEWFCN,
76     IDM_CAVERBAL,
77     IDM_DUMPRTF
78 };
79
80
81 //
82 // Bitmaps - keep in same order as in dasm.rc file
83 //
84 enum
85 {
86     CLASS_IMAGE_INDEX,
87     EVENT_IMAGE_INDEX,
88     METHOD_IMAGE_INDEX,
89     NAMESPACE_IMAGE_INDEX,
90     FIELD_IMAGE_INDEX,
91     PROP_IMAGE_INDEX,
92     STATIC_METHOD_IMAGE_INDEX,
93     STATIC_FIELD_IMAGE_INDEX,
94     RED_ARROW_IMAGE_INDEX,
95     CLASSENUM_IMAGE_INDEX,
96     CLASSINT_IMAGE_INDEX,
97     CLASSVAL_IMAGE_INDEX,
98     CLASS_GEN_IMAGE_INDEX,
99     METHOD_GEN_IMAGE_INDEX,
100     STATIC_METHOD_GEN_IMAGE_INDEX,
101     CLASSENUM_GEN_IMAGE_INDEX,
102     CLASSINT_GEN_IMAGE_INDEX,
103     CLASSVAL_GEN_IMAGE_INDEX,
104     LAST_IMAGE_INDEX
105 };
106
107 #define TREEITEM_TYPE_MEMBER    1
108 #define TREEITEM_TYPE_INFO      2
109
110 // Member items and info items (under classes)
111 typedef struct
112 {
113     HTREEITEM       hItem;
114     union
115     {
116         mdToken                 mbMember;
117         char *          pszText; // if an info item (extends or implements some class)
118     };
119     BYTE            Discriminator;
120 } TreeItem_t;
121
122 // Class items (under the root)
123 typedef struct
124 {
125     HTREEITEM   hItem;
126     mdTypeDef   cl;
127     TreeItem_t *pMembers;       // List of subitems
128     DWORD       SubItems;       // Number of subitems
129     DWORD       CurMember;      // Used when building member list
130 } ClassItem_t;
131
132 typedef struct
133 {
134     HWND        hwndContainer;
135     HWND        hwndChild;
136     HMENU       hMenu;
137     mdToken             tkClass;
138     mdToken             tkMember;
139     WCHAR        wzFind[120];
140     FINDREPLACEW strFR;
141 } DisasmBox_t;
142
143
144
145 // For accessing metadata
146 extern IMDInternalImport*       g_pImport;
147 extern PELoader *           g_pPELoader;
148 extern IMetaDataImport2*     g_pPubImport;
149
150 //extern DynamicArray<mdToken>  g_cl_list;
151 extern mdToken *                                g_cl_list;
152 //extern DynamicArray<mdToken>    g_cl_enclosing;
153 extern mdToken *                                g_cl_enclosing;
154 extern mdTypeDef                                g_cl_module;
155 extern DWORD                                    g_NumClasses;