Visual C++ backend for rbuild (for now just a hacked mingw backend) and related compi...
[reactos.git] / dll / win32 / fusion / fusionpriv.h
1 /*
2 * fusion private definitions
3 *
4 * Copyright 2008 James Hawkins
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21 #ifndef __WINE_FUSION_PRIVATE__
22 #define __WINE_FUSION_PRIVATE__
23
24 #include <stdarg.h>
25
26 #include "windef.h"
27 #include "winbase.h"
28 #include "winuser.h"
29
30 #include <pshpack1.h>
31
32 typedef struct
33 {
34 ULONG Signature;
35 USHORT MajorVersion;
36 USHORT MinorVersion;
37 ULONG Reserved;
38 ULONG VersionLength;
39 LPSTR Version;
40 BYTE Flags;
41 WORD Streams;
42 } METADATAHDR;
43
44 typedef struct
45 {
46 DWORD Offset;
47 DWORD Size;
48 } METADATASTREAMHDR;
49
50 typedef struct
51 {
52 DWORD Reserved1;
53 BYTE MajorVersion;
54 BYTE MinorVersion;
55 BYTE HeapOffsetSizes;
56 BYTE Reserved2;
57 LARGE_INTEGER MaskValid;
58 LARGE_INTEGER MaskSorted;
59 } METADATATABLESHDR;
60
61 typedef struct
62 {
63 WORD Generation;
64 WORD Name;
65 WORD Mvid;
66 WORD EncId;
67 WORD EncBaseId;
68 } MODULETABLE;
69
70 typedef struct
71 {
72 DWORD Flags;
73 WORD Name;
74 WORD Namespace;
75 WORD Extends;
76 WORD FieldList;
77 WORD MethodList;
78 } TYPEDEFTABLE;
79
80 typedef struct
81 {
82 WORD ResolutionScope;
83 WORD Name;
84 WORD Namespace;
85 } TYPEREFTABLE;
86
87 typedef struct
88 {
89 WORD Flags;
90 WORD Name;
91 WORD Signature;
92 } FIELDTABLE;
93
94 typedef struct
95 {
96 DWORD HashAlgId;
97 WORD MajorVersion;
98 WORD MinorVersion;
99 WORD BuildNumber;
100 WORD RevisionNumber;
101 DWORD Flags;
102 WORD PublicKey;
103 WORD Name;
104 WORD Culture;
105 } ASSEMBLYTABLE;
106
107 typedef struct
108 {
109 DWORD Offset;
110 DWORD Flags;
111 WORD Name;
112 WORD Implementation;
113 } MANIFESTRESTABLE;
114
115 typedef struct
116 {
117 DWORD RVA;
118 WORD ImplFlags;
119 WORD Flags;
120 WORD Name;
121 WORD Signature;
122 WORD ParamList;
123 } METHODDEFTABLE;
124
125 typedef struct
126 {
127 WORD Flags;
128 WORD Sequence;
129 WORD Name;
130 } PARAMTABLE;
131
132 typedef struct
133 {
134 WORD Class;
135 WORD Interface;
136 } INTERFACEIMPLTABLE;
137
138 typedef struct
139 {
140 WORD Class;
141 WORD Name;
142 WORD Signature;
143 } MEMBERREFTABLE;
144
145 typedef struct
146 {
147 BYTE Type;
148 BYTE Reserved;
149 WORD Parent;
150 WORD Value;
151 } CONSTANTTABLE;
152
153 typedef struct
154 {
155 WORD Parent;
156 WORD Type;
157 WORD Value;
158 } CUSTOMATTRIBUTETABLE;
159
160 typedef struct
161 {
162 WORD Parent;
163 WORD NativeType;
164 } FIELDMARSHALTABLE;
165
166 typedef struct
167 {
168 WORD Action;
169 WORD Parent;
170 WORD PermissionSet;
171 } DECLSECURITYTABLE;
172
173 typedef struct
174 {
175 WORD PackingSize;
176 DWORD ClassSize;
177 WORD Parent;
178 } CLASSLAYOUTTABLE;
179
180 typedef struct
181 {
182 DWORD Offset;
183 WORD Field;
184 } FIELDLAYOUTTABLE;
185
186 typedef struct
187 {
188 WORD Signature;
189 } STANDALONESIGTABLE;
190
191 typedef struct
192 {
193 WORD Parent;
194 WORD EventList;
195 } EVENTMAPTABLE;
196
197 typedef struct
198 {
199 WORD EventFlags;
200 WORD Name;
201 WORD EventType;
202 } EVENTTABLE;
203
204 typedef struct
205 {
206 WORD Parent;
207 WORD PropertyList;
208 } PROPERTYMAPTABLE;
209
210 typedef struct
211 {
212 WORD Flags;
213 WORD Name;
214 WORD Type;
215 } PROPERTYTABLE;
216
217 typedef struct
218 {
219 WORD Semantics;
220 WORD Method;
221 WORD Association;
222 } METHODSEMANTICSTABLE;
223
224 typedef struct
225 {
226 WORD Class;
227 WORD MethodBody;
228 WORD MethodDeclaration;
229 } METHODIMPLTABLE;
230
231 typedef struct
232 {
233 WORD Name;
234 } MODULEREFTABLE;
235
236 typedef struct
237 {
238 WORD Signature;
239 } TYPESPECTABLE;
240
241 typedef struct
242 {
243 WORD MappingFlags;
244 WORD MemberForwarded;
245 WORD ImportName;
246 WORD ImportScope;
247 } IMPLMAPTABLE;
248
249 typedef struct
250 {
251 DWORD RVA;
252 WORD Field;
253 } FIELDRVATABLE;
254
255 typedef struct
256 {
257 DWORD Processor;
258 } ASSEMBLYPROCESSORTABLE;
259
260 typedef struct
261 {
262 DWORD OSPlatformID;
263 DWORD OSMajorVersion;
264 DWORD OSMinorVersion;
265 } ASSEMBLYOSTABLE;
266
267 typedef struct
268 {
269 WORD MajorVersion;
270 WORD MinorVersion;
271 WORD BuildNumber;
272 WORD RevisionNumber;
273 DWORD Flags;
274 WORD PublickKeyOrToken;
275 WORD Name;
276 WORD Culture;
277 WORD HashValue;
278 } ASSEMBLYREFTABLE;
279
280 typedef struct
281 {
282 DWORD Processor;
283 WORD AssemblyRef;
284 } ASSEMBLYREFPROCESSORTABLE;
285
286 typedef struct
287 {
288 DWORD OSPlatformId;
289 DWORD OSMajorVersion;
290 DWORD OSMinorVersion;
291 WORD AssemblyRef;
292 } ASSEMBLYREFOSTABLE;
293
294 typedef struct
295 {
296 DWORD Flags;
297 WORD Name;
298 WORD HashValue;
299 } FILETABLE;
300
301 typedef struct
302 {
303 DWORD Flags;
304 DWORD TypeDefId;
305 WORD TypeName;
306 WORD TypeNameSpace;
307 WORD Implementation;
308 } EXPORTEDTYPETABLE;
309
310 typedef struct
311 {
312 WORD NestedClass;
313 WORD EnclosingClass;
314 } NESTEDCLASSTABLE;
315
316 typedef struct
317 {
318 WORD Number;
319 WORD Flags;
320 } GENERICPARAMTABLE;
321
322 typedef struct
323 {
324 WORD MethodDef;
325 WORD Instantiation;
326 } METHODSPECTABLE;
327
328 typedef struct
329 {
330 WORD Owner;
331 WORD Constraint;
332 } GENERICPARAMCONSTRAINTTABLE;
333
334 typedef struct
335 {
336 DWORD ImportLookupTable;
337 DWORD DateTimeStamp;
338 DWORD ForwarderChain;
339 DWORD Name;
340 DWORD ImportAddressTable;
341 BYTE pad[20];
342 } IMPORTTABLE;
343
344 typedef struct
345 {
346 DWORD HintNameTableRVA;
347 BYTE pad[8];
348 } IMPORTLOOKUPTABLE;
349
350 typedef struct
351 {
352 WORD Hint;
353 BYTE Name[12];
354 BYTE Module[12];
355 DWORD Reserved;
356 WORD EntryPoint;
357 DWORD RVA;
358 } HINTNAMETABLE;
359
360 typedef struct
361 {
362 DWORD PageRVA;
363 DWORD Size;
364 DWORD Relocation;
365 } RELOCATION;
366
367 typedef struct
368 {
369 WORD wLength;
370 WORD wValueLength;
371 WORD wType;
372 WCHAR szKey[17];
373 VS_FIXEDFILEINFO Value;
374 } VS_VERSIONINFO;
375
376 typedef struct
377 {
378 WORD wLength;
379 WORD wValueLength;
380 WORD wType;
381 WCHAR szKey[13];
382 } VARFILEINFO;
383
384 typedef struct
385 {
386 WORD wLength;
387 WORD wValueLength;
388 WORD wType;
389 WCHAR szKey[13];
390 DWORD Value;
391 } VAR;
392
393 typedef struct
394 {
395 WORD wLength;
396 WORD wValueLength;
397 WORD wType;
398 WCHAR szKey[15];
399 } STRINGFILEINFO;
400
401 typedef struct
402 {
403 WORD wLength;
404 WORD wValueLength;
405 WORD wType;
406 WCHAR szKey[9];
407 } STRINGTABLE;
408
409 typedef struct
410 {
411 WORD wLength;
412 WORD wValueLength;
413 WORD wType;
414 } STRINGHDR;
415
416 typedef struct
417 {
418 DWORD Size;
419 DWORD Signature;
420 DWORD HeaderVersion;
421 DWORD SkipData;
422 BYTE Data[168];
423 } RESOURCE;
424
425 #include <poppack.h>
426
427 struct tagASSEMBLY;
428 typedef struct tagASSEMBLY ASSEMBLY;
429
430 HRESULT assembly_create(ASSEMBLY **out, LPCWSTR file);
431 HRESULT assembly_release(ASSEMBLY *assembly);
432 HRESULT assembly_get_name(ASSEMBLY *assembly, LPSTR *name);
433 HRESULT assembly_get_path(ASSEMBLY *assembly, LPSTR *path);
434 HRESULT assembly_get_version(ASSEMBLY *assembly, LPSTR *version);
435 HRESULT assembly_get_architecture(ASSEMBLY *assembly, DWORD fixme);
436 HRESULT assembly_get_pubkey_token(ASSEMBLY *assembly, LPSTR *token);
437
438 #endif /* __WINE_FUSION_PRIVATE__ */