sal.h (16412B) - Raw
1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 7 #ifndef SAL_HXX 8 #define SAL_HXX 9 10 #include <concurrencysal.h> 11 12 #ifdef __GNUC__ 13 # define __inner_checkReturn __attribute__((warn_unused_result)) 14 #elif defined(_MSC_VER) 15 # define __inner_checkReturn __declspec("SAL_checkReturn") 16 #else 17 # define __inner_checkReturn 18 #endif 19 20 #define __checkReturn __inner_checkReturn 21 22 /* Input parameters */ 23 #define _In_ 24 #define _In_opt_ 25 #define _In_z_ 26 #define _In_opt_z_ 27 #define _In_reads_(s) 28 #define _In_reads_opt_(s) 29 #define _In_reads_bytes_(s) 30 #define _In_reads_bytes_opt_(s) 31 #define _In_reads_z_(s) 32 #define _In_reads_opt_z_(s) 33 #define _In_reads_or_z_(s) 34 #define _In_reads_or_z_opt_(s) 35 #define _In_reads_to_ptr_(p) 36 #define _In_reads_to_ptr_opt_(p) 37 #define _In_reads_to_ptr_z_(p) 38 #define _In_reads_to_ptr_opt_z_(p) 39 40 #define _In_count_(s) 41 #define _In_opt_count_(s) 42 #define _In_bytecount_(s) 43 #define _In_opt_bytecount_(s) 44 #define _In_count_c_(s) 45 #define _In_opt_count_c_(s) 46 #define _In_bytecount_c_(s) 47 #define _In_opt_bytecount_c_(s) 48 #define _In_z_count_(s) 49 #define _In_opt_z_count_(s) 50 #define _In_z_bytecount_(s) 51 #define _In_opt_z_bytecount_(s) 52 #define _In_z_count_c_(s) 53 #define _In_opt_z_count_c_(s) 54 #define _In_z_bytecount_c_(s) 55 #define _In_opt_z_bytecount_c_(s) 56 #define _In_ptrdiff_count_(s) 57 #define _In_opt_ptrdiff_count_(s) 58 #define _In_count_x_(s) 59 #define _In_opt_count_x_(s) 60 #define _In_bytecount_x_(s) 61 #define _In_opt_bytecount_x_(s) 62 63 /* Output parameters */ 64 #define _Out_ 65 #define _Out_opt_ 66 #define _Out_writes_(s) 67 #define _Out_writes_opt_(s) 68 #define _Out_writes_bytes_(s) 69 #define _Out_writes_bytes_opt_(s) 70 #define _Out_writes_z_(s) 71 #define _Out_writes_opt_z_(s) 72 #define _Out_writes_to_(s, c) 73 #define _Out_writes_to_opt_(s, c) 74 #define _Out_writes_all_(s) 75 #define _Out_writes_all_opt_(s) 76 #define _Out_writes_bytes_to_(s, c) 77 #define _Out_writes_bytes_to_opt_(s, c) 78 #define _Out_writes_bytes_all_(s) 79 #define _Out_writes_bytes_all_opt_(s) 80 #define _Out_writes_to_ptr_(p) 81 #define _Out_writes_to_ptr_opt_(p) 82 #define _Out_writes_to_ptr_z_(p) 83 #define _Out_writes_to_ptr_opt_z_(p) 84 85 #define _Out_cap_(s) 86 #define _Out_opt_cap_(s) 87 #define _Out_bytecap_(s) 88 #define _Out_opt_bytecap_(s) 89 #define _Out_cap_c_(s) 90 #define _Out_opt_cap_c_(s) 91 #define _Out_bytecap_c_(s) 92 #define _Out_opt_bytecap_c_(s) 93 #define _Out_cap_m_(m, s) 94 #define _Out_opt_cap_m_(m, s) 95 #define _Out_z_cap_m_(m, s) 96 #define _Out_opt_z_cap_m_(m, s) 97 #define _Out_ptrdiff_cap_(s) 98 #define _Out_opt_ptrdiff_cap_(s) 99 #define _Out_cap_x_(s) 100 #define _Out_opt_cap_x_(s) 101 #define _Out_bytecap_x_(s) 102 #define _Out_opt_bytecap_x_(s) 103 #define _Out_z_cap_(s) 104 #define _Out_opt_z_cap_(s) 105 #define _Out_z_bytecap_(s) 106 #define _Out_opt_z_bytecap_(s) 107 #define _Out_z_cap_c_(s) 108 #define _Out_opt_z_cap_c_(s) 109 #define _Out_z_bytecap_c_(s) 110 #define _Out_opt_z_bytecap_c_(s) 111 #define _Out_z_cap_x_(s) 112 #define _Out_opt_z_cap_x_(s) 113 #define _Out_z_bytecap_x_(s) 114 #define _Out_opt_z_bytecap_x_(s) 115 #define _Out_cap_post_count_(a, o) 116 #define _Out_opt_cap_post_count_(a, o) 117 #define _Out_bytecap_post_bytecount_(a, o) 118 #define _Out_opt_bytecap_post_bytecount_(a, o) 119 #define _Out_z_cap_post_count_(a, o) 120 #define _Out_opt_z_cap_post_count_(a, o) 121 #define _Out_z_bytecap_post_bytecount_(a, o) 122 #define _Out_opt_z_bytecap_post_bytecount_(a, o) 123 #define _Out_capcount_(c) 124 #define _Out_opt_capcount_(c) 125 #define _Out_bytecapcount_(c) 126 #define _Out_opt_bytecapcount_(c) 127 #define _Out_capcount_x_(c) 128 #define _Out_opt_capcount_x_(c) 129 #define _Out_bytecapcount_x_(c) 130 #define _Out_opt_bytecapcount_x_(c) 131 #define _Out_z_capcount_(c) 132 #define _Out_opt_z_capcount_(c) 133 #define _Out_z_bytecapcount_(c) 134 #define _Out_opt_z_bytecapcount_(c) 135 136 /* Inout parameters */ 137 #define _Inout_ 138 #define _Inout_opt_ 139 #define _Inout_z_ 140 #define _Inout_opt_z_ 141 #define _Inout_updates_(s) 142 #define _Inout_updates_opt_(s) 143 #define _Inout_updates_z_(s) 144 #define _Inout_updates_opt_z_(s) 145 #define _Inout_updates_to_(s, c) 146 #define _Inout_updates_to_opt_(s, c) 147 #define _Inout_updates_all_(s) 148 #define _Inout_updates_all_opt_(s) 149 #define _Inout_updates_bytes_(s) 150 #define _Inout_updates_bytes_opt_(s) 151 #define _Inout_updates_bytes_to_(s, c) 152 #define _Inout_updates_bytes_to_opt_(s, c) 153 #define _Inout_updates_bytes_all_(s) 154 #define _Inout_updates_bytes_all_opt_(s) 155 156 #define _Inout_count_(s) 157 #define _Inout_opt_count_(s) 158 #define _Inout_bytecount_(s) 159 #define _Inout_opt_bytecount_(s) 160 #define _Inout_count_c_(s) 161 #define _Inout_opt_count_c_(s) 162 #define _Inout_bytecount_c_(s) 163 #define _Inout_opt_bytecount_c_(s) 164 #define _Inout_z_count_(s) 165 #define _Inout_opt_z_count_(s) 166 #define _Inout_z_bytecount_(s) 167 #define _Inout_opt_z_bytecount_(s) 168 #define _Inout_z_count_c_(s) 169 #define _Inout_opt_z_count_c_(s) 170 #define _Inout_z_bytecount_c_(s) 171 #define _Inout_opt_z_bytecount_c_(s) 172 #define _Inout_ptrdiff_count_(s) 173 #define _Inout_opt_ptrdiff_count_(s) 174 #define _Inout_count_x_(s) 175 #define _Inout_opt_count_x_(s) 176 #define _Inout_bytecount_x_(s) 177 #define _Inout_opt_bytecount_x_(s) 178 #define _Inout_cap_(s) 179 #define _Inout_opt_cap_(s) 180 #define _Inout_bytecap_(s) 181 #define _Inout_opt_bytecap_(s) 182 #define _Inout_cap_c_(s) 183 #define _Inout_opt_cap_c_(s) 184 #define _Inout_bytecap_c_(s) 185 #define _Inout_opt_bytecap_c_(s) 186 #define _Inout_cap_x_(s) 187 #define _Inout_opt_cap_x_(s) 188 #define _Inout_bytecap_x_(s) 189 #define _Inout_opt_bytecap_x_(s) 190 #define _Inout_z_cap_(s) 191 #define _Inout_opt_z_cap_(s) 192 #define _Inout_z_bytecap_(s) 193 #define _Inout_opt_z_bytecap_(s) 194 #define _Inout_z_cap_c_(s) 195 #define _Inout_opt_z_cap_c_(s) 196 #define _Inout_z_bytecap_c_(s) 197 #define _Inout_opt_z_bytecap_c_(s) 198 #define _Inout_z_cap_x_(s) 199 #define _Inout_opt_z_cap_x_(s) 200 #define _Inout_z_bytecap_x_(s) 201 #define _Inout_opt_z_bytecap_x_(s) 202 203 /* Pointer to pointer parameters */ 204 #define _Outptr_ 205 #define _Outptr_result_maybenull_ 206 #define _Outptr_opt_ 207 #define _Outptr_opt_result_maybenull_ 208 #define _Outptr_result_z_ 209 #define _Outptr_opt_result_z_ 210 #define _Outptr_result_maybenull_z_ 211 #define _Outptr_opt_result_maybenull_z_ 212 #define _Outptr_result_nullonfailure_ 213 #define _Outptr_opt_result_nullonfailure_ 214 #define _COM_Outptr_ 215 #define _COM_Outptr_result_maybenull_ 216 #define _COM_Outptr_opt_ 217 #define _COM_Outptr_opt_result_maybenull_ 218 #define _Outptr_result_buffer_(s) 219 #define _Outptr_opt_result_buffer_(s) 220 #define _Outptr_result_buffer_to_(s, c) 221 #define _Outptr_opt_result_buffer_to_(s, c) 222 #define _Outptr_result_buffer_all_(s) 223 #define _Outptr_opt_result_buffer_all_(s) 224 #define _Outptr_result_buffer_maybenull_(s) 225 #define _Outptr_opt_result_buffer_maybenull_(s) 226 #define _Outptr_result_buffer_to_maybenull_(s, c) 227 #define _Outptr_opt_result_buffer_to_maybenull_(s, c) 228 #define _Outptr_result_buffer_all_maybenull_(s) 229 #define _Outptr_opt_result_buffer_all_maybenull_(s) 230 #define _Outptr_result_bytebuffer_(s) 231 #define _Outptr_opt_result_bytebuffer_(s) 232 #define _Outptr_result_bytebuffer_to_(s, c) 233 #define _Outptr_opt_result_bytebuffer_to_(s, c) 234 #define _Outptr_result_bytebuffer_all_(s) 235 #define _Outptr_opt_result_bytebuffer_all_(s) 236 #define _Outptr_result_bytebuffer_maybenull_(s) 237 #define _Outptr_opt_result_bytebuffer_maybenull_(s) 238 #define _Outptr_result_bytebuffer_to_maybenull_(s, c) 239 #define _Outptr_opt_result_bytebuffer_to_maybenull_(s, c) 240 #define _Outptr_result_bytebuffer_all_maybenull_(s) 241 #define _Outptr_opt_result_bytebuffer_all_maybenull_(s) 242 243 /* Output reference parameters */ 244 #define _Outref_ 245 #define _Outref_result_maybenull_ 246 #define _Outref_result_buffer_(s) 247 #define _Outref_result_bytebuffer_(s) 248 #define _Outref_result_buffer_to_(s, c) 249 #define _Outref_result_bytebuffer_to_(s, c) 250 #define _Outref_result_buffer_all_(s) 251 #define _Outref_result_bytebuffer_all_(s) 252 #define _Outref_result_buffer_maybenull_(s) 253 #define _Outref_result_bytebuffer_maybenull_(s) 254 #define _Outref_result_buffer_to_maybenull_(s, c) 255 #define _Outref_result_bytebuffer_to_maybenull_(s, c) 256 #define _Outref_result_buffer_all_maybenull_(s) 257 #define _Outref_result_bytebuffer_all_maybenull_(s) 258 #define _Outref_result_nullonfailure_ 259 #define _Result_nullonfailure_ 260 #define _Result_zeroonfailure_ 261 262 /* Return values */ 263 #define _Ret_z_ 264 #define _Ret_maybenull_z_ 265 #define _Ret_notnull_ 266 #define _Ret_maybenull_ 267 #define _Ret_null_ 268 #define _Ret_valid_ 269 #define _Ret_writes_(s) 270 #define _Ret_writes_z_(s) 271 #define _Ret_writes_bytes_(s) 272 #define _Ret_writes_maybenull_(s) 273 #define _Ret_writes_maybenull_z_(s) 274 #define _Ret_writes_bytes_maybenull_(s) 275 #define _Ret_writes_to_(s, c) 276 #define _Ret_writes_bytes_to_(s, c) 277 #define _Ret_writes_to_maybenull_(s, c) 278 #define _Ret_writes_bytes_to_maybenull_(s, c) 279 #define _Points_to_data_ 280 #define _Literal_ 281 #define _Notliteral_ 282 #define _Deref_ret_range_(l,u) 283 #define _Unchanged_(e) 284 285 #define _Ret_bytecap_(s) 286 #define _Ret_bytecap_c_(s) 287 #define _Ret_bytecap_x_(s) 288 #define _Ret_bytecount_(s) 289 #define _Ret_bytecount_c_(s) 290 #define _Ret_bytecount_x_(s) 291 #define _Ret_cap_(s) 292 #define _Ret_cap_c_(s) 293 #define _Ret_cap_x_(s) 294 #define _Ret_count_(s) 295 #define _Ret_count_c_(s) 296 #define _Ret_count_x_(s) 297 #define _Ret_opt_bytecap_(s) 298 #define _Ret_opt_bytecap_c_(s) 299 #define _Ret_opt_bytecap_x_(s) 300 #define _Ret_opt_bytecount_(s) 301 #define _Ret_opt_bytecount_c_(s) 302 #define _Ret_opt_bytecount_x_(s) 303 #define _Ret_opt_cap_(s) 304 #define _Ret_opt_cap_c_(s) 305 #define _Ret_opt_cap_x_(s) 306 #define _Ret_opt_count_(s) 307 #define _Ret_opt_count_c_(s) 308 #define _Ret_opt_count_x_(s) 309 #define _Ret_opt_valid_ 310 #define _Ret_opt_z_ 311 #define _Ret_opt_z_bytecap_(s) 312 #define _Ret_opt_z_bytecount_(s) 313 #define _Ret_opt_z_cap_(s) 314 #define _Ret_opt_z_count_(s) 315 #define _Ret_z_bytecap_(s) 316 #define _Ret_z_bytecount_(s) 317 #define _Ret_z_cap_(s) 318 #define _Ret_z_count_(s) 319 320 /* Optional pointer parameters */ 321 #define __in_opt 322 #define __out_opt 323 #define __inout_opt 324 325 /* Other common annotations */ 326 #define _In_range_(low, hi) 327 #define _Out_range_(low, hi) 328 #define _Ret_range_(low, hi) 329 #define _Deref_in_range_(low, hi) 330 #define _Deref_out_range_(low, hi) 331 #define _Deref_inout_range_(low, hi) 332 #define _Struct_size_bytes_(size) 333 #define _Deref_out_ 334 #define _Deref_out_opt_ 335 #define _Deref_opt_out_ 336 #define _Deref_opt_out_opt_ 337 338 /* Function annotations */ 339 #define _Called_from_function_class_(name) 340 #define _Check_return_ __checkReturn 341 #define _Function_class_(name) 342 #define _Raises_SEH_exception_ 343 #define _Maybe_raises_SEH_exception_ 344 #define _Must_inspect_result_ 345 #define _Use_decl_annotations_ 346 347 /* Success/failure annotations */ 348 #define _Always_(anno_list) 349 #define _On_failure_(anno_list) 350 #define _Return_type_success_(expr) 351 #define _Success_(expr) 352 353 #define _Reserved_ 354 #define _Const_ 355 356 /* Buffer properties */ 357 #define _Readable_bytes_(s) 358 #define _Readable_elements_(s) 359 #define _Writable_bytes_(s) 360 #define _Writable_elements_(s) 361 #define _Null_terminated_ 362 #define _NullNull_terminated_ 363 364 /* Field properties */ 365 #define _Field_size_(s) 366 #define _Field_size_full_(s) 367 #define _Field_size_full_opt_(s) 368 #define _Field_size_opt_(s) 369 #define _Field_size_part_(s, c) 370 #define _Field_size_part_opt_(s, c) 371 #define _Field_size_bytes_(size) 372 #define _Field_size_bytes_full_(size) 373 #define _Field_size_bytes_full_opt_(s) 374 #define _Field_size_bytes_opt_(s) 375 #define _Field_size_bytes_part_(s, c) 376 #define _Field_size_bytes_part_opt_(s, c) 377 #define _Field_z_ 378 #define _Field_range_(min, max) 379 380 /* Structural annotations */ 381 #define _At_(e, a) 382 #define _At_buffer_(e, i, c, a) 383 #define _Group_(a) 384 #define _When_(e, a) 385 386 /* printf/scanf annotations */ 387 #define _Printf_format_string_ 388 #define _Scanf_format_string_ 389 #define _Scanf_s_format_string_ 390 #define _Format_string_impl_(kind,where) 391 #define _Printf_format_string_params_(x) 392 #define _Scanf_format_string_params_(x) 393 #define _Scanf_s_format_string_params_(x) 394 395 /* Analysis */ 396 #define _Analysis_mode_(x) 397 #define _Analysis_assume_(expr) 398 #define _Analysis_assume_nullterminated_(expr) 399 400 #define _Post_ 401 #define _Post_bytecap_(s) 402 #define _Post_bytecount_(s) 403 #define _Post_bytecount_c_(s) 404 #define _Post_bytecount_x_(s) 405 #define _Post_cap_(s) 406 #define _Post_count_(s) 407 #define _Post_count_c_(s) 408 #define _Post_count_x_(s) 409 #define _Post_defensive_ 410 #define _Post_equal_to_(expr) 411 #define _Post_impl_ 412 #define _Post_invalid_ 413 #define _Post_maybenull_ 414 #define _Post_maybez_ 415 #define _Post_notnull_ 416 #define _Post_null_ 417 #define _Post_ptr_invalid_ 418 #define _Post_readable_byte_size_(s) 419 #define _Post_readable_size_(s) 420 #define _Post_satisfies_(c) 421 #define _Post_satisfies_impl_(c) 422 #define _Post_valid_ 423 #define _Post_valid_impl_ 424 #define _Post_writable_byte_size_(s) 425 #define _Post_writable_size_(s) 426 427 #define _Post_z_ 428 #define _Post_z_bytecount_(s) 429 #define _Post_z_bytecount_c_(s) 430 #define _Post_z_bytecount_x_(s) 431 #define _Post_z_count_(s) 432 #define _Post_z_count_c_(s) 433 #define _Post_z_count_x_(s) 434 #define _Prepost_z_ 435 436 #define _Null_ 437 #define _Notnull_ 438 #define _Maybenull_ 439 440 #define _Pre_ 441 #define _Pre_bytecap_(s) 442 #define _Pre_bytecap_c_(s) 443 #define _Pre_bytecap_x_(s) 444 #define _Pre_bytecount_(s) 445 #define _Pre_bytecount_c_(s) 446 #define _Pre_bytecount_x_(s) 447 #define _Pre_cap_(s) 448 #define _Pre_cap_c_(s) 449 #define _Pre_cap_c_one_ 450 #define _Pre_cap_for_(p) 451 #define _Pre_cap_m_(m,s) 452 #define _Pre_cap_x_(s) 453 #define _Pre_count_(s) 454 #define _Pre_count_c_(s) 455 #define _Pre_count_x_(s) 456 #define _Pre_defensive_ 457 #define _Pre_equal_to_(expr) 458 #define _Pre_impl_ 459 #define _Pre_invalid_ 460 #define _Pre_maybenull_ 461 #define _Pre_notnull_ 462 #define _Pre_null_ 463 #define _Pre_opt_bytecap_(s) 464 #define _Pre_opt_bytecap_c_(s) 465 #define _Pre_opt_bytecap_x_(s) 466 #define _Pre_opt_bytecount_(s) 467 #define _Pre_opt_bytecount_c_(s) 468 #define _Pre_opt_bytecount_x_(s) 469 #define _Pre_opt_cap_(s) 470 #define _Pre_opt_cap_c_(s) 471 #define _Pre_opt_cap_c_one_ 472 #define _Pre_opt_cap_for_(p) 473 #define _Pre_opt_cap_m_(m,s) 474 #define _Pre_opt_cap_x_(s) 475 #define _Pre_opt_count_(s) 476 #define _Pre_opt_count_c_(s) 477 #define _Pre_opt_count_x_(s) 478 #define _Pre_opt_ptrdiff_cap_(p) 479 #define _Pre_opt_ptrdiff_count_(p) 480 #define _Pre_opt_valid_ 481 #define _Pre_opt_valid_bytecap_(s) 482 #define _Pre_opt_valid_bytecap_c_(s) 483 #define _Pre_opt_valid_bytecap_x_(s) 484 #define _Pre_opt_valid_cap_(s) 485 #define _Pre_opt_valid_cap_c_(s) 486 #define _Pre_opt_valid_cap_x_(s) 487 #define _Pre_opt_z_ 488 #define _Pre_opt_z_bytecap_(s) 489 #define _Pre_opt_z_bytecap_c_(s) 490 #define _Pre_opt_z_bytecap_x_(s) 491 #define _Pre_opt_z_cap_(s) 492 #define _Pre_opt_z_cap_c_(s) 493 #define _Pre_opt_z_cap_x_(s) 494 #define _Pre_ptrdiff_cap_(p) 495 #define _Pre_ptrdiff_count_(p) 496 #define _Pre_readable_byte_size_(s) 497 #define _Pre_readable_size_(s) 498 #define _Pre_readonly_ 499 #define _Pre_satisfies_(c) 500 #define _Pre_satisfies_impl_(c) 501 #define _Pre_unknown_ 502 #define _Pre_valid_ 503 #define _Pre_valid_bytecap_(s) 504 #define _Pre_valid_bytecap_c_(s) 505 #define _Pre_valid_bytecap_x_(s) 506 #define _Pre_valid_cap_(s) 507 #define _Pre_valid_cap_c_(s) 508 #define _Pre_valid_cap_x_(s) 509 #define _Pre_valid_impl_ 510 #define _Pre_writable_byte_size_(s) 511 #define _Pre_writable_size_(s) 512 #define _Pre_writeonly_ 513 #define _Pre_z_ 514 #define _Pre_z_bytecap_(s) 515 #define _Pre_z_bytecap_c_(s) 516 #define _Pre_z_bytecap_x_(s) 517 #define _Pre_z_cap_(s) 518 #define _Pre_z_cap_c_(s) 519 #define _Pre_z_cap_x_(s) 520 521 #define _Strict_type_match_ 522 523 /* FIXME: __in macro conflicts with argument names in libstdc++. For this reason, 524 * we disable it for C++. This should be fixed in libstdc++ so we can uncomment 525 * it in fixed version here. */ 526 #if !defined(__cplusplus) || !defined(__GNUC__) 527 #define __in 528 #define __out 529 #endif 530 531 #define __bcount(size) 532 #define __ecount(size) 533 534 #define __in_bcount(size) 535 #define __in_bcount_nz(size) 536 #define __in_bcount_z(size) 537 #define __in_ecount(size) 538 #define __in_ecount_nz(size) 539 #define __in_ecount_z(size) 540 541 #define __out_bcount(size) 542 #define __out_bcount_nz(size) 543 #define __out_bcount_z(size) 544 #define __out_bcount_full(size) 545 #define __out_bcount_full_z(size) 546 #define __out_bcount_part(size, length) 547 #define __out_bcount_part_z(size, length) 548 #define __out_ecount(size) 549 #define __out_ecount_nz(size) 550 #define __out_ecount_z(size) 551 #define __out_ecount_full(size) 552 #define __out_ecount_full_z(size) 553 #define __out_ecount_part(size, length) 554 #define __out_ecount_part_z(size, length) 555 556 #define __inout 557 #define __inout_bcount(size) 558 #define __inout_bcount_nz(size) 559 #define __inout_bcount_z(size) 560 #define __inout_bcount_full(size) 561 #define __inout_bcount_part(size, length) 562 #define __inout_ecount(size) 563 #define __inout_ecount_nz(size) 564 #define __inout_ecount_z(size) 565 #define __inout_ecount_full(size) 566 #define __inout_ecount_part(size, length) 567 568 #define __deref 569 #define __deref_opt_out 570 #define __deref_opt_out_bcount(x) 571 #define __deref_out 572 #define __deref_out_ecount(size) 573 #define __deref_out_opt 574 575 #define __range(x,y) 576 577 #endif 578