@@ -49,13 +49,20 @@ struct GlobalStringSpec
49
49
uint32_t StringValue;
50
50
};
51
51
52
+ struct GlobalContractSpec
53
+ {
54
+ uint32_t Name;
55
+ uint32_t Version;
56
+ };
57
+
52
58
#define CONCAT (token1,token2 ) token1 ## token2
53
59
#define CONCAT4 (token1, token2, token3, token4 ) token1 ## token2 ## token3 ## token4
54
60
55
61
#define MAKE_TYPELEN_NAME (tyname ) CONCAT(cdac_string_pool_typename__, tyname)
56
62
#define MAKE_FIELDLEN_NAME (tyname,membername ) CONCAT4(cdac_string_pool_membername__, tyname, __, membername)
57
63
#define MAKE_FIELDTYPELEN_NAME (tyname,membername ) CONCAT4(cdac_string_pool_membertypename__, tyname, __, membername)
58
64
#define MAKE_GLOBALLEN_NAME (globalname ) CONCAT(cdac_string_pool_globalname__, globalname)
65
+ #define MAKE_GLOBALCONTRACTLEN_NAME (globalname ) CONCAT(cdac_string_pool_globalcontractname__, globalname)
59
66
#define MAKE_GLOBALTYPELEN_NAME (globalname ) CONCAT(cdac_string_pool_globaltypename__, globalname)
60
67
#define MAKE_GLOBALVALUELEN_NAME (globalname ) CONCAT(cdac_string_pool_globalvalue__, globalname)
61
68
@@ -78,6 +85,7 @@ struct CDacStringPoolSizes
78
85
DECL_LEN (MAKE_GLOBALVALUELEN_NAME(name), sizeof (STRINGIFY(stringval)))
79
86
#define CDAC_GLOBAL_POINTER (name,value ) DECL_LEN(MAKE_GLOBALLEN_NAME(name), sizeof (#name))
80
87
#define CDAC_GLOBAL_SUB_DESCRIPTOR (name,value ) DECL_LEN(MAKE_GLOBALLEN_NAME(name), sizeof (#name))
88
+ #define CDAC_GLOBAL_CONTRACT (name,value ) DECL_LEN(MAKE_GLOBALCONTRACTLEN_NAME(name), sizeof (#name))
81
89
#define CDAC_GLOBAL (name,tyname,value ) DECL_LEN(MAKE_GLOBALLEN_NAME(name), sizeof (#name)) \
82
90
DECL_LEN (MAKE_GLOBALTYPELEN_NAME(name), sizeof (#tyname))
83
91
#include " wrappeddatadescriptor.inc"
@@ -90,6 +98,7 @@ struct CDacStringPoolSizes
90
98
#define GET_FIELDTYPE_NAME (tyname,membername ) offsetof(struct CDacStringPoolSizes , MAKE_FIELDTYPELEN_NAME(tyname,membername))
91
99
#define GET_GLOBAL_NAME (globalname ) offsetof(struct CDacStringPoolSizes , MAKE_GLOBALLEN_NAME(globalname))
92
100
#define GET_GLOBALTYPE_NAME (globalname ) offsetof(struct CDacStringPoolSizes , MAKE_GLOBALTYPELEN_NAME(globalname))
101
+ #define GET_GLOBALCONTRACT_NAME (globalname ) offsetof(struct CDacStringPoolSizes , MAKE_GLOBALCONTRACTLEN_NAME(globalname))
93
102
#define GET_GLOBALSTRING_VALUE (globalname ) offsetof(struct CDacStringPoolSizes , MAKE_GLOBALVALUELEN_NAME(globalname))
94
103
95
104
// count the types
@@ -148,6 +157,15 @@ enum
148
157
#include " wrappeddatadescriptor.inc"
149
158
};
150
159
160
+ // count the contracts
161
+ enum
162
+ {
163
+ CDacBlobGlobalContractsCount =
164
+ #define CDAC_GLOBALS_BEGIN () 0
165
+ #define CDAC_GLOBAL_CONTRACT (name,value ) + 1
166
+ #include " wrappeddatadescriptor.inc"
167
+ };
168
+
151
169
152
170
#define MAKE_TYPEFIELDS_TYNAME (tyname ) CONCAT(CDacFieldsPoolTypeStart__, tyname)
153
171
@@ -226,6 +244,7 @@ struct BinaryBlobDataDescriptor
226
244
uint32_t GlobalStringValuesStart;
227
245
228
246
uint32_t GlobalSubDescriptorsStart;
247
+ uint32_t GlobalContractsStart;
229
248
uint32_t NamesPoolStart;
230
249
231
250
uint32_t TypeCount;
@@ -235,6 +254,7 @@ struct BinaryBlobDataDescriptor
235
254
uint32_t GlobalPointerValuesCount;
236
255
uint32_t GlobalStringValuesCount;
237
256
uint32_t GlobalSubDescriptorsCount;
257
+ uint32_t GlobalContractsCount;
238
258
239
259
uint32_t NamesPoolCount;
240
260
@@ -253,6 +273,7 @@ struct BinaryBlobDataDescriptor
253
273
struct GlobalPointerSpec GlobalPointerValues[CDacBlobGlobalPointersCount + 1 ];
254
274
struct GlobalStringSpec GlobalStringValues[CDacBlobGlobalStringsCount + 1 ];
255
275
struct GlobalPointerSpec GlobalSubDescriptorValues[CDacBlobGlobalSubDescriptorsCount + 1 ];
276
+ struct GlobalContractSpec GlobalContractValues[CDacBlobGlobalContractsCount + 1 ];
256
277
uint8_t NamesPool[sizeof (struct CDacStringPoolSizes )];
257
278
uint8_t EndMagic[4 ];
258
279
};
@@ -279,13 +300,15 @@ struct MagicAndBlob BlobDataDescriptor = {
279
300
/* .GlobalPointersStart = */ offsetof (struct BinaryBlobDataDescriptor , GlobalPointerValues),
280
301
/* .GlobalStringValuesStart = */ offsetof (struct BinaryBlobDataDescriptor , GlobalStringValues),
281
302
/* .GlobalSubDescriptorsStart = */ offsetof (struct BinaryBlobDataDescriptor , GlobalSubDescriptorValues),
303
+ /* .GlobalContractsStart = */ offsetof (struct BinaryBlobDataDescriptor , GlobalContractValues),
282
304
/* .NamesPoolStart = */ offsetof (struct BinaryBlobDataDescriptor , NamesPool),
283
305
/* .TypeCount = */ CDacBlobTypesCount,
284
306
/* .FieldsPoolCount = */ CDacBlobFieldsPoolCount,
285
307
/* .GlobalLiteralValuesCount = */ CDacBlobGlobalLiteralsCount,
286
308
/* .GlobalPointerValuesCount = */ CDacBlobGlobalPointersCount,
287
309
/* .GlobalStringValuesCount = */ CDacBlobGlobalStringsCount,
288
310
/* .GlobalSubDescriptorsCount = */ CDacBlobGlobalSubDescriptorsCount,
311
+ /* .GlobalContractsCount = */ CDacBlobGlobalContractsCount,
289
312
/* .NamesPoolCount = */ sizeof (struct CDacStringPoolSizes ),
290
313
/* .TypeSpecSize = */ sizeof (struct TypeSpec ),
291
314
/* .FieldSpecSize = */ sizeof (struct FieldSpec ),
@@ -337,13 +360,19 @@ struct MagicAndBlob BlobDataDescriptor = {
337
360
#include " wrappeddatadescriptor.inc"
338
361
},
339
362
363
+ /* .GlobalContractValues = */ {
364
+ #define CDAC_GLOBAL_CONTRACT (name,value ) { /* .Name = */ GET_GLOBALCONTRACT_NAME (name), /* .Version = */ value },
365
+ #include " wrappeddatadescriptor.inc"
366
+ },
367
+
340
368
/* .NamesPool = */ (" \0 " // starts with a nul
341
369
#define CDAC_BASELINE (name ) name " \0 "
342
370
#define CDAC_TYPE_BEGIN (name ) #name " \0 "
343
371
#define CDAC_TYPE_FIELD (tyname,membertyname,membername,offset ) #membername " \0 " #membertyname " \0 "
344
372
#define CDAC_GLOBAL_STRING (name,value ) #name " \0 " STRINGIFY(value) " \0 "
345
373
#define CDAC_GLOBAL_POINTER (name,value ) #name " \0 "
346
374
#define CDAC_GLOBAL_SUB_DESCRIPTOR (name,value ) #name " \0 "
375
+ #define CDAC_GLOBAL_CONTRACT (name,value ) #name " \0 "
347
376
#define CDAC_GLOBAL (name,tyname,value ) #name " \0 " #tyname " \0 "
348
377
#include " wrappeddatadescriptor.inc"
349
378
),
0 commit comments