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// TargetTypes.h
6//
7
8//
9//*****************************************************************************
10
11#ifndef _MD_TARGET_TYPES_
12#define _MD_TARGET_TYPES_
13
14#include "datatargetreader.h"
15
16class Target_CMiniMdSchemaBase : public TargetObject
17{
18public:
19 Target_CMiniMdSchemaBase();
20 virtual HRESULT ReadFrom(DataTargetReader & reader);
21
22 ULONG32 m_ulReserved;
23 BYTE m_major;
24 BYTE m_minor;
25 BYTE m_heaps;
26 BYTE m_rid;
27 ULONG64 m_maskvalid;
28 ULONG64 m_sorted;
29};
30
31class Target_CMiniMdSchema : public Target_CMiniMdSchemaBase
32{
33public:
34 Target_CMiniMdSchema();
35 virtual HRESULT ReadFrom(DataTargetReader & reader);
36
37 ULONG32 m_cRecs[TBL_COUNT];
38 ULONG32 m_ulExtra;
39};
40
41class Target_CMiniColDef : public TargetObject
42{
43public:
44 Target_CMiniColDef();
45 virtual HRESULT ReadFrom(DataTargetReader & reader);
46
47 BYTE m_Type;
48 BYTE m_oColumn;
49 BYTE m_cbColumn;
50};
51
52class Target_CMiniTableDef : public TargetObject
53{
54public:
55 Target_CMiniTableDef();
56 virtual HRESULT ReadFrom(DataTargetReader & reader);
57
58 NewArrayHolder<Target_CMiniColDef> m_pColDefs;
59 BYTE m_cCols;
60 BYTE m_iKey;
61 BYTE m_cbRec;
62
63private:
64 // don't copy this type - avoids needing to deep copy m_pColDefs
65 Target_CMiniTableDef(const Target_CMiniTableDef & rhs) { _ASSERTE(!"Don't copy"); }
66 Target_CMiniTableDef & operator=(const Target_CMiniTableDef &)
67 {
68 _ASSERTE(!"Don't copy");
69 return *this;
70 }
71};
72
73class Target_CMiniMdBase : public TargetObject
74{
75public:
76 Target_CMiniMdBase();
77 virtual HRESULT ReadFrom(DataTargetReader & reader);
78
79 Target_CMiniMdSchema m_Schema;
80 ULONG32 m_TblCount;
81 BOOL m_fVerifiedByTrustedSource;
82 Target_CMiniTableDef m_TableDefs[TBL_COUNT];
83
84 ULONG32 m_iStringsMask;
85 ULONG32 m_iGuidsMask;
86 ULONG32 m_iBlobsMask;
87};
88
89class Target_CMiniMdTemplate_CMiniMdRW : public Target_CMiniMdBase
90{
91};
92
93class Target_MapSHash : public TargetObject
94{
95public:
96 Target_MapSHash();
97 virtual HRESULT ReadFrom(DataTargetReader & reader);
98
99 CORDB_ADDRESS m_table;
100 ULONG32 m_tableSize;
101 ULONG32 m_tableCount;
102 ULONG32 m_tableOccupied;
103 ULONG32 m_tableMax;
104};
105
106class Target_CChainedHash : public TargetObject
107{
108public:
109 Target_CChainedHash();
110 virtual HRESULT ReadFrom(DataTargetReader & reader);
111
112 CORDB_ADDRESS m_rgData;
113 ULONG32 m_iBuckets;
114 ULONG32 m_iSize;
115 ULONG32 m_iCount;
116 ULONG32 m_iMaxChain;
117 ULONG32 m_iFree;
118};
119
120class Target_CStringPoolHash : public Target_CChainedHash
121{
122public:
123 Target_CStringPoolHash();
124 virtual HRESULT ReadFrom(DataTargetReader & reader);
125
126 CORDB_ADDRESS m_Pool;
127};
128
129class Target_StgPoolSeg : public TargetObject
130{
131public:
132 Target_StgPoolSeg();
133 virtual HRESULT ReadFrom(DataTargetReader & reader);
134
135 CORDB_ADDRESS m_pSegData;
136 CORDB_ADDRESS m_pNextSeg;
137 ULONG32 m_cbSegSize;
138 ULONG32 m_cbSegNext;
139};
140
141class Target_HotHeap : public TargetObject
142{
143public:
144 Target_HotHeap();
145 virtual HRESULT ReadFrom(DataTargetReader & reader);
146
147 CORDB_ADDRESS m_pHotHeapHeader;
148};
149
150class Target_StgPoolReadOnly : public Target_StgPoolSeg
151{
152public:
153 virtual HRESULT ReadFrom(DataTargetReader & reader);
154
155 Target_HotHeap m_HotHeap;
156};
157
158class Target_StgPool : public Target_StgPoolReadOnly
159{
160public:
161 Target_StgPool();
162 virtual HRESULT ReadFrom(DataTargetReader & reader);
163
164 ULONG32 m_ulGrowInc;
165 CORDB_ADDRESS m_pCurSeg;
166 ULONG32 m_cbCurSegOffset;
167 BOOL m_bFree;
168 BOOL m_bReadOnly;
169 ULONG32 m_nVariableAlignmentMask;
170 ULONG32 m_cbStartOffsetOfEdit;
171 BOOL m_fValidOffsetOfEdit;
172};
173
174class Target_StgStringPool : public Target_StgPool
175{
176public:
177 Target_StgStringPool();
178 virtual HRESULT ReadFrom(DataTargetReader & reader);
179
180 Target_CStringPoolHash m_Hash;
181 BOOL m_bHash;
182};
183
184class Target_StringHeapRW : public Target_StgStringPool
185{
186};
187
188class Target_CBlobPoolHash : public Target_CChainedHash
189{
190public:
191 Target_CBlobPoolHash();
192 virtual HRESULT ReadFrom(DataTargetReader & reader);
193
194 CORDB_ADDRESS m_Pool;
195};
196
197class Target_StgBlobPool : public Target_StgPool
198{
199public:
200 virtual HRESULT ReadFrom(DataTargetReader & reader);
201
202 Target_CBlobPoolHash m_Hash;
203};
204
205class Target_BlobHeapRW : public Target_StgBlobPool
206{
207};
208
209class Target_CGuidPoolHash : public Target_CChainedHash
210{
211public:
212 Target_CGuidPoolHash();
213 virtual HRESULT ReadFrom(DataTargetReader & reader);
214
215 CORDB_ADDRESS m_Pool;
216};
217
218class Target_StgGuidPool : public Target_StgPool
219{
220public:
221 Target_StgGuidPool();
222 virtual HRESULT ReadFrom(DataTargetReader & reader);
223
224 Target_CGuidPoolHash m_Hash;
225 BOOL m_bHash;
226};
227
228class Target_GuidHeapRW : public Target_StgGuidPool
229{
230};
231
232class Target_RecordPool : public Target_StgPool
233{
234public:
235 Target_RecordPool();
236 virtual HRESULT ReadFrom(DataTargetReader & reader);
237
238 ULONG32 m_cbRec;
239};
240
241class Target_TableRW : public Target_RecordPool
242{
243};
244
245class Target_OptionValue : public TargetObject
246{
247public:
248 Target_OptionValue();
249 virtual HRESULT ReadFrom(DataTargetReader & reader);
250
251 ULONG32 m_DupCheck;
252 ULONG32 m_RefToDefCheck;
253 ULONG32 m_NotifyRemap;
254 ULONG32 m_UpdateMode;
255 ULONG32 m_ErrorIfEmitOutOfOrder;
256 ULONG32 m_ThreadSafetyOptions;
257 ULONG32 m_ImportOption;
258 ULONG32 m_LinkerOption;
259 ULONG32 m_GenerateTCEAdapters;
260 CORDB_ADDRESS m_RuntimeVersion;
261 ULONG32 m_MetadataVersion;
262 ULONG32 m_MergeOptions;
263 ULONG32 m_InitialSize;
264 ULONG32 m_LocalRefPreservation;
265};
266
267class Target_CMiniMdRW : public Target_CMiniMdTemplate_CMiniMdRW
268{
269public:
270 Target_CMiniMdRW();
271 virtual HRESULT ReadFrom(DataTargetReader & reader);
272
273 CORDB_ADDRESS m_pMemberRefHash;
274 CORDB_ADDRESS m_pMemberDefHash;
275 CORDB_ADDRESS m_pLookUpHashs[TBL_COUNT];
276 Target_MapSHash m_StringPoolOffsetHash;
277 CORDB_ADDRESS m_pNamedItemHash;
278 ULONG32 m_maxRid;
279 ULONG32 m_limRid;
280 ULONG32 m_maxIx;
281 ULONG32 m_limIx;
282 ULONG32 m_eGrow;
283 Target_TableRW m_Tables[TBL_COUNT];
284 CORDB_ADDRESS m_pVS[TBL_COUNT];
285 Target_StringHeapRW m_StringHeap;
286 Target_BlobHeapRW m_BlobHeap;
287 Target_BlobHeapRW m_UserStringHeap;
288 Target_GuidHeapRW m_GuidHeap;
289 CORDB_ADDRESS m_pHandler;
290 ULONG32 m_cbSaveSize;
291 BOOL m_fIsReadOnly;
292 BOOL m_bPreSaveDone;
293 BOOL m_bSaveCompressed;
294 BOOL m_bPostGSSMod;
295 CORDB_ADDRESS m_pMethodMap;
296 CORDB_ADDRESS m_pFieldMap;
297 CORDB_ADDRESS m_pPropertyMap;
298 CORDB_ADDRESS m_pEventMap;
299 CORDB_ADDRESS m_pParamMap;
300 CORDB_ADDRESS m_pFilterTable;
301 CORDB_ADDRESS m_pHostFilter;
302 CORDB_ADDRESS m_pTokenRemapManager;
303 Target_OptionValue m_OptionValue;
304 Target_CMiniMdSchema m_StartupSchema;
305 BYTE m_bSortable[TBL_COUNT];
306 CORDB_ADDRESS dbg_m_pLock;
307 BOOL m_fMinimalDelta;
308 CORDB_ADDRESS m_rENCRecs;
309};
310
311class Target_CLiteWeightStgdb_CMiniMdRW : public TargetObject
312{
313public:
314 Target_CLiteWeightStgdb_CMiniMdRW();
315 virtual HRESULT ReadFrom(DataTargetReader & reader);
316
317 Target_CMiniMdRW m_MiniMd;
318 CORDB_ADDRESS m_pvMd;
319 ULONG32 m_cbMd;
320};
321
322class Target_CLiteWeightStgdbRW : public Target_CLiteWeightStgdb_CMiniMdRW
323{
324public:
325 Target_CLiteWeightStgdbRW();
326 virtual HRESULT ReadFrom(DataTargetReader & reader);
327
328 ULONG32 m_cbSaveSize;
329 BOOL m_bSaveCompressed;
330 CORDB_ADDRESS m_pImage;
331 ULONG32 m_dwImageSize;
332 ULONG32 m_dwPEKind;
333 ULONG32 m_dwMachine;
334 CORDB_ADDRESS m_pStreamList;
335 CORDB_ADDRESS m_pNextStgdb;
336 ULONG32 m_eFileType;
337 CORDB_ADDRESS m_wszFileName;
338 ULONG32 m_dwDatabaseLFT;
339 ULONG32 m_dwDatabaseLFS;
340 CORDB_ADDRESS m_pStgIO;
341};
342
343class Target_MDInternalRW : public TargetObject
344{
345public:
346 Target_MDInternalRW();
347 virtual HRESULT ReadFrom(DataTargetReader & reader);
348
349 Target_CLiteWeightStgdbRW m_pStgdb;
350 ULONG32 m_tdModule;
351 ULONG32 m_cRefs;
352 BOOL m_fOwnStgdb;
353 CORDB_ADDRESS m_pUnk;
354 CORDB_ADDRESS m_pUserUnk;
355 CORDB_ADDRESS m_pIMetaDataHelper;
356 CORDB_ADDRESS m_pSemReadWrite;
357 BOOL m_fOwnSem;
358};
359
360#endif
361