CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
salieri.h
1
30
#if !defined(SALIERI_VERSION) || (SALIERI_VERSION < 1)
31
32
/* TODO: figure out when <sal.h> first appeared. */
33
#if defined(_MSC_VER)
34
#include <sal.h>
35
#elif defined(__has_include)
36
#if __has_include(<sal.h>)
37
#include <sal.h>
38
#endif
39
#endif
40
41
/* The main concern for the implementation is that we don't want to
42
* replace annotations from <sal.h>, but we *do* want to replace
43
* annotations from older versions of Salieri. To keep track of
44
* everything, when we (Salieri) define a SAL annotation, we also
45
* define SALIERI_DEFINED_${annotation} (with the leading and trailing
46
* '-' stripped). Then, before redefining an annotation macro we
47
* check to make sure SALIERI_DEFINED_${annontation} is defined.
48
*
49
* This means you can safely use Salieri in a public header in your
50
* project.
51
*/
52
53
/* Function Parameters & Return Value
54
*
55
* https://msdn.microsoft.com/en-us/library/hh916382.aspx
56
*****/
57
58
/* Pointer Parameters */
59
60
#if defined(_In_) && defined(SALIERI_DEFINED_In)
61
#undef _In_
62
#endif
63
#if !defined(_In_)
64
#define _In_
65
#define SALIERI_DEFINED_In
66
#endif
67
68
#if defined(_Out_) && defined(SALIERI_DEFINED_Out)
69
#undef _Out_
70
#endif
71
#if !defined(_Out_)
72
#define _Out_
73
#define SALIERI_DEFINED_Out
74
#endif
75
76
#if defined(_Inout_) && defined(SALIERI_DEFINED_Inout)
77
#undef _Inout_
78
#endif
79
#if !defined(_Inout_)
80
#define _Inout_
81
#define SALIERI_DEFINED_Inout
82
#endif
83
84
#if defined(_In_z_) && defined(SALIERI_DEFINED_In_z)
85
#undef _In_z_
86
#endif
87
#if !defined(_In_z_)
88
#define _In_z_
89
#define SALIERI_DEFINED_In_z
90
#endif
91
92
#if defined(_Inout_z_) && defined(SALIERI_DEFINED_Inout_z)
93
#undef _Inout_z_
94
#endif
95
#if !defined(_Inout_z_)
96
#define _Inout_z_
97
#define SALIERI_DEFINED_Inout_z
98
#endif
99
100
#if defined(_In_reads_) && defined(SALIERI_DEFINED_In_reads)
101
#undef _In_reads_
102
#endif
103
#if !defined(_In_reads_)
104
#define _In_reads_(s)
105
#define SALIERI_DEFINED_In_reads
106
#endif
107
108
#if defined(_In_reads_bytes_) && defined(SALIERI_DEFINED_In_reads_bytes)
109
#undef _In_reads_bytes_
110
#endif
111
#if !defined(_In_reads_bytes_)
112
#define _In_reads_bytes_(s)
113
#define SALIERI_DEFINED_In_reads_bytes
114
#endif
115
116
#if defined(_In_reads_z_) && defined(SALIERI_DEFINED_In_reads_z)
117
#undef _In_reads_z_
118
#endif
119
#if !defined(_In_reads_z_)
120
#define _In_reads_z_(s)
121
#define SALIERI_DEFINED_In_reads_z
122
#endif
123
124
#if defined(_In_reads_or_z_) && defined(SALIERI_DEFINED_In_reads_or_z)
125
#undef _In_reads_or_z_
126
#endif
127
#if !defined(_In_reads_or_z_)
128
#define _In_reads_or_z_(s)
129
#define SALIERI_DEFINED_In_reads_or_z
130
#endif
131
132
#if defined(_Out_writes_) && defined(SALIERI_DEFINED_Out_writes)
133
#undef _Out_writes_
134
#endif
135
#if !defined(_Out_writes_)
136
#define _Out_writes_(s)
137
#define SALIERI_DEFINED_Out_writes
138
#endif
139
140
#if defined(_Out_writes_bytes_) && defined(SALIERI_DEFINED_Out_writes_bytes)
141
#undef _Out_writes_bytes_
142
#endif
143
#if !defined(_Out_writes_bytes_)
144
#define _Out_writes_bytes_(s)
145
#define SALIERI_DEFINED_Out_writes_bytes
146
#endif
147
148
#if defined(_Out_writes_z_) && defined(SALIERI_DEFINED_Out_writes_z)
149
#undef _Out_writes_z_
150
#endif
151
#if !defined(_Out_writes_z_)
152
#define _Out_writes_z_(s)
153
#define SALIERI_DEFINED_Out_writes_z
154
#endif
155
156
#if defined(_Inout_updates_) && defined(SALIERI_DEFINED_Inout_updates)
157
#undef _Inout_updates_
158
#endif
159
#if !defined(_Inout_updates_)
160
#define _Inout_updates_(s)
161
#define SALIERI_DEFINED_Inout_updates
162
#endif
163
164
#if defined(_Inout_updates_bytes_) && defined(SALIERI_DEFINED_Inout_updates_bytes)
165
#undef _Inout_updates_bytes_
166
#endif
167
#if !defined(_Inout_updates_bytes_)
168
#define _Inout_updates_bytes_(s)
169
#define SALIERI_DEFINED_Inout_updates_bytes
170
#endif
171
172
#if defined(_Inout_updates_z_) && defined(SALIERI_DEFINED_Inout_updates_z)
173
#undef _Inout_updates_z_
174
#endif
175
#if !defined(_Inout_updates_z_)
176
#define _Inout_updates_z_(s)
177
#define SALIERI_DEFINED_Inout_updates_z
178
#endif
179
180
#if defined(_Out_writes_to_) && defined(SALIERI_DEFINED_Out_writes_to)
181
#undef _Out_writes_to_
182
#endif
183
#if !defined(_Out_writes_to_)
184
#define _Out_writes_to_(s, c)
185
#define SALIERI_DEFINED_Out_writes_to
186
#endif
187
188
#if defined(_Out_writes_bytes_to_) && defined(SALIERI_DEFINED_Out_writes_bytes_to)
189
#undef _Out_writes_bytes_to_
190
#endif
191
#if !defined(_Out_writes_bytes_to_)
192
#define _Out_writes_bytes_to_(s, c)
193
#define SALIERI_DEFINED_Out_writes_bytes_to
194
#endif
195
196
#if defined(_Out_writes_all_) && defined(SALIERI_DEFINED_Out_writes_all)
197
#undef _Out_writes_all_
198
#endif
199
#if !defined(_Out_writes_all_)
200
#define _Out_writes_all_(s)
201
#define SALIERI_DEFINED_Out_writes_all
202
#endif
203
204
#if defined(_Out_writes_bytes_all_) && defined(SALIERI_DEFINED_Out_writes_bytes_all)
205
#undef _Out_writes_bytes_all_
206
#endif
207
#if !defined(_Out_writes_bytes_all_)
208
#define _Out_writes_bytes_all_(s)
209
#define SALIERI_DEFINED_Out_writes_bytes_all
210
#endif
211
212
#if defined(_Out_writes_bytes_opt_) && defined(SALIERI_DEFINED_Out_writes_bytes_opt)
213
#undef _Out_writes_bytes_opt_
214
#endif
215
#if !defined(_Out_writes_bytes_opt_)
216
#define _Out_writes_bytes_opt_(s)
217
#define SALIERI_DEFINED_Out_writes_bytes_opt
218
#endif
219
220
#if defined(_In_updates_to_) && defined(SALIERI_DEFINED_In_updates_to)
221
#undef _In_updates_to_
222
#endif
223
#if !defined(_In_updates_to_)
224
#define _In_updates_to_(s, c)
225
#define SALIERI_DEFINED_In_updates_to
226
#endif
227
228
#if defined(_In_updates_bytes_to_) && defined(SALIERI_DEFINED_In_updates_bytes_to)
229
#undef _In_updates_bytes_to_
230
#endif
231
#if !defined(_In_updates_bytes_to_)
232
#define _In_updates_bytes_to_(s, c)
233
#define SALIERI_DEFINED_In_updates_bytes_to
234
#endif
235
236
#if defined(_Inout_updates_z_) && defined(SALIERI_DEFINED_Inout_updates_z)
237
#undef _Inout_updates_z_
238
#endif
239
#if !defined(_Inout_updates_z_)
240
#define _Inout_updates_z_(s)
241
#define SALIERI_DEFINED_Inout_updates_z
242
#endif
243
244
#if defined(_Out_writes_to_) && defined(SALIERI_DEFINED_Out_writes_to)
245
#undef _Out_writes_to_
246
#endif
247
#if !defined(_Out_writes_to_)
248
#define _Out_writes_to_(s, c)
249
#define SALIERI_DEFINED_Out_writes_to
250
#endif
251
252
#if defined(_Out_writes_bytes_to_) && defined(SALIERI_DEFINED_Out_writes_bytes_to)
253
#undef _Out_writes_bytes_to_
254
#endif
255
#if !defined(_Out_writes_bytes_to_)
256
#define _Out_writes_bytes_to_(s, c)
257
#define SALIERI_DEFINED_Out_writes_bytes_to
258
#endif
259
260
#if defined(_Out_writes_all_) && defined(SALIERI_DEFINED_Out_writes_all)
261
#undef _Out_writes_all_
262
#endif
263
#if !defined(_Out_writes_all_)
264
#define _Out_writes_all_(s)
265
#define SALIERI_DEFINED_Out_writes_all
266
#endif
267
268
#if defined(_Out_writes_bytes_all_) && defined(SALIERI_DEFINED_Out_writes_bytes_all)
269
#undef _Out_writes_bytes_all_
270
#endif
271
#if !defined(_Out_writes_bytes_all_)
272
#define _Out_writes_bytes_all_(s)
273
#define SALIERI_DEFINED_Out_writes_bytes_all
274
#endif
275
276
#if defined(_Inout_updates_to_) && defined(SALIERI_DEFINED_Inout_updates_to)
277
#undef _Inout_updates_to_
278
#endif
279
#if !defined(_Inout_updates_to_)
280
#define _Inout_updates_to_(s, c)
281
#define SALIERI_DEFINED_Inout_updates_to
282
#endif
283
284
#if defined(_Inout_updates_bytes_to_) && defined(SALIERI_DEFINED_Inout_updates_bytes_to)
285
#undef _Inout_updates_bytes_to_
286
#endif
287
#if !defined(_Inout_updates_bytes_to_)
288
#define _Inout_updates_bytes_to_(s, c)
289
#define SALIERI_DEFINED_Inout_updates_bytes_to
290
#endif
291
292
#if defined(_Inout_updates_all_) && defined(SALIERI_DEFINED_Inout_updates_all)
293
#undef _Inout_updates_all_
294
#endif
295
#if !defined(_Inout_updates_all_)
296
#define _Inout_updates_all_(s)
297
#define SALIERI_DEFINED_Inout_updates_all
298
#endif
299
300
#if defined(_Inout_updates_bytes_all_) && defined(SALIERI_DEFINED_Inout_updates_bytes_all)
301
#undef _Inout_updates_bytes_all_
302
#endif
303
#if !defined(_Inout_updates_bytes_all_)
304
#define _Inout_updates_bytes_all_(s)
305
#define SALIERI_DEFINED_Inout_updates_bytes_all
306
#endif
307
308
#if defined(_In_reads_to_ptr_) && defined(SALIERI_DEFINED_In_reads_to_ptr)
309
#undef _In_reads_to_ptr_
310
#endif
311
#if !defined(_In_reads_to_ptr_)
312
#define _In_reads_to_ptr_(p)
313
#define SALIERI_DEFINED_In_reads_to_ptr
314
#endif
315
316
#if defined(_In_reads_to_ptr_z_) && defined(SALIERI_DEFINED_In_reads_to_ptr_z)
317
#undef _In_reads_to_ptr_z_
318
#endif
319
#if !defined(_In_reads_to_ptr_z_)
320
#define _In_reads_to_ptr_z_(p)
321
#define SALIERI_DEFINED_In_reads_to_ptr_z
322
#endif
323
324
#if defined(_Out_writes_to_ptr_) && defined(SALIERI_DEFINED_Out_writes_to_ptr)
325
#undef _Out_writes_to_ptr_
326
#endif
327
#if !defined(_Out_writes_to_ptr_)
328
#define _Out_writes_to_ptr_(p)
329
#define SALIERI_DEFINED_Out_writes_to_ptr
330
#endif
331
332
#if defined(_Out_writes_to_ptr_z_) && defined(SALIERI_DEFINED_Out_writes_to_ptr_z)
333
#undef _Out_writes_to_ptr_z_
334
#endif
335
#if !defined(_Out_writes_to_ptr_z_)
336
#define _Out_writes_to_ptr_z_(p)
337
#define SALIERI_DEFINED_Out_writes_to_ptr_z
338
#endif
339
340
/* Optional Pointer Parameters */
341
342
#if defined(_In_opt_) && defined(SALIERI_DEFINED_In_opt)
343
#undef _In_opt_
344
#endif
345
#if !defined(_In_opt_)
346
#define _In_opt_
347
#define SALIERI_DEFINED_In_opt
348
#endif
349
350
#if defined(_Out_opt_) && defined(SALIERI_DEFINED_Out_opt)
351
#undef _Out_opt_
352
#endif
353
#if !defined(_Out_opt_)
354
#define _Out_opt_
355
#define SALIERI_DEFINED_Out_opt
356
#endif
357
358
#if defined(_Inout_opt_) && defined(SALIERI_DEFINED_Inout_opt)
359
#undef _Inout_opt_
360
#endif
361
#if !defined(_Inout_opt_)
362
#define _Inout_opt_
363
#define SALIERI_DEFINED_Inout_opt
364
#endif
365
366
#if defined(_In_opt_z_) && defined(SALIERI_DEFINED_In_opt_z)
367
#undef _In_opt_z_
368
#endif
369
#if !defined(_In_opt_z_)
370
#define _In_opt_z_
371
#define SALIERI_DEFINED_In_opt_z
372
#endif
373
374
#if defined(_Inout_opt_z_) && defined(SALIERI_DEFINED_Inout_opt_z)
375
#undef _Inout_opt_z_
376
#endif
377
#if !defined(_Inout_opt_z_)
378
#define _Inout_opt_z_
379
#define SALIERI_DEFINED_Inout_opt_z
380
#endif
381
382
#if defined(_In_reads_opt_) && defined(SALIERI_DEFINED_In_reads_opt)
383
#undef _In_reads_opt_
384
#endif
385
#if !defined(_In_reads_opt_)
386
#define _In_reads_opt_(s)
387
#define SALIERI_DEFINED_In_reads_opt
388
#endif
389
390
#if defined(_In_reads_bytes_opt_) && defined(SALIERI_DEFINED_In_reads_bytes_opt)
391
#undef _In_reads_bytes_opt_
392
#endif
393
#if !defined(_In_reads_bytes_opt_)
394
#define _In_reads_bytes_opt_(s)
395
#define SALIERI_DEFINED_In_reads_bytes_opt
396
#endif
397
398
#if defined(_In_reads_opt_z_) && defined(SALIERI_DEFINED_In_reads_opt_z)
399
#undef _In_reads_opt_z_
400
#endif
401
#if !defined(_In_reads_opt_z_)
402
#define _In_reads_opt_z_(s)
403
#define SALIERI_DEFINED_In_reads_opt_z
404
#endif
405
406
#if defined(_Out_writes_opt_) && defined(SALIERI_DEFINED_Out_writes_opt)
407
#undef _Out_writes_opt_
408
#endif
409
#if !defined(_Out_writes_opt_)
410
#define _Out_writes_opt_(s)
411
#define SALIERI_DEFINED_Out_writes_opt
412
#endif
413
414
#if defined(_Out_writes_bytes_) && defined(SALIERI_DEFINED_Out_writes_bytes)
415
#undef _Out_writes_bytes_
416
#endif
417
#if !defined(_Out_writes_bytes_)
418
#define _Out_writes_bytes_(s)
419
#define SALIERI_DEFINED_Out_writes_bytes
420
#endif
421
422
#if defined(_Out_writes_opt_z_) && defined(SALIERI_DEFINED_Out_writes_opt_z)
423
#undef _Out_writes_opt_z_
424
#endif
425
#if !defined(_Out_writes_opt_z_)
426
#define _Out_writes_opt_z_(s)
427
#define SALIERI_DEFINED_Out_writes_opt_z
428
#endif
429
430
#if defined(_Inout_updates_opt_) && defined(SALIERI_DEFINED_Inout_updates_opt)
431
#undef _Inout_updates_opt_
432
#endif
433
#if !defined(_Inout_updates_opt_)
434
#define _Inout_updates_opt_(s)
435
#define SALIERI_DEFINED_Inout_updates_opt
436
#endif
437
438
#if defined(_Inout_updates_bytes_opt_) && defined(SALIERI_DEFINED_Inout_updates_bytes_opt)
439
#undef _Inout_updates_bytes_opt_
440
#endif
441
#if !defined(_Inout_updates_bytes_opt_)
442
#define _Inout_updates_bytes_opt_(s)
443
#define SALIERI_DEFINED_Inout_updates_bytes_opt
444
#endif
445
446
#if defined(_Inout_updates_opt_z_) && defined(SALIERI_DEFINED_Inout_updates_opt_z)
447
#undef _Inout_updates_opt_z_
448
#endif
449
#if !defined(_Inout_updates_opt_z_)
450
#define _Inout_updates_opt_z_(s)
451
#define SALIERI_DEFINED_Inout_updates_opt_z
452
#endif
453
454
#if defined(_Out_writes_to_opt_) && defined(SALIERI_DEFINED_Out_writes_to_opt)
455
#undef _Out_writes_to_opt_
456
#endif
457
#if !defined(_Out_writes_to_opt_)
458
#define _Out_writes_to_opt_(s, c)
459
#define SALIERI_DEFINED_Out_writes_to_opt
460
#endif
461
462
#if defined(_Out_writes_bytes_to_opt_) && defined(SALIERI_DEFINED_Out_writes_bytes_to_opt)
463
#undef _Out_writes_bytes_to_opt_
464
#endif
465
#if !defined(_Out_writes_bytes_to_opt_)
466
#define _Out_writes_bytes_to_opt_(s, c)
467
#define SALIERI_DEFINED_Out_writes_bytes_to_opt
468
#endif
469
470
#if defined(_Out_writes_all_opt_) && defined(SALIERI_DEFINED_Out_writes_all_opt)
471
#undef _Out_writes_all_opt_
472
#endif
473
#if !defined(_Out_writes_all_opt_)
474
#define _Out_writes_all_opt_(s)
475
#define SALIERI_DEFINED_Out_writes_all_opt
476
#endif
477
478
#if defined(_Out_writes_bytes_all_opt_) && defined(SALIERI_DEFINED_Out_writes_bytes_all_opt)
479
#undef _Out_writes_bytes_all_opt_
480
#endif
481
#if !defined(_Out_writes_bytes_all_opt_)
482
#define _Out_writes_bytes_all_opt_(s)
483
#define SALIERI_DEFINED_Out_writes_bytes_all_opt
484
#endif
485
486
#if defined(_In_updates_to_opt_) && defined(SALIERI_DEFINED_In_updates_to_opt)
487
#undef _In_updates_to_opt_
488
#endif
489
#if !defined(_In_updates_to_opt_)
490
#define _In_updates_to_opt_(s, c)
491
#define SALIERI_DEFINED_In_updates_to_opt
492
#endif
493
494
#if defined(_In_updates_bytes_to_opt_) && defined(SALIERI_DEFINED_In_updates_bytes_to_opt)
495
#undef _In_updates_bytes_to_opt_
496
#endif
497
#if !defined(_In_updates_bytes_to_opt_)
498
#define _In_updates_bytes_to_opt_(s, c)
499
#define SALIERI_DEFINED_In_updates_bytes_to_opt
500
#endif
501
502
#if defined(_Inout_updates_all_opt_) && defined(SALIERI_DEFINED_Inout_updates_all_opt)
503
#undef _Inout_updates_all_opt_
504
#endif
505
#if !defined(_Inout_updates_all_opt_)
506
#define _Inout_updates_all_opt_(s)
507
#define SALIERI_DEFINED_Inout_updates_all_opt
508
#endif
509
510
#if defined(_Inout_updates_bytes_all_opt_) && defined(SALIERI_DEFINED_Inout_updates_bytes_all_opt)
511
#undef _Inout_updates_bytes_all_opt_
512
#endif
513
#if !defined(_Inout_updates_bytes_all_opt_)
514
#define _Inout_updates_bytes_all_opt_(s)
515
#define SALIERI_DEFINED_Inout_updates_bytes_all_opt
516
#endif
517
518
#if defined(_In_reads_to_ptr_opt_) && defined(SALIERI_DEFINED_In_reads_to_ptr_opt)
519
#undef _In_reads_to_ptr_opt_
520
#endif
521
#if !defined(_In_reads_to_ptr_opt_)
522
#define _In_reads_to_ptr_opt_(p)
523
#define SALIERI_DEFINED_In_reads_to_ptr_opt
524
#endif
525
526
#if defined(_In_reads_to_ptr_opt_z_) && defined(SALIERI_DEFINED_In_reads_to_ptr_opt_z)
527
#undef _In_reads_to_ptr_opt_z_
528
#endif
529
#if !defined(_In_reads_to_ptr_opt_z_)
530
#define _In_reads_to_ptr_opt_z_(p)
531
#define SALIERI_DEFINED_In_reads_to_ptr_opt_z
532
#endif
533
534
#if defined(_Out_writes_to_ptr_opt_) && defined(SALIERI_DEFINED_Out_writes_to_ptr_opt)
535
#undef _Out_writes_to_ptr_opt_
536
#endif
537
#if !defined(_Out_writes_to_ptr_opt_)
538
#define _Out_writes_to_ptr_opt_(p)
539
#define SALIERI_DEFINED_Out_writes_to_ptr_opt
540
#endif
541
542
#if defined(_Out_writes_to_ptr_opt_z_) && defined(SALIERI_DEFINED_Out_writes_to_ptr_opt_z)
543
#undef _Out_writes_to_ptr_opt_z_
544
#endif
545
#if !defined(_Out_writes_to_ptr_opt_z_)
546
#define _Out_writes_to_ptr_opt_z_(p)
547
#define SALIERI_DEFINED_Out_writes_to_ptr_opt_z
548
#endif
549
550
/* Output Pointer Parameters */
551
552
#if defined(_Outptr_) && defined(SALIERI_DEFINED_Outptr)
553
#undef _Outptr_
554
#endif
555
#if !defined(_Outptr_)
556
#define _Outptr_
557
#define SALIERI_DEFINED_Outptr
558
#endif
559
560
#if defined(_Outptr_opt_) && defined(SALIERI_DEFINED_Outptr_opt)
561
#undef _Outptr_opt_
562
#endif
563
#if !defined(_Outptr_opt_)
564
#define _Outptr_opt_
565
#define SALIERI_DEFINED_Outptr_opt
566
#endif
567
568
#if defined(_Outptr_result_maybenull_) && defined(SALIERI_DEFINED_Outptr_result_maybenull)
569
#undef _Outptr_result_maybenull_
570
#endif
571
#if !defined(_Outptr_result_maybenull_)
572
#define _Outptr_result_maybenull_
573
#define SALIERI_DEFINED_Outptr_result_maybenull
574
#endif
575
576
#if defined(_Outptr_opt_result_maybenull_) && defined(SALIERI_DEFINED_Outptr_opt_result_maybenull)
577
#undef _Outptr_opt_result_maybenull_
578
#endif
579
#if !defined(_Outptr_opt_result_maybenull_)
580
#define _Outptr_opt_result_maybenull_
581
#define SALIERI_DEFINED_Outptr_opt_result_maybenull
582
#endif
583
584
#if defined(_Outptr_result_z_) && defined(SALIERI_DEFINED_Outptr_result_z)
585
#undef _Outptr_result_z_
586
#endif
587
#if !defined(_Outptr_result_z_)
588
#define _Outptr_result_z_
589
#define SALIERI_DEFINED_Outptr_result_z
590
#endif
591
592
#if defined(_Outptr_opt_result_z_) && defined(SALIERI_DEFINED_Outptr_opt_result_z)
593
#undef _Outptr_opt_result_z_
594
#endif
595
#if !defined(_Outptr_opt_result_z_)
596
#define _Outptr_opt_result_z_
597
#define SALIERI_DEFINED_Outptr_opt_result_z
598
#endif
599
600
#if defined(_Outptr_result_maybenull_z_) && defined(SALIERI_DEFINED_Outptr_result_maybenull_z)
601
#undef _Outptr_result_maybenull_z_
602
#endif
603
#if !defined(_Outptr_result_maybenull_z_)
604
#define _Outptr_result_maybenull_z_
605
#define SALIERI_DEFINED_Outptr_result_maybenull_z
606
#endif
607
608
#if defined(_Outptr_opt_result_maybenull_z_) && \
609
defined(SALIERI_DEFINED_Outptr_opt_result_maybenull_z)
610
#undef _Outptr_opt_result_maybenull_z_
611
#endif
612
#if !defined(_Outptr_opt_result_maybenull_z_)
613
#define _Outptr_opt_result_maybenull_z_
614
#define SALIERI_DEFINED_Outptr_opt_result_maybenull_z
615
#endif
616
617
#if defined(_COM_Outptr_) && defined(SALIERI_DEFINED_COM_Outptr)
618
#undef _COM_Outptr_
619
#endif
620
#if !defined(_COM_Outptr_)
621
#define _COM_Outptr_
622
#define SALIERI_DEFINED_COM_Outptr
623
#endif
624
625
#if defined(_COM_Outptr_opt_) && defined(SALIERI_DEFINED_COM_Outptr_opt)
626
#undef _COM_Outptr_opt_
627
#endif
628
#if !defined(_COM_Outptr_opt_)
629
#define _COM_Outptr_opt_
630
#define SALIERI_DEFINED_COM_Outptr_opt
631
#endif
632
633
#if defined(_COM_Outptr_result_maybenull_) && defined(SALIERI_DEFINED_COM_Outptr_result_maybenull)
634
#undef _COM_Outptr_result_maybenull_
635
#endif
636
#if !defined(_COM_Outptr_result_maybenull_)
637
#define _COM_Outptr_result_maybenull_
638
#define SALIERI_DEFINED_COM_Outptr_result_maybenull
639
#endif
640
641
#if defined(_Outptr_opt_result_maybenull_) && defined(SALIERI_DEFINED_Outptr_opt_result_maybenull)
642
#undef _Outptr_opt_result_maybenull_
643
#endif
644
#if !defined(_Outptr_opt_result_maybenull_)
645
#define _Outptr_opt_result_maybenull_
646
#define SALIERI_DEFINED_Outptr_opt_result_maybenull
647
#endif
648
649
#if defined(_Outptr_result_buffer_) && defined(SALIERI_DEFINED_Outptr_result_buffer)
650
#undef _Outptr_result_buffer_
651
#endif
652
#if !defined(_Outptr_result_buffer_)
653
#define _Outptr_result_buffer_(s)
654
#define SALIERI_DEFINED_Outptr_result_buffer
655
#endif
656
657
#if defined(_Outptr_result_bytebuffer_) && defined(SALIERI_DEFINED_Outptr_result_bytebuffer)
658
#undef _Outptr_result_bytebuffer_
659
#endif
660
#if !defined(_Outptr_result_bytebuffer_)
661
#define _Outptr_result_bytebuffer_(s)
662
#define SALIERI_DEFINED_Outptr_result_bytebuffer
663
#endif
664
665
#if defined(_Outptr_opt_result_buffer_) && defined(SALIERI_DEFINED_Outptr_opt_result_buffer)
666
#undef _Outptr_opt_result_buffer_
667
#endif
668
#if !defined(_Outptr_opt_result_buffer_)
669
#define _Outptr_opt_result_buffer_(s)
670
#define SALIERI_DEFINED_Outptr_opt_result_buffer
671
#endif
672
673
#if defined(_Outptr_opt_result_bytebuffer_) && defined(SALIERI_DEFINED_Outptr_opt_result_bytebuffer)
674
#undef _Outptr_opt_result_bytebuffer_
675
#endif
676
#if !defined(_Outptr_opt_result_bytebuffer_)
677
#define _Outptr_opt_result_bytebuffer_(s)
678
#define SALIERI_DEFINED_Outptr_opt_result_bytebuffer
679
#endif
680
681
#if defined(_Outptr_result_buffer_to_) && defined(SALIERI_DEFINED_Outptr_result_buffer_to)
682
#undef _Outptr_result_buffer_to_
683
#endif
684
#if !defined(_Outptr_result_buffer_to_)
685
#define _Outptr_result_buffer_to_(s, c)
686
#define SALIERI_DEFINED_Outptr_result_buffer_to
687
#endif
688
689
#if defined(_Outptr_result_bytebuffer_to_) && defined(SALIERI_DEFINED_Outptr_result_bytebuffer_to)
690
#undef _Outptr_result_bytebuffer_to_
691
#endif
692
#if !defined(_Outptr_result_bytebuffer_to_)
693
#define _Outptr_result_bytebuffer_to_(s, c)
694
#define SALIERI_DEFINED_Outptr_result_bytebuffer_to
695
#endif
696
697
#if defined(_Outptr_opt_result_buffer_to_) && defined(SALIERI_DEFINED_Outptr_opt_result_buffer_to)
698
#undef _Outptr_opt_result_buffer_to_
699
#endif
700
#if !defined(_Outptr_opt_result_buffer_to_)
701
#define _Outptr_opt_result_buffer_to_(s, c)
702
#define SALIERI_DEFINED_Outptr_opt_result_buffer_to
703
#endif
704
705
#if defined(_Outptr_opt_result_bytebuffer_to_) && \
706
defined(SALIERI_DEFINED_Outptr_opt_result_bytebuffer_to)
707
#undef _Outptr_opt_result_bytebuffer_to_
708
#endif
709
#if !defined(_Outptr_opt_result_bytebuffer_to_)
710
#define _Outptr_opt_result_bytebuffer_to_(s, c)
711
#define SALIERI_DEFINED_Outptr_opt_result_bytebuffer_to
712
#endif
713
714
#if defined(_Result_nullonfailure_) && defined(SALIERI_DEFINED_Result_nullonfailure)
715
#undef _Result_nullonfailure_
716
#endif
717
#if !defined(_Result_nullonfailure_)
718
#define _Result_nullonfailure_
719
#define SALIERI_DEFINED_Result_nullonfailure
720
#endif
721
722
#if defined(_Result_zeroonfailure_) && defined(SALIERI_DEFINED_Result_zeroonfailure)
723
#undef _Result_zeroonfailure_
724
#endif
725
#if !defined(_Result_zeroonfailure_)
726
#define _Result_zeroonfailure_
727
#define SALIERI_DEFINED_Result_zeroonfailure
728
#endif
729
730
#if defined(_Outptr_result_nullonfailure_) && defined(SALIERI_DEFINED_Outptr_result_nullonfailure)
731
#undef _Outptr_result_nullonfailure_
732
#endif
733
#if !defined(_Outptr_result_nullonfailure_)
734
#define _Outptr_result_nullonfailure_
735
#define SALIERI_DEFINED_Outptr_result_nullonfailure
736
#endif
737
738
#if defined(_Outptr_opt_result_nullonfailure_) && \
739
defined(SALIERI_DEFINED_Outptr_opt_result_nullonfailure)
740
#undef _Outptr_opt_result_nullonfailure_
741
#endif
742
#if !defined(_Outptr_opt_result_nullonfailure_)
743
#define _Outptr_opt_result_nullonfailure_
744
#define SALIERI_DEFINED_Outptr_opt_result_nullonfailure
745
#endif
746
747
#if defined(_Outref_result_nullonfailure_) && defined(SALIERI_DEFINED_Outref_result_nullonfailure)
748
#undef _Outref_result_nullonfailure_
749
#endif
750
#if !defined(_Outref_result_nullonfailure_)
751
#define _Outref_result_nullonfailure_
752
#define SALIERI_DEFINED_Outref_result_nullonfailure
753
#endif
754
755
/* Output Reference Parameters */
756
757
#if defined(_Outref_) && defined(SALIERI_DEFINED_Outref)
758
#undef _Outref_
759
#endif
760
#if !defined(_Outref_)
761
#define _Outref_
762
#define SALIERI_DEFINED_Outref
763
#endif
764
765
#if defined(_Outref_result_maybenull_) && defined(SALIERI_DEFINED_Outref_result_maybenull)
766
#undef _Outref_result_maybenull_
767
#endif
768
#if !defined(_Outref_result_maybenull_)
769
#define _Outref_result_maybenull_
770
#define SALIERI_DEFINED_Outref_result_maybenull
771
#endif
772
773
#if defined(_Outref_result_buffer_) && defined(SALIERI_DEFINED_Outref_result_buffer)
774
#undef _Outref_result_buffer_
775
#endif
776
#if !defined(_Outref_result_buffer_)
777
#define _Outref_result_buffer_(s)
778
#define SALIERI_DEFINED_Outref_result_buffer
779
#endif
780
781
#if defined(_Outref_result_bytebuffer_) && defined(SALIERI_DEFINED_Outref_result_bytebuffer)
782
#undef _Outref_result_bytebuffer_
783
#endif
784
#if !defined(_Outref_result_bytebuffer_)
785
#define _Outref_result_bytebuffer_(s)
786
#define SALIERI_DEFINED_Outref_result_bytebuffer
787
#endif
788
789
#if defined(_Outref_result_buffer_to_) && defined(SALIERI_DEFINED_Outref_result_buffer_to)
790
#undef _Outref_result_buffer_to_
791
#endif
792
#if !defined(_Outref_result_buffer_to_)
793
#define _Outref_result_buffer_to_(s, c)
794
#define SALIERI_DEFINED_Outref_result_buffer_to
795
#endif
796
797
#if defined(_Outref_result_bytebuffer_to_) && defined(SALIERI_DEFINED_Outref_result_bytebuffer_to)
798
#undef _Outref_result_bytebuffer_to_
799
#endif
800
#if !defined(_Outref_result_bytebuffer_to_)
801
#define _Outref_result_bytebuffer_to_(s, c)
802
#define SALIERI_DEFINED_Outref_result_bytebuffer_to
803
#endif
804
805
#if defined(_Outref_result_buffer_all_) && defined(SALIERI_DEFINED_Outref_result_buffer_all)
806
#undef _Outref_result_buffer_all_
807
#endif
808
#if !defined(_Outref_result_buffer_all_)
809
#define _Outref_result_buffer_all_(s)
810
#define SALIERI_DEFINED_Outref_result_buffer_all
811
#endif
812
813
#if defined(_Outref_result_bytebuffer_all_) && defined(SALIERI_DEFINED_Outref_result_bytebuffer_all)
814
#undef _Outref_result_bytebuffer_all_
815
#endif
816
#if !defined(_Outref_result_bytebuffer_all_)
817
#define _Outref_result_bytebuffer_all_(s)
818
#define SALIERI_DEFINED_Outref_result_bytebuffer_all
819
#endif
820
821
#if defined(_Outref_result_buffer_maybenull_) && \
822
defined(SALIERI_DEFINED_Outref_result_buffer_maybenull)
823
#undef _Outref_result_buffer_maybenull_
824
#endif
825
#if !defined(_Outref_result_buffer_maybenull_)
826
#define _Outref_result_buffer_maybenull_(s)
827
#define SALIERI_DEFINED_Outref_result_buffer_maybenull
828
#endif
829
830
#if defined(_Outref_result_bytebuffer_maybenull_) && \
831
defined(SALIERI_DEFINED_Outref_result_bytebuffer_maybenull)
832
#undef _Outref_result_bytebuffer_maybenull_
833
#endif
834
#if !defined(_Outref_result_bytebuffer_maybenull_)
835
#define _Outref_result_bytebuffer_maybenull_(s)
836
#define SALIERI_DEFINED_Outref_result_bytebuffer_maybenull
837
#endif
838
839
#if defined(_Outref_result_buffer_to_maybenull_) && \
840
defined(SALIERI_DEFINED_Outref_result_buffer_to_maybenull)
841
#undef _Outref_result_buffer_to_maybenull_
842
#endif
843
#if !defined(_Outref_result_buffer_to_maybenull_)
844
#define _Outref_result_buffer_to_maybenull_(s, c)
845
#define SALIERI_DEFINED_Outref_result_buffer_to_maybenull
846
#endif
847
848
#if defined(_Outref_result_bytebuffer_to_maybenull_) && \
849
defined(SALIERI_DEFINED_Outref_result_bytebuffer_to_maybenull)
850
#undef _Outref_result_bytebuffer_to_maybenull_
851
#endif
852
#if !defined(_Outref_result_bytebuffer_to_maybenull_)
853
#define _Outref_result_bytebuffer_to_maybenull_(s, c)
854
#define SALIERI_DEFINED_Outref_result_bytebuffer_to_maybenull
855
#endif
856
857
#if defined(_Outref_result_buffer_all_maybenull_) && \
858
defined(SALIERI_DEFINED_Outref_result_buffer_all_maybenull)
859
#undef _Outref_result_buffer_all_maybenull_
860
#endif
861
#if !defined(_Outref_result_buffer_all_maybenull_)
862
#define _Outref_result_buffer_all_maybenull_(s)
863
#define SALIERI_DEFINED_Outref_result_buffer_all_maybenull
864
#endif
865
866
#if defined(_Outref_result_bytebuffer_all_maybenull_) && \
867
defined(SALIERI_DEFINED_Outref_result_bytebuffer_all_maybenull)
868
#undef _Outref_result_bytebuffer_all_maybenull_
869
#endif
870
#if !defined(_Outref_result_bytebuffer_all_maybenull_)
871
#define _Outref_result_bytebuffer_all_maybenull_(s)
872
#define SALIERI_DEFINED_Outref_result_bytebuffer_all_maybenull
873
#endif
874
875
/* Return Values */
876
877
#if defined(_Ret_z_) && defined(SALIERI_DEFINED_Ret_z)
878
#undef _Ret_z_
879
#endif
880
#if !defined(_Ret_z_)
881
#define _Ret_z_
882
#define SALIERI_DEFINED_Ret_z
883
#endif
884
885
#if defined(_Ret_writes_) && defined(SALIERI_DEFINED_Ret_writes)
886
#undef _Ret_writes_
887
#endif
888
#if !defined(_Ret_writes_)
889
#define _Ret_writes_(s)
890
#define SALIERI_DEFINED_Ret_writes
891
#endif
892
893
#if defined(_Ret_writes_bytes_) && defined(SALIERI_DEFINED_Ret_writes_bytes)
894
#undef _Ret_writes_bytes_
895
#endif
896
#if !defined(_Ret_writes_bytes_)
897
#define _Ret_writes_bytes_(s)
898
#define SALIERI_DEFINED_Ret_writes_bytes
899
#endif
900
901
#if defined(_Ret_writes_z_) && defined(SALIERI_DEFINED_Ret_writes_z)
902
#undef _Ret_writes_z_
903
#endif
904
#if !defined(_Ret_writes_z_)
905
#define _Ret_writes_z_(s)
906
#define SALIERI_DEFINED_Ret_writes_z
907
#endif
908
909
#if defined(_Ret_writes_to_) && defined(SALIERI_DEFINED_Ret_writes_to)
910
#undef _Ret_writes_to_
911
#endif
912
#if !defined(_Ret_writes_to_)
913
#define _Ret_writes_to_(s, c)
914
#define SALIERI_DEFINED_Ret_writes_to
915
#endif
916
917
#if defined(_Ret_writes_maybenull_) && defined(SALIERI_DEFINED_Ret_writes_maybenull)
918
#undef _Ret_writes_maybenull_
919
#endif
920
#if !defined(_Ret_writes_maybenull_)
921
#define _Ret_writes_maybenull_(s)
922
#define SALIERI_DEFINED_Ret_writes_maybenull
923
#endif
924
925
#if defined(_Ret_writes_to_maybenull_) && defined(SALIERI_DEFINED_Ret_writes_to_maybenull)
926
#undef _Ret_writes_to_maybenull_
927
#endif
928
#if !defined(_Ret_writes_to_maybenull_)
929
#define _Ret_writes_to_maybenull_(s)
930
#define SALIERI_DEFINED_Ret_writes_to_maybenull
931
#endif
932
933
#if defined(_Ret_writes_maybenull_z_) && defined(SALIERI_DEFINED_Ret_writes_maybenull_z)
934
#undef _Ret_writes_maybenull_z_
935
#endif
936
#if !defined(_Ret_writes_maybenull_z_)
937
#define _Ret_writes_maybenull_z_(s)
938
#define SALIERI_DEFINED_Ret_writes_maybenull_z
939
#endif
940
941
#if defined(_Ret_maybenull_) && defined(SALIERI_DEFINED_Ret_maybenull)
942
#undef _Ret_maybenull_
943
#endif
944
#if !defined(_Ret_maybenull_)
945
#define _Ret_maybenull_
946
#define SALIERI_DEFINED_Ret_maybenull
947
#endif
948
949
#if defined(_Ret_maybenull_z_) && defined(SALIERI_DEFINED_Ret_maybenull_z)
950
#undef _Ret_maybenull_z_
951
#endif
952
#if !defined(_Ret_maybenull_z_)
953
#define _Ret_maybenull_z_
954
#define SALIERI_DEFINED_Ret_maybenull_z
955
#endif
956
957
#if defined(_Ret_null_) && defined(SALIERI_DEFINED_Ret_null)
958
#undef _Ret_null_
959
#endif
960
#if !defined(_Ret_null_)
961
#define _Ret_null_
962
#define SALIERI_DEFINED_Ret_null
963
#endif
964
965
#if defined(_Ret_notnull_) && defined(SALIERI_DEFINED_Ret_notnull)
966
#undef _Ret_notnull_
967
#endif
968
#if !defined(_Ret_notnull_)
969
#define _Ret_notnull_
970
#define SALIERI_DEFINED_Ret_notnull
971
#endif
972
973
#if defined(_Ret_valid_) && defined(SALIERI_DEFINED_Ret_valid)
974
#undef _Ret_valid_
975
#endif
976
#if !defined(_Ret_valid_)
977
#define _Ret_valid_
978
#define SALIERI_DEFINED_Ret_valid
979
#endif
980
981
#if defined(_Ret_opt_valid_) && defined(SALIERI_DEFINED_Ret_opt_valid)
982
#undef _Ret_opt_valid_
983
#endif
984
#if !defined(_Ret_opt_valid_)
985
#define _Ret_opt_valid_
986
#define SALIERI_DEFINED_Ret_opt_valid
987
#endif
988
989
#if defined(_Ret_writes_bytes_to_) && defined(SALIERI_DEFINED_Ret_writes_bytes_to)
990
#undef _Ret_writes_bytes_to_
991
#endif
992
#if !defined(_Ret_writes_bytes_to_)
993
#define _Ret_writes_bytes_to_
994
#define SALIERI_DEFINED_Ret_writes_bytes_to
995
#endif
996
997
#if defined(_Ret_writes_bytes_to_) && defined(SALIERI_DEFINED_Ret_writes_bytes_to)
998
#undef _Ret_writes_bytes_to_
999
#endif
1000
#if !defined(_Ret_writes_bytes_to_)
1001
#define _Ret_writes_bytes_to_
1002
#define SALIERI_DEFINED_Ret_writes_bytes_to
1003
#endif
1004
1005
#if defined(_Ret_writes_bytes_maybenull_) && defined(SALIERI_DEFINED_Ret_writes_bytes_maybenull)
1006
#undef _Ret_writes_bytes_maybenull_
1007
#endif
1008
#if !defined(_Ret_writes_bytes_maybenull_)
1009
#define _Ret_writes_bytes_maybenull_
1010
#define SALIERI_DEFINED_Ret_writes_bytes_maybenull
1011
#endif
1012
1013
#if defined(_Ret_writes_bytes_to_maybenull_) && \
1014
defined(SALIERI_DEFINED_Ret_writes_bytes_to_maybenull)
1015
#undef _Ret_writes_bytes_to_maybenull_
1016
#endif
1017
#if !defined(_Ret_writes_bytes_to_maybenull_)
1018
#define _Ret_writes_bytes_to_maybenull_
1019
#define SALIERI_DEFINED_Ret_writes_bytes_to_maybenull
1020
#endif
1021
1022
/* Other Common Annotations */
1023
1024
#if defined(_In_range_) && defined(SALIERI_DEFINED_In_range)
1025
#undef _In_range_
1026
#endif
1027
#if !defined(_In_range_)
1028
#define _In_range_(low, hi)
1029
#define SALIERI_DEFINED_In_range
1030
#endif
1031
1032
#if defined(_Out_range_) && defined(SALIERI_DEFINED_Out_range)
1033
#undef _Out_range_
1034
#endif
1035
#if !defined(_Out_range_)
1036
#define _Out_range_(low, hi)
1037
#define SALIERI_DEFINED_Out_range
1038
#endif
1039
1040
#if defined(_Ret_range_) && defined(SALIERI_DEFINED_Ret_range)
1041
#undef _Ret_range_
1042
#endif
1043
#if !defined(_Ret_range_)
1044
#define _Ret_range_(low, hi)
1045
#define SALIERI_DEFINED_Ret_range
1046
#endif
1047
1048
#if defined(_Deref_in_range_) && defined(SALIERI_DEFINED_Deref_in_range)
1049
#undef _Deref_in_range_
1050
#endif
1051
#if !defined(_Deref_in_range_)
1052
#define _Deref_in_range_(low, hi)
1053
#define SALIERI_DEFINED_Deref_in_range
1054
#endif
1055
1056
#if defined(_Deref_out_range_) && defined(SALIERI_DEFINED_Deref_out_range)
1057
#undef _Deref_out_range_
1058
#endif
1059
#if !defined(_Deref_out_range_)
1060
#define _Deref_out_range_(low, hi)
1061
#define SALIERI_DEFINED_Deref_out_range
1062
#endif
1063
1064
#if defined(_Deref_inout_range_) && defined(SALIERI_DEFINED_Deref_inout_range)
1065
#undef _Deref_inout_range_
1066
#endif
1067
#if !defined(_Deref_inout_range_)
1068
#define _Deref_inout_range_(low, hi)
1069
#define SALIERI_DEFINED_Deref_inout_range
1070
#endif
1071
1072
#if defined(_Field_range_) && defined(SALIERI_DEFINED_Field_range)
1073
#undef _Field_range_
1074
#endif
1075
#if !defined(_Field_range_)
1076
#define _Field_range_(low, hi)
1077
#define SALIERI_DEFINED_Field_range
1078
#endif
1079
1080
#if defined(_Pre_equal_to_) && defined(SALIERI_DEFINED_Pre_equal_to)
1081
#undef _Pre_equal_to_
1082
#endif
1083
#if !defined(_Pre_equal_to_)
1084
#define _Pre_equal_to_(expr)
1085
#define SALIERI_DEFINED_Pre_equal_to
1086
#endif
1087
1088
#if defined(_Pre_notnull_) && defined(SALIERI_DEFINED_Pre_notnull)
1089
#undef _Pre_notnull_
1090
#endif
1091
#if !defined(_Pre_notnull_)
1092
#define _Pre_notnull_
1093
#define SALIERI_DEFINED_Pre_notnull
1094
#endif
1095
1096
#if defined(_Pre_maybenull_) && defined(SALIERI_DEFINED_Pre_maybenull)
1097
#undef _Pre_maybenull_
1098
#endif
1099
#if !defined(_Pre_maybenull_)
1100
#define _Pre_maybenull_
1101
#define SALIERI_DEFINED_Pre_maybenull
1102
#endif
1103
1104
#if defined(_Pre_null_) && defined(SALIERI_DEFINED_Pre_null)
1105
#undef _Pre_null_
1106
#endif
1107
#if !defined(_Pre_null_)
1108
#define _Pre_null_
1109
#define SALIERI_DEFINED_Pre_null
1110
#endif
1111
1112
#if defined(_Pre_satisfies_) && defined(SALIERI_DEFINED_Pre_satisfies)
1113
#undef _Pre_satisfies_
1114
#endif
1115
#if !defined(_Pre_satisfies_)
1116
#define _Pre_satisfies_(expr)
1117
#define SALIERI_DEFINED_Pre_satisfies
1118
#endif
1119
1120
#if defined(_Pre_valid_) && defined(SALIERI_DEFINED_Pre_valid)
1121
#undef _Pre_valid_
1122
#endif
1123
#if !defined(_Pre_valid_)
1124
#define _Pre_valid_
1125
#define SALIERI_DEFINED_Pre_valid
1126
#endif
1127
1128
#if defined(_Pre_opt_valid_) && defined(SALIERI_DEFINED_Pre_opt_valid)
1129
#undef _Pre_opt_valid_
1130
#endif
1131
#if !defined(_Pre_opt_valid_)
1132
#define _Pre_opt_valid_
1133
#define SALIERI_DEFINED_Pre_opt_valid
1134
#endif
1135
1136
#if defined(_Deref_pre_opt_valid_) && defined(SALIERI_DEFINED_Deref_pre_opt_valid)
1137
#undef _Deref_pre_opt_valid_
1138
#endif
1139
#if !defined(_Deref_pre_opt_valid_)
1140
#define _Deref_pre_opt_valid_
1141
#define SALIERI_DEFINED_Deref_pre_opt_valid
1142
#endif
1143
1144
#if defined(_Deref_pre_valid_) && defined(SALIERI_DEFINED_Deref_pre_valid)
1145
#undef _Deref_pre_valid_
1146
#endif
1147
#if !defined(_Deref_pre_valid_)
1148
#define _Deref_pre_valid_
1149
#define SALIERI_DEFINED_Deref_pre_valid
1150
#endif
1151
1152
#if defined(_Deref_prepost_valid_) && defined(SALIERI_DEFINED_Deref_prepost_valid)
1153
#undef _Deref_prepost_valid_
1154
#endif
1155
#if !defined(_Deref_prepost_valid_)
1156
#define _Deref_prepost_valid_
1157
#define SALIERI_DEFINED_Deref_prepost_valid
1158
#endif
1159
1160
#if defined(_Post_equal_to_) && defined(SALIERI_DEFINED_Post_equal_to)
1161
#undef _Post_equal_to_
1162
#endif
1163
#if !defined(_Post_equal_to_)
1164
#define _Post_equal_to_(expr)
1165
#define SALIERI_DEFINED_Post_equal_to
1166
#endif
1167
1168
#if defined(_Post_invalid_) && defined(SALIERI_DEFINED_Post_invalid)
1169
#undef _Post_invalid_
1170
#endif
1171
#if !defined(_Post_invalid_)
1172
#define _Post_invalid_
1173
#define SALIERI_DEFINED_Post_invalid
1174
#endif
1175
1176
#if defined(_Post_valid_) && defined(SALIERI_DEFINED_Post_valid)
1177
#undef _Post_valid_
1178
#endif
1179
#if !defined(_Post_valid_)
1180
#define _Post_valid_
1181
#define SALIERI_DEFINED_Post_valid
1182
#endif
1183
1184
#if defined(_Post_writable_byte_size_) && defined(SALIERI_DEFINED_Post_equal_to)
1185
#undef _Post_writable_byte_size_
1186
#endif
1187
#if !defined(_Post_writable_byte_size_)
1188
#define _Post_writable_byte_size_(expr)
1189
#define SALIERI_DEFINED_Post_writable_byte_size
1190
#endif
1191
1192
#if defined(_Post_satisfies_) && defined(SALIERI_DEFINED_Post_satisfies)
1193
#undef _Post_satisfies_
1194
#endif
1195
#if !defined(_Post_satisfies_)
1196
#define _Post_satisfies_(expr)
1197
#define SALIERI_DEFINED_Post_satisfies
1198
#endif
1199
1200
#if defined(_Deref_post_opt_valid_) && defined(SALIERI_DEFINED_Deref_post_opt_valid)
1201
#undef _Deref_post_opt_valid_
1202
#endif
1203
#if !defined(_Deref_post_opt_valid_)
1204
#define _Deref_post_opt_valid_
1205
#define SALIERI_DEFINED_Deref_post_opt_valid
1206
#endif
1207
1208
#if defined(_Deref_post_valid_) && defined(SALIERI_DEFINED_Deref_post_valid)
1209
#undef _Deref_post_valid_
1210
#endif
1211
#if !defined(_Deref_post_valid_)
1212
#define _Deref_post_valid_
1213
#define SALIERI_DEFINED_Deref_post_valid
1214
#endif
1215
1216
#if defined(_Deref_post_null_) && defined(SALIERI_DEFINED_Deref_post_null)
1217
#undef _Deref_post_null_
1218
#endif
1219
#if !defined(_Deref_post_null_)
1220
#define _Deref_post_null_
1221
#define SALIERI_DEFINED_Deref_post_null
1222
#endif
1223
1224
#if defined(_Struct_size_bytes_) && defined(SALIERI_DEFINED_Struct_size_bytes)
1225
#undef _Struct_size_bytes_
1226
#endif
1227
#if !defined(_Struct_size_bytes_)
1228
#define _Struct_size_bytes_(size)
1229
#define SALIERI_DEFINED_Struct_size_bytes
1230
#endif
1231
1232
/* Annotating Function Behavior
1233
*
1234
* https://msdn.microsoft.com/en-us/library/jj159529.aspx
1235
*****/
1236
1237
#if defined(_Called_from_function_class_) && defined(SALIERI_DEFINED_Called_from_function_class)
1238
#undef _Called_from_function_class_
1239
#endif
1240
#if !defined(_Called_from_function_class_)
1241
#define _Called_from_function_class_(name)
1242
#define SALIERI_DEFINED_Called_from_function_class
1243
#endif
1244
1245
#if defined(_Check_return_) && defined(SALIERI_DEFINED_Check_return)
1246
#undef _Check_return_
1247
#endif
1248
#if !defined(_Check_return_)
1249
#define _Check_return_
1250
#define SALIERI_DEFINED_Check_return
1251
#endif
1252
1253
#if defined(_Function_class_) && defined(SALIERI_DEFINED_Function_class)
1254
#undef _Function_class_
1255
#endif
1256
#if !defined(_Function_class_)
1257
#define _Function_class_(name)
1258
#define SALIERI_DEFINED_Function_class
1259
#endif
1260
1261
#if defined(_Raises_SEH_exception_) && defined(SALIERI_DEFINED_Raises_SEH_exception)
1262
#undef _Raises_SEH_exception_
1263
#endif
1264
#if !defined(_Raises_SEH_exception_)
1265
#define _Raises_SEH_exception_
1266
#define SALIERI_DEFINED_Raises_SEH_exception
1267
#endif
1268
1269
#if defined(_Must_inspect_result_) && defined(SALIERI_DEFINED_Must_inspect_result)
1270
#undef _Must_inspect_result_
1271
#endif
1272
#if !defined(_Must_inspect_result_)
1273
#define _Must_inspect_result_
1274
#define SALIERI_DEFINED_Must_inspect_result
1275
#endif
1276
1277
#if defined(_Use_decl_annotations_) && defined(SALIERI_DEFINED_Use_decl_annotations)
1278
#undef _Use_decl_annotations_
1279
#endif
1280
#if !defined(_Use_decl_annotations_)
1281
#define _Use_decl_annotations_
1282
#define SALIERI_DEFINED_Use_decl_annotations
1283
#endif
1284
1285
#if defined(_Always_) && defined(SALIERI_DEFINED_Always)
1286
#undef _Always_
1287
#endif
1288
#if !defined(_Always_)
1289
#define _Always_(anno_list)
1290
#define SALIERI_DEFINED_Always
1291
#endif
1292
1293
#if defined(_On_failure_) && defined(SALIERI_DEFINED_On_failure)
1294
#undef _On_failure_
1295
#endif
1296
#if !defined(_On_failure_)
1297
#define _On_failure_(anno_list)
1298
#define SALIERI_DEFINED_On_failure
1299
#endif
1300
1301
#if defined(_Return_type_success_) && defined(SALIERI_DEFINED_Return_type_success)
1302
#undef _Return_type_success_
1303
#endif
1304
#if !defined(_Return_type_success_)
1305
#define _Return_type_success_(expr)
1306
#define SALIERI_DEFINED_Return_type_success
1307
#endif
1308
1309
#if defined(_Success_) && defined(SALIERI_DEFINED_Success)
1310
#undef _Success_
1311
#endif
1312
#if !defined(_Success_)
1313
#define _Success_(expr)
1314
#define SALIERI_DEFINED_Success
1315
#endif
1316
1317
/* Annotating Structs and Classes
1318
*
1319
* https://msdn.microsoft.com/en-us/library/jj159528.aspx
1320
*****/
1321
1322
#if defined(_Field_range_) && defined(SALIERI_DEFINED_Field_range)
1323
#undef _Field_range_
1324
#endif
1325
#if !defined(_Field_range_)
1326
#define _Field_range_(low, high)
1327
#define SALIERI_DEFINED_Field_range
1328
#endif
1329
1330
#if defined(_Field_size_) && defined(SALIERI_DEFINED_Field_size)
1331
#undef _Field_size_
1332
#endif
1333
#if !defined(_Field_size_)
1334
#define _Field_size_(size)
1335
#define SALIERI_DEFINED_Field_size
1336
#endif
1337
1338
#if defined(_Field_size_part_) && defined(SALIERI_DEFINED_Field_size_part)
1339
#undef _Field_size_part_
1340
#endif
1341
#if !defined(_Field_size_part_)
1342
#define _Field_size_part_(size)
1343
#define SALIERI_DEFINED_Field_size_part
1344
#endif
1345
1346
#if defined(_Field_size_opt_) && defined(SALIERI_DEFINED_Field_size_opt)
1347
#undef _Field_size_opt_
1348
#endif
1349
#if !defined(_Field_size_opt_)
1350
#define _Field_size_opt_(size)
1351
#define SALIERI_DEFINED_Field_size_opt
1352
#endif
1353
1354
#if defined(_Field_size_bytes_) && defined(SALIERI_DEFINED_Field_size_bytes)
1355
#undef _Field_size_bytes_
1356
#endif
1357
#if !defined(_Field_size_bytes_)
1358
#define _Field_size_bytes_(size)
1359
#define SALIERI_DEFINED_Field_size_bytes
1360
#endif
1361
1362
#if defined(_Field_size_bytes_opt_) && defined(SALIERI_DEFINED_Field_size_bytes_opt)
1363
#undef _Field_size_bytes_opt_
1364
#endif
1365
#if !defined(_Field_size_bytes_opt_)
1366
#define _Field_size_bytes_opt_(size)
1367
#define SALIERI_DEFINED_Field_size_bytes_opt
1368
#endif
1369
1370
#if defined(_Field_size_part_) && defined(SALIERI_DEFINED_Field_size_part)
1371
#undef _Field_size_part_
1372
#endif
1373
#if !defined(_Field_size_part_)
1374
#define _Field_size_part_(size, count)
1375
#define SALIERI_DEFINED_Field_size_part
1376
#endif
1377
1378
#if defined(_Field_size_part_opt_) && defined(SALIERI_DEFINED_Field_size_part_opt)
1379
#undef _Field_size_part_opt_
1380
#endif
1381
#if !defined(_Field_size_part_opt_)
1382
#define _Field_size_part_opt_(size, count)
1383
#define SALIERI_DEFINED_Field_size_part_opt
1384
#endif
1385
1386
#if defined(_Field_size_bytes_part_) && defined(SALIERI_DEFINED_Field_size_bytes_part)
1387
#undef _Field_size_bytes_part_
1388
#endif
1389
#if !defined(_Field_size_bytes_part_)
1390
#define _Field_size_bytes_part_(size, count)
1391
#define SALIERI_DEFINED_Field_size_bytes_part
1392
#endif
1393
1394
#if defined(_Field_size_bytes_part_opt_) && defined(SALIERI_DEFINED_Field_size_bytes_part_opt)
1395
#undef _Field_size_bytes_part_opt_
1396
#endif
1397
#if !defined(_Field_size_bytes_part_opt_)
1398
#define _Field_size_bytes_part_opt_(size, count)
1399
#define SALIERI_DEFINED_Field_size_bytes_part_opt
1400
#endif
1401
1402
#if defined(_Field_size_full_) && defined(SALIERI_DEFINED_Field_size_full)
1403
#undef _Field_size_full_
1404
#endif
1405
#if !defined(_Field_size_full_)
1406
#define _Field_size_full_(size)
1407
#define SALIERI_DEFINED_Field_size_full
1408
#endif
1409
1410
#if defined(_Field_size_full_opt_) && defined(SALIERI_DEFINED_Field_size_full_opt)
1411
#undef _Field_size_full_opt_
1412
#endif
1413
#if !defined(_Field_size_full_opt_)
1414
#define _Field_size_full_opt_(size)
1415
#define SALIERI_DEFINED_Field_size_full_opt
1416
#endif
1417
1418
#if defined(_Field_size_bytes_full_) && defined(SALIERI_DEFINED_Field_size_bytes_full)
1419
#undef _Field_size_bytes_full_
1420
#endif
1421
#if !defined(_Field_size_bytes_full_)
1422
#define _Field_size_bytes_full_(size)
1423
#define SALIERI_DEFINED_Field_size_bytes_full
1424
#endif
1425
1426
#if defined(_Field_size_bytes_full_opt_) && defined(SALIERI_DEFINED_Field_size_bytes_full_opt)
1427
#undef _Field_size_bytes_full_opt_
1428
#endif
1429
#if !defined(_Field_size_bytes_full_opt_)
1430
#define _Field_size_bytes_full_opt_(size)
1431
#define SALIERI_DEFINED_Field_size_bytes_full_opt
1432
#endif
1433
1434
#if defined(_Struct_size_bytes_) && defined(SALIERI_DEFINED_Struct_size_bytes)
1435
#undef _Struct_size_bytes_
1436
#endif
1437
#if !defined(_Struct_size_bytes_)
1438
#define _Struct_size_bytes_(size)
1439
#define SALIERI_DEFINED_Struct_size_bytes
1440
#endif
1441
1442
/* Annotating Locking Behavior
1443
*
1444
* https://msdn.microsoft.com/en-us/library/hh916381.aspx
1445
*****/
1446
1447
#if defined(_Acquires_exclusive_lock_) && defined(SALIERI_DEFINED_Acquires_exclusive_lock)
1448
#undef _Acquires_exclusive_lock_
1449
#endif
1450
#if !defined(_Acquires_exclusive_lock_)
1451
#define _Acquires_exclusive_lock_(expr)
1452
#define SALIERI_DEFINED_Acquires_exclusive_lock
1453
#endif
1454
1455
#if defined(_Acquires_lock_) && defined(SALIERI_DEFINED_Acquires_lock)
1456
#undef _Acquires_lock_
1457
#endif
1458
#if !defined(_Acquires_lock_)
1459
#define _Acquires_lock_(expr)
1460
#define SALIERI_DEFINED_Acquires_lock
1461
#endif
1462
1463
#if defined(_Acquires_nonreentrant_lock_) && defined(SALIERI_DEFINED_Acquires_nonreentrant_lock)
1464
#undef _Acquires_nonreentrant_lock_
1465
#endif
1466
#if !defined(_Acquires_nonreentrant_lock_)
1467
#define _Acquires_nonreentrant_lock_(expr)
1468
#define SALIERI_DEFINED_Acquires_nonreentrant_lock
1469
#endif
1470
1471
#if defined(_Acquires_shared_lock_) && defined(SALIERI_DEFINED_Acquires_shared_lock)
1472
#undef _Acquires_shared_lock_
1473
#endif
1474
#if !defined(_Acquires_shared_lock_)
1475
#define _Acquires_shared_lock_(expr)
1476
#define SALIERI_DEFINED_Acquires_shared_lock
1477
#endif
1478
1479
#if defined(_Create_lock_level_) && defined(SALIERI_DEFINED_Create_lock_level)
1480
#undef _Create_lock_level_
1481
#endif
1482
#if !defined(_Create_lock_level_)
1483
#define _Create_lock_level_(name)
1484
#define SALIERI_DEFINED_Create_lock_level
1485
#endif
1486
1487
#if defined(_Has_lock_kind_) && defined(SALIERI_DEFINED_Has_lock_kind)
1488
#undef _Has_lock_kind_
1489
#endif
1490
#if !defined(_Has_lock_kind_)
1491
#define _Has_lock_kind_(kind)
1492
#define SALIERI_DEFINED_Has_lock_kind
1493
#endif
1494
1495
#if defined(_Has_lock_level_) && defined(SALIERI_DEFINED_Has_lock_level)
1496
#undef _Has_lock_level_
1497
#endif
1498
#if !defined(_Has_lock_level_)
1499
#define _Has_lock_level_(name)
1500
#define SALIERI_DEFINED_Has_lock_level
1501
#endif
1502
1503
#if defined(_Lock_level_order_) && defined(SALIERI_DEFINED_Lock_level_order)
1504
#undef _Lock_level_order_
1505
#endif
1506
#if !defined(_Lock_level_order_)
1507
#define _Lock_level_order_(name1, name2)
1508
#define SALIERI_DEFINED_Lock_level_order
1509
#endif
1510
1511
#if defined(_Post_same_lock_) && defined(SALIERI_DEFINED_Post_same_lock)
1512
#undef _Post_same_lock_
1513
#endif
1514
#if !defined(_Post_same_lock_)
1515
#define _Post_same_lock_(expr1, expr2)
1516
#define SALIERI_DEFINED_Post_same_lock
1517
#endif
1518
1519
#if defined(_Releases_exclusive_lock_) && defined(SALIERI_DEFINED_Releases_exclusive_lock)
1520
#undef _Releases_exclusive_lock_
1521
#endif
1522
#if !defined(_Releases_exclusive_lock_)
1523
#define _Releases_exclusive_lock_(expr)
1524
#define SALIERI_DEFINED_Releases_exclusive_lock
1525
#endif
1526
1527
#if defined(_Releases_lock_) && defined(SALIERI_DEFINED_Releases_lock)
1528
#undef _Releases_lock_
1529
#endif
1530
#if !defined(_Releases_lock_)
1531
#define _Releases_lock_(expr)
1532
#define SALIERI_DEFINED_Releases_lock
1533
#endif
1534
1535
#if defined(_Releases_nonreentrant_lock_) && defined(SALIERI_DEFINED_Releases_nonreentrant_lock)
1536
#undef _Releases_nonreentrant_lock_
1537
#endif
1538
#if !defined(_Releases_nonreentrant_lock_)
1539
#define _Releases_nonreentrant_lock_(expr)
1540
#define SALIERI_DEFINED_Releases_nonreentrant_lock
1541
#endif
1542
1543
#if defined(_Releases_shared_lock_) && defined(SALIERI_DEFINED_Releases_shared_lock)
1544
#undef _Releases_shared_lock_
1545
#endif
1546
#if !defined(_Releases_shared_lock_)
1547
#define _Releases_shared_lock_(expr)
1548
#define SALIERI_DEFINED_Releases_shared_lock
1549
#endif
1550
1551
#if defined(_Requires_lock_held_) && defined(SALIERI_DEFINED_Requires_lock_held)
1552
#undef _Requires_lock_held_
1553
#endif
1554
#if !defined(_Requires_lock_held_)
1555
#define _Requires_lock_held_(expr)
1556
#define SALIERI_DEFINED_Requires_lock_held
1557
#endif
1558
1559
#if defined(_Requires_lock_not_held_) && defined(SALIERI_DEFINED_Requires_lock_not_held)
1560
#undef _Requires_lock_not_held_
1561
#endif
1562
#if !defined(_Requires_lock_not_held_)
1563
#define _Requires_lock_not_held_(expr)
1564
#define SALIERI_DEFINED_Requires_lock_not_held
1565
#endif
1566
1567
#if defined(_Requires_no_locks_held_) && defined(SALIERI_DEFINED_Requires_no_locks_held)
1568
#undef _Requires_no_locks_held_
1569
#endif
1570
#if !defined(_Requires_no_locks_held_)
1571
#define _Requires_no_locks_held_
1572
#define SALIERI_DEFINED_Requires_no_locks_held
1573
#endif
1574
1575
#if defined(_Requires_shared_lock_held_) && defined(SALIERI_DEFINED_Requires_shared_lock_held)
1576
#undef _Requires_shared_lock_held_
1577
#endif
1578
#if !defined(_Requires_shared_lock_held_)
1579
#define _Requires_shared_lock_held_(expr)
1580
#define SALIERI_DEFINED_Requires_shared_lock_held
1581
#endif
1582
1583
#if defined(_Requires_exclusive_lock_held_) && defined(SALIERI_DEFINED_Requires_exclusive_lock_held)
1584
#undef _Requires_exclusive_lock_held_
1585
#endif
1586
#if !defined(_Requires_exclusive_lock_held_)
1587
#define _Requires_exclusive_lock_held_(expr)
1588
#define SALIERI_DEFINED_Requires_exclusive_lock_held
1589
#endif
1590
1591
/* Shared Data Access Annotations */
1592
1593
#if defined(_Guarded_by_) && defined(SALIERI_DEFINED_Guarded_by)
1594
#undef _Guarded_by_
1595
#endif
1596
#if !defined(_Guarded_by_)
1597
#define _Guarded_by_(expr)
1598
#define SALIERI_DEFINED_Guarded_by
1599
#endif
1600
1601
#if defined(_Interlocked_) && defined(SALIERI_DEFINED_Interlocked)
1602
#undef _Interlocked_
1603
#endif
1604
#if !defined(_Interlocked_)
1605
#define _Interlocked_
1606
#define SALIERI_DEFINED_Interlocked
1607
#endif
1608
1609
#if defined(_Interlocked_operand_) && defined(SALIERI_DEFINED_Interlocked_operand)
1610
#undef _Interlocked_operand_
1611
#endif
1612
#if !defined(_Interlocked_operand_)
1613
#define _Interlocked_operand_
1614
#define SALIERI_DEFINED_Interlocked_operand
1615
#endif
1616
1617
#if defined(_Write_guarded_by_) && defined(SALIERI_DEFINED_Write_guarded_by)
1618
#undef _Write_guarded_by_
1619
#endif
1620
#if !defined(_Write_guarded_by_)
1621
#define _Write_guarded_by_(expr)
1622
#define SALIERI_DEFINED_Write_guarded_by
1623
#endif
1624
1625
/* Specifying When and Where an Annotation Applies
1626
*
1627
* https://msdn.microsoft.com/en-us/library/jj159526.aspx
1628
*****/
1629
1630
#if defined(_At_) && defined(SALIERI_DEFINED_At)
1631
#undef _At_
1632
#endif
1633
#if !defined(_At_)
1634
#define _At_(expr, anno_list)
1635
#define SALIERI_DEFINED_At
1636
#endif
1637
1638
#if defined(_At_buffer_) && defined(SALIERI_DEFINED_At_buffer)
1639
#undef _At_buffer_
1640
#endif
1641
#if !defined(_At_buffer_)
1642
#define _At_buffer_(expr, iter, elem_count, anno_list)
1643
#define SALIERI_DEFINED_At_buffer
1644
#endif
1645
1646
#if defined(_Group_) && defined(SALIERI_DEFINED_Group)
1647
#undef _Group_
1648
#endif
1649
#if !defined(_Group_)
1650
#define _Group_(anno_list)
1651
#define SALIERI_DEFINED_Group
1652
#endif
1653
1654
#if defined(_When_) && defined(SALIERI_DEFINED_When)
1655
#undef _When_
1656
#endif
1657
#if !defined(_When_)
1658
#define _When_(expr, anno_list)
1659
#define SALIERI_DEFINED_When
1660
#endif
1661
1662
#if !defined(_MSC_VER)
1663
1664
/* Intrinsic Functions
1665
*
1666
* https://msdn.microsoft.com/en-us/library/jj159527.aspx
1667
*****/
1668
1669
/* General Purpose */
1670
1671
#if defined(_Curr_) && defined(SALIERI_DEFINED_Curr)
1672
#undef _Curr_
1673
#endif
1674
#if !defined(_Curr_)
1675
#define _Curr_
1676
#define SALIERI_DEFINED_Curr
1677
#endif
1678
1679
#if defined(_Inexpressible_) && defined(SALIERI_DEFINED_Inexpressible)
1680
#undef _Inexpressible_
1681
#endif
1682
#if !defined(_Inexpressible_)
1683
#define _Inexpressible_(expr)
1684
#define SALIERI_DEFINED_Inexpressible
1685
#endif
1686
1687
#if defined(_Nullterm_length_) && defined(SALIERI_DEFINED_Nullterm_length)
1688
#undef _Nullterm_length_
1689
#endif
1690
#if !defined(_Nullterm_length_)
1691
#define _Nullterm_length_(param)
1692
#define SALIERI_DEFINED_Nullterm_length
1693
#endif
1694
1695
#if defined(_Old_) && defined(SALIERI_DEFINED_Old)
1696
#undef _Old_
1697
#endif
1698
#if !defined(_Old_)
1699
#define _Old_(expr)
1700
#define SALIERI_DEFINED_Old
1701
#endif
1702
1703
#if defined(_Param_) && defined(SALIERI_DEFINED_Param)
1704
#undef _Param_
1705
#endif
1706
#if !defined(_Param_)
1707
#define _Param_(n)
1708
#define SALIERI_DEFINED_Param
1709
#endif
1710
1711
/* String Specific */
1712
1713
#if defined(_String_length_) && defined(SALIERI_DEFINED_String_length)
1714
#undef _String_length_
1715
#endif
1716
#if !defined(_String_length_)
1717
#define _String_length_(param)
1718
#define SALIERI_DEFINED_String_length
1719
#endif
1720
1721
#endif
1722
1723
#ifndef _Analysis_assume_
1724
#define _Analysis_assume_(expr)
1725
#endif
1726
1727
#ifndef _Analysis_assume_lock_held_
1728
#define _Analysis_assume_lock_held_(expr)
1729
#endif
1730
1731
#ifndef _Analysis_noreturn_
1732
#define _Analysis_noreturn_
1733
#endif
1734
1735
#define _In_ptr_ _In_ _Deref_pre_valid_
1736
1737
#define _In_ptr_opt_ _In_ _Deref_pre_opt_valid_
1738
1739
#define _Out_ptr_ _Inout_ _Deref_post_valid_
1740
1741
#define _Inout_ptr_ _Inout_ _Deref_prepost_valid_
1742
// _Deref_prepost_opt_valid_ gets this wrong and uses _Deref_post_opt_valid_
1743
// odd because _Prepost_opt_valid_ is correct
1744
#define _Inout_ptr_opt_ _Inout_ _Deref_pre_opt_valid_ _Deref_post_valid_
1745
1746
#define _Inout_ptr_uninit_ _Inout_ _Deref_pre_valid_ _Deref_post_null_
1747
1748
#define _Inout_ptr_opt_uninit_ _Inout_ _Deref_pre_opt_valid_ _Deref_post_null_
1749
1750
#if defined(SALIERI_VERSION)
1751
#undef SALIERI_VERSION
1752
#endif
1753
1754
#define SALIERI_VERSION 1
1755
1756
#endif
/* !defined(SALIERI_VERSION) || (SALIERI_VERSION < X) */
cx
utils
macros
salieri.h
Generated by
1.9.8