summaryrefslogtreecommitdiff
path: root/src/md/datasource/targettypes.h
blob: 36efb2198032539e44093ca24a14538bd069a186 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
//*****************************************************************************
// TargetTypes.h
// 

//
//*****************************************************************************

#ifndef _MD_TARGET_TYPES_
#define _MD_TARGET_TYPES_

#include "datatargetreader.h"

class Target_CMiniMdSchemaBase : public TargetObject
{
public:
    Target_CMiniMdSchemaBase();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    ULONG32 m_ulReserved;
    BYTE m_major;
    BYTE m_minor;
    BYTE m_heaps;
    BYTE m_rid;
    ULONG64 m_maskvalid;
    ULONG64 m_sorted;
};

class Target_CMiniMdSchema : public Target_CMiniMdSchemaBase
{
public:
    Target_CMiniMdSchema();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    ULONG32 m_cRecs[TBL_COUNT];
    ULONG32 m_ulExtra;
};

class Target_CMiniColDef : public TargetObject
{
public:
    Target_CMiniColDef();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    BYTE m_Type;
    BYTE m_oColumn;
    BYTE m_cbColumn;
};

class Target_CMiniTableDef : public TargetObject
{
public:
    Target_CMiniTableDef();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    NewArrayHolder<Target_CMiniColDef> m_pColDefs;
    BYTE m_cCols;
    BYTE m_iKey;
    BYTE m_cbRec;

private:
    // don't copy this type - avoids needing to deep copy m_pColDefs
    Target_CMiniTableDef(const Target_CMiniTableDef & rhs) { _ASSERTE(!"Don't copy"); }
    Target_CMiniTableDef & operator=(const Target_CMiniTableDef &) { _ASSERTE(!"Don't copy"); }
};

class Target_CMiniMdBase : public TargetObject
{
public:
    Target_CMiniMdBase();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    Target_CMiniMdSchema  m_Schema;
    ULONG32               m_TblCount;
    BOOL                  m_fVerifiedByTrustedSource;
    Target_CMiniTableDef  m_TableDefs[TBL_COUNT];

    ULONG32               m_iStringsMask;
    ULONG32               m_iGuidsMask;
    ULONG32               m_iBlobsMask;
};

class Target_CMiniMdTemplate_CMiniMdRW : public Target_CMiniMdBase
{
};

class Target_MapSHash : public TargetObject
{
public:
    Target_MapSHash();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    CORDB_ADDRESS m_table;
    ULONG32 m_tableSize;
    ULONG32 m_tableCount;
    ULONG32 m_tableOccupied;
    ULONG32 m_tableMax;
};

class Target_CChainedHash : public TargetObject
{
public:
    Target_CChainedHash();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    CORDB_ADDRESS m_rgData;
    ULONG32 m_iBuckets;
    ULONG32 m_iSize;
    ULONG32 m_iCount;
    ULONG32 m_iMaxChain;
    ULONG32 m_iFree;
};

class Target_CStringPoolHash : public Target_CChainedHash
{
public:
    Target_CStringPoolHash();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    CORDB_ADDRESS m_Pool;
};

class Target_StgPoolSeg : public TargetObject
{
public:
    Target_StgPoolSeg();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    CORDB_ADDRESS m_pSegData;
    CORDB_ADDRESS m_pNextSeg;
    ULONG32 m_cbSegSize;
    ULONG32 m_cbSegNext;
};

class Target_HotHeap : public TargetObject
{
public:
    Target_HotHeap();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    CORDB_ADDRESS m_pHotHeapHeader;
};

class Target_StgPoolReadOnly : public Target_StgPoolSeg
{
public:
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    Target_HotHeap m_HotHeap;
};

class Target_StgPool : public Target_StgPoolReadOnly
{
public:
    Target_StgPool();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    ULONG32 m_ulGrowInc;
    CORDB_ADDRESS m_pCurSeg;
    ULONG32 m_cbCurSegOffset;
    BOOL m_bFree;
    BOOL m_bReadOnly;
    ULONG32 m_nVariableAlignmentMask;
    ULONG32 m_cbStartOffsetOfEdit;
    BOOL m_fValidOffsetOfEdit;
};

class Target_StgStringPool : public Target_StgPool
{
public:
    Target_StgStringPool();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    Target_CStringPoolHash m_Hash;
    BOOL m_bHash;
};

class Target_StringHeapRW : public Target_StgStringPool
{
};

class Target_CBlobPoolHash : public Target_CChainedHash
{
public:
    Target_CBlobPoolHash();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    CORDB_ADDRESS m_Pool;
};

class Target_StgBlobPool : public Target_StgPool
{
public:
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    Target_CBlobPoolHash m_Hash;
};

class Target_BlobHeapRW : public Target_StgBlobPool
{
};

class Target_CGuidPoolHash : public Target_CChainedHash
{
public:
    Target_CGuidPoolHash();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    CORDB_ADDRESS m_Pool;
};

class Target_StgGuidPool : public Target_StgPool
{
public:
    Target_StgGuidPool();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    Target_CGuidPoolHash m_Hash;
    BOOL m_bHash;
};

class Target_GuidHeapRW : public Target_StgGuidPool
{
};

class Target_RecordPool : public Target_StgPool
{
public:
    Target_RecordPool();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    ULONG32 m_cbRec;
};

class Target_TableRW : public Target_RecordPool
{
};

class Target_OptionValue : public TargetObject
{
public:
    Target_OptionValue();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    ULONG32 m_DupCheck;
    ULONG32 m_RefToDefCheck;
    ULONG32 m_NotifyRemap;
    ULONG32 m_UpdateMode;
    ULONG32 m_ErrorIfEmitOutOfOrder;
    ULONG32 m_ThreadSafetyOptions;
    ULONG32 m_ImportOption;
    ULONG32 m_LinkerOption;
    ULONG32 m_GenerateTCEAdapters;
    CORDB_ADDRESS m_RuntimeVersion;
    ULONG32 m_MetadataVersion;
    ULONG32 m_MergeOptions;
    ULONG32 m_InitialSize;
    ULONG32 m_LocalRefPreservation;
};

class Target_CMiniMdRW : public Target_CMiniMdTemplate_CMiniMdRW
{
public:
    Target_CMiniMdRW();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    CORDB_ADDRESS m_pMemberRefHash;
    CORDB_ADDRESS m_pMemberDefHash;
    CORDB_ADDRESS m_pLookUpHashs[TBL_COUNT];
    Target_MapSHash m_StringPoolOffsetHash;
    CORDB_ADDRESS m_pNamedItemHash;
    ULONG32 m_maxRid;
    ULONG32 m_limRid;
    ULONG32 m_maxIx;
    ULONG32 m_limIx;
    ULONG32 m_eGrow;
    Target_TableRW m_Tables[TBL_COUNT];
    CORDB_ADDRESS m_pVS[TBL_COUNT];
    Target_StringHeapRW m_StringHeap;
    Target_BlobHeapRW m_BlobHeap;
    Target_BlobHeapRW m_UserStringHeap;
    Target_GuidHeapRW m_GuidHeap;
    CORDB_ADDRESS m_pHandler;
    ULONG32 m_cbSaveSize;
    BOOL m_fIsReadOnly;
    BOOL m_bPreSaveDone;
    BOOL m_bSaveCompressed;
    BOOL m_bPostGSSMod;
    CORDB_ADDRESS m_pMethodMap;
    CORDB_ADDRESS m_pFieldMap;
    CORDB_ADDRESS m_pPropertyMap;
    CORDB_ADDRESS m_pEventMap;
    CORDB_ADDRESS m_pParamMap;
    CORDB_ADDRESS m_pFilterTable;
    CORDB_ADDRESS m_pHostFilter;
    CORDB_ADDRESS m_pTokenRemapManager;
    Target_OptionValue m_OptionValue;
    Target_CMiniMdSchema m_StartupSchema;
    BYTE m_bSortable[TBL_COUNT];
    CORDB_ADDRESS dbg_m_pLock;
    BOOL m_fMinimalDelta;
    CORDB_ADDRESS m_rENCRecs;
};

class Target_CLiteWeightStgdb_CMiniMdRW : public TargetObject
{
public:
    Target_CLiteWeightStgdb_CMiniMdRW();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    Target_CMiniMdRW m_MiniMd;
    CORDB_ADDRESS m_pvMd;
    ULONG32 m_cbMd;
};

class Target_CLiteWeightStgdbRW : public Target_CLiteWeightStgdb_CMiniMdRW
{
public:
    Target_CLiteWeightStgdbRW();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    ULONG32 m_cbSaveSize;
    BOOL m_bSaveCompressed;
    CORDB_ADDRESS m_pImage;
    ULONG32 m_dwImageSize;
    ULONG32 m_dwPEKind;
    ULONG32 m_dwMachine;
    CORDB_ADDRESS m_pStreamList;
    CORDB_ADDRESS m_pNextStgdb;
    ULONG32 m_eFileType;
    CORDB_ADDRESS m_wszFileName;
    ULONG32 m_dwDatabaseLFT;
    ULONG32 m_dwDatabaseLFS;
    CORDB_ADDRESS m_pStgIO;
};

class Target_MDInternalRW : public TargetObject
{
public:
    Target_MDInternalRW();
    virtual HRESULT ReadFrom(DataTargetReader & reader);

    Target_CLiteWeightStgdbRW m_pStgdb;
    ULONG32 m_tdModule;
    ULONG32 m_cRefs;
    BOOL m_fOwnStgdb;
    CORDB_ADDRESS m_pUnk;
    CORDB_ADDRESS m_pUserUnk;
    CORDB_ADDRESS m_pIMetaDataHelper;
    CORDB_ADDRESS m_pSemReadWrite;
    BOOL m_fOwnSem;
};

#endif