spec.h (31605B)
1/** 2 * WinPR: Windows Portable Runtime 3 * Compiler Specification Strings 4 * 5 * Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com> 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 20#ifndef WINPR_SPEC_H 21#define WINPR_SPEC_H 22 23#include <winpr/platform.h> 24 25#ifdef _WIN32 26 27#include <specstrings.h> 28#ifndef _COM_Outptr_ 29#define _COM_Outptr_ 30#endif 31 32#else 33 34#define DUMMYUNIONNAME u 35#define DUMMYUNIONNAME1 u1 36#define DUMMYUNIONNAME2 u2 37#define DUMMYUNIONNAME3 u3 38#define DUMMYUNIONNAME4 u4 39#define DUMMYUNIONNAME5 u5 40#define DUMMYUNIONNAME6 u6 41#define DUMMYUNIONNAME7 u7 42#define DUMMYUNIONNAME8 u8 43 44#define DUMMYSTRUCTNAME s 45#define DUMMYSTRUCTNAME1 s1 46#define DUMMYSTRUCTNAME2 s2 47#define DUMMYSTRUCTNAME3 s3 48#define DUMMYSTRUCTNAME4 s4 49#define DUMMYSTRUCTNAME5 s5 50 51#if (defined(_M_AMD64) || defined(_M_ARM)) && !defined(_WIN32) 52#define _UNALIGNED __unaligned 53#else 54#define _UNALIGNED 55#endif 56 57#ifndef DECLSPEC_ALIGN 58#if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS) 59#define DECLSPEC_ALIGN(x) __declspec(align(x)) 60#elif defined(__GNUC__) 61#define DECLSPEC_ALIGN(x) __attribute__((__aligned__(x))) 62#else 63#define DECLSPEC_ALIGN(x) 64#endif 65#endif /* DECLSPEC_ALIGN */ 66 67#ifdef _M_AMD64 68#define MEMORY_ALLOCATION_ALIGNMENT 16 69#else 70#define MEMORY_ALLOCATION_ALIGNMENT 8 71#endif 72 73#ifdef __GNUC__ 74#ifndef __declspec 75#define __declspec(e) __attribute__((e)) 76#endif 77#endif 78 79#ifndef DECLSPEC_NORETURN 80#if (defined(__GNUC__) || defined(_MSC_VER) || defined(__clang__)) 81#define DECLSPEC_NORETURN __declspec(noreturn) 82#else 83#define DECLSPEC_NORETURN 84#endif 85#endif /* DECLSPEC_NORETURN */ 86 87/** 88 * Header Annotations: 89 * http://msdn.microsoft.com/en-us/library/windows/desktop/aa383701/ 90 */ 91 92#define __field_bcount(size) __notnull __byte_writableTo(size) 93#define __field_ecount(size) __notnull __elem_writableTo(size) 94#define __post_invalid _Post_ __notvalid 95 96#define __deref_in 97#define __deref_in_ecount(size) 98#define __deref_in_bcount(size) 99#define __deref_in_opt 100#define __deref_in_ecount_opt(size) 101#define __deref_in_bcount_opt(size) 102#define __deref_opt_in 103#define __deref_opt_in_ecount(size) 104#define __deref_opt_in_bcount(size) 105#define __deref_opt_in_opt 106#define __deref_opt_in_ecount_opt(size) 107#define __deref_opt_in_bcount_opt(size) 108#define __out_awcount(expr, size) 109#define __in_awcount(expr, size) 110#define __nullnullterminated 111#define __in_data_source(src_sym) 112#define __kernel_entry 113#define __out_data_source(src_sym) 114#define __analysis_noreturn 115#define _Check_return_opt_ 116#define _Check_return_wat_ 117 118#define __inner_exceptthat 119#define __inner_typefix(ctype) 120#define _Always_(annos) 121#define _Analysis_noreturn_ 122#define _Analysis_assume_(expr) 123#define _At_(target, annos) 124#define _At_buffer_(target, iter, bound, annos) 125#define _Check_return_ 126#define _COM_Outptr_ 127#define _COM_Outptr_opt_ 128#define _COM_Outptr_opt_result_maybenull_ 129#define _COM_Outptr_result_maybenull_ 130#define _Const_ 131#define _Deref_in_bound_ 132#define _Deref_in_range_(lb, ub) 133#define _Deref_inout_bound_ 134#define _Deref_inout_z_ 135#define _Deref_inout_z_bytecap_c_(size) 136#define _Deref_inout_z_cap_c_(size) 137#define _Deref_opt_out_ 138#define _Deref_opt_out_opt_ 139#define _Deref_opt_out_opt_z_ 140#define _Deref_opt_out_z_ 141#define _Deref_out_ 142#define _Deref_out_bound_ 143#define _Deref_out_opt_ 144#define _Deref_out_opt_z_ 145#define _Deref_out_range_(lb, ub) 146#define _Deref_out_z_ 147#define _Deref_out_z_bytecap_c_(size) 148#define _Deref_out_z_cap_c_(size) 149#define _Deref_post_bytecap_(size) 150#define _Deref_post_bytecap_c_(size) 151#define _Deref_post_bytecap_x_(size) 152#define _Deref_post_bytecount_(size) 153#define _Deref_post_bytecount_c_(size) 154#define _Deref_post_bytecount_x_(size) 155#define _Deref_post_cap_(size) 156#define _Deref_post_cap_c_(size) 157#define _Deref_post_cap_x_(size) 158#define _Deref_post_count_(size) 159#define _Deref_post_count_c_(size) 160#define _Deref_post_count_x_(size) 161#define _Deref_post_maybenull_ 162#define _Deref_post_notnull_ 163#define _Deref_post_null_ 164#define _Deref_post_opt_bytecap_(size) 165#define _Deref_post_opt_bytecap_c_(size) 166#define _Deref_post_opt_bytecap_x_(size) 167#define _Deref_post_opt_bytecount_(size) 168#define _Deref_post_opt_bytecount_c_(size) 169#define _Deref_post_opt_bytecount_x_(size) 170#define _Deref_post_opt_cap_(size) 171#define _Deref_post_opt_cap_c_(size) 172#define _Deref_post_opt_cap_x_(size) 173#define _Deref_post_opt_count_(size) 174#define _Deref_post_opt_count_c_(size) 175#define _Deref_post_opt_count_x_(size) 176#define _Deref_post_opt_valid_ 177#define _Deref_post_opt_valid_bytecap_(size) 178#define _Deref_post_opt_valid_bytecap_c_(size) 179#define _Deref_post_opt_valid_bytecap_x_(size) 180#define _Deref_post_opt_valid_cap_(size) 181#define _Deref_post_opt_valid_cap_c_(size) 182#define _Deref_post_opt_valid_cap_x_(size) 183#define _Deref_post_opt_z_ 184#define _Deref_post_opt_z_bytecap_(size) 185#define _Deref_post_opt_z_bytecap_c_(size) 186#define _Deref_post_opt_z_bytecap_x_(size) 187#define _Deref_post_opt_z_cap_(size) 188#define _Deref_post_opt_z_cap_c_(size) 189#define _Deref_post_opt_z_cap_x_(size) 190#define _Deref_post_valid_ 191#define _Deref_post_valid_bytecap_(size) 192#define _Deref_post_valid_bytecap_c_(size) 193#define _Deref_post_valid_bytecap_x_(size) 194#define _Deref_post_valid_cap_(size) 195#define _Deref_post_valid_cap_c_(size) 196#define _Deref_post_valid_cap_x_(size) 197#define _Deref_post_z_ 198#define _Deref_post_z_bytecap_(size) 199#define _Deref_post_z_bytecap_c_(size) 200#define _Deref_post_z_bytecap_x_(size) 201#define _Deref_post_z_cap_(size) 202#define _Deref_post_z_cap_c_(size) 203#define _Deref_post_z_cap_x_(size) 204#define _Deref_pre_bytecap_(size) 205#define _Deref_pre_bytecap_c_(size) 206#define _Deref_pre_bytecap_x_(size) 207#define _Deref_pre_bytecount_(size) 208#define _Deref_pre_bytecount_c_(size) 209#define _Deref_pre_bytecount_x_(size) 210#define _Deref_pre_cap_(size) 211#define _Deref_pre_cap_c_(size) 212#define _Deref_pre_cap_x_(size) 213#define _Deref_pre_count_(size) 214#define _Deref_pre_count_c_(size) 215#define _Deref_pre_count_x_(size) 216#define _Deref_pre_invalid_ 217#define _Deref_pre_maybenull_ 218#define _Deref_pre_notnull_ 219#define _Deref_pre_null_ 220#define _Deref_pre_opt_bytecap_(size) 221#define _Deref_pre_opt_bytecap_c_(size) 222#define _Deref_pre_opt_bytecap_x_(size) 223#define _Deref_pre_opt_bytecount_(size) 224#define _Deref_pre_opt_bytecount_c_(size) 225#define _Deref_pre_opt_bytecount_x_(size) 226#define _Deref_pre_opt_cap_(size) 227#define _Deref_pre_opt_cap_c_(size) 228#define _Deref_pre_opt_cap_x_(size) 229#define _Deref_pre_opt_count_(size) 230#define _Deref_pre_opt_count_c_(size) 231#define _Deref_pre_opt_count_x_(size) 232#define _Deref_pre_opt_valid_ 233#define _Deref_pre_opt_valid_bytecap_(size) 234#define _Deref_pre_opt_valid_bytecap_c_(size) 235#define _Deref_pre_opt_valid_bytecap_x_(size) 236#define _Deref_pre_opt_valid_cap_(size) 237#define _Deref_pre_opt_valid_cap_c_(size) 238#define _Deref_pre_opt_valid_cap_x_(size) 239#define _Deref_pre_opt_z_ 240#define _Deref_pre_opt_z_bytecap_(size) 241#define _Deref_pre_opt_z_bytecap_c_(size) 242#define _Deref_pre_opt_z_bytecap_x_(size) 243#define _Deref_pre_opt_z_cap_(size) 244#define _Deref_pre_opt_z_cap_c_(size) 245#define _Deref_pre_opt_z_cap_x_(size) 246#define _Deref_pre_readonly_ 247#define _Deref_pre_valid_ 248#define _Deref_pre_valid_bytecap_(size) 249#define _Deref_pre_valid_bytecap_c_(size) 250#define _Deref_pre_valid_bytecap_x_(size) 251#define _Deref_pre_valid_cap_(size) 252#define _Deref_pre_valid_cap_c_(size) 253#define _Deref_pre_valid_cap_x_(size) 254#define _Deref_pre_writeonly_ 255#define _Deref_pre_z_ 256#define _Deref_pre_z_bytecap_(size) 257#define _Deref_pre_z_bytecap_c_(size) 258#define _Deref_pre_z_bytecap_x_(size) 259#define _Deref_pre_z_cap_(size) 260#define _Deref_pre_z_cap_c_(size) 261#define _Deref_pre_z_cap_x_(size) 262#define _Deref_prepost_bytecap_(size) 263#define _Deref_prepost_bytecap_x_(size) 264#define _Deref_prepost_bytecount_(size) 265#define _Deref_prepost_bytecount_x_(size) 266#define _Deref_prepost_cap_(size) 267#define _Deref_prepost_cap_x_(size) 268#define _Deref_prepost_count_(size) 269#define _Deref_prepost_count_x_(size) 270#define _Deref_prepost_opt_bytecap_(size) 271#define _Deref_prepost_opt_bytecap_x_(size) 272#define _Deref_prepost_opt_bytecount_(size) 273#define _Deref_prepost_opt_bytecount_x_(size) 274#define _Deref_prepost_opt_cap_(size) 275#define _Deref_prepost_opt_cap_x_(size) 276#define _Deref_prepost_opt_count_(size) 277#define _Deref_prepost_opt_count_x_(size) 278#define _Deref_prepost_opt_valid_ 279#define _Deref_prepost_opt_valid_bytecap_(size) 280#define _Deref_prepost_opt_valid_bytecap_x_(size) 281#define _Deref_prepost_opt_valid_cap_(size) 282#define _Deref_prepost_opt_valid_cap_x_(size) 283#define _Deref_prepost_opt_z_ 284#define _Deref_prepost_opt_z_bytecap_(size) 285#define _Deref_prepost_opt_z_cap_(size) 286#define _Deref_prepost_valid_ 287#define _Deref_prepost_valid_bytecap_(size) 288#define _Deref_prepost_valid_bytecap_x_(size) 289#define _Deref_prepost_valid_cap_(size) 290#define _Deref_prepost_valid_cap_x_(size) 291#define _Deref_prepost_z_ 292#define _Deref_prepost_z_bytecap_(size) 293#define _Deref_prepost_z_cap_(size) 294#define _Deref_ret_bound_ 295#define _Deref_ret_opt_z_ 296#define _Deref_ret_range_(lb, ub) 297#define _Deref_ret_z_ 298#define _Deref2_pre_readonly_ 299#define _Field_range_(min, max) 300#define _Field_size_(size) 301#define _Field_size_bytes_(size) 302#define _Field_size_bytes_full_(size) 303#define _Field_size_bytes_full_opt_(size) 304#define _Field_size_bytes_opt_(size) 305#define _Field_size_bytes_part_(size, count) 306#define _Field_size_bytes_part_opt_(size, count) 307#define _Field_size_full_(size) 308#define _Field_size_full_opt_(size) 309#define _Field_size_opt_(size) 310#define _Field_size_part_(size, count) 311#define _Field_size_part_opt_(size, count) 312#define _Field_z_ 313#define _Function_class_(x) 314#define _Group_(annos) 315#define _In_ 316#define _In_bound_ 317#define _In_bytecount_(size) 318#define _In_bytecount_c_(size) 319#define _In_bytecount_x_(size) 320#define _In_count_(size) 321#define _In_count_c_(size) 322#define _In_count_x_(size) 323#define _In_defensive_(annotes) 324#define _In_opt_ 325#define _In_opt_bytecount_(size) 326#define _In_opt_bytecount_c_(size) 327#define _In_opt_bytecount_x_(size) 328#define _In_opt_count_(size) 329#define _In_opt_count_c_(size) 330#define _In_opt_count_x_(size) 331#define _In_opt_ptrdiff_count_(size) 332#define _In_opt_z_ 333#define _In_opt_z_bytecount_(size) 334#define _In_opt_z_bytecount_c_(size) 335#define _In_opt_z_count_(size) 336#define _In_opt_z_count_c_(size) 337#define _In_ptrdiff_count_(size) 338#define _In_range_(lb, ub) 339#define _In_reads_(size) 340#define _In_reads_bytes_(size) 341#define _In_reads_bytes_opt_(size) 342#define _In_reads_opt_(size) 343#define _In_reads_opt_z_(size) 344#define _In_reads_or_z_(size) 345#define _In_reads_to_ptr_(ptr) 346#define _In_reads_to_ptr_opt_(ptr) 347#define _In_reads_to_ptr_opt_z_(ptr) 348#define _In_reads_to_ptr_z_(ptr) 349#define _In_reads_z_(size) 350#define _In_z_ 351#define _In_z_bytecount_(size) 352#define _In_z_bytecount_c_(size) 353#define _In_z_count_(size) 354#define _In_z_count_c_(size) 355#define _Inout_ 356#define _Inout_bytecap_(size) 357#define _Inout_bytecap_c_(size) 358#define _Inout_bytecap_x_(size) 359#define _Inout_bytecount_(size) 360#define _Inout_bytecount_c_(size) 361#define _Inout_bytecount_x_(size) 362#define _Inout_cap_(size) 363#define _Inout_cap_c_(size) 364#define _Inout_cap_x_(size) 365#define _Inout_count_(size) 366#define _Inout_count_c_(size) 367#define _Inout_count_x_(size) 368#define _Inout_defensive_(annotes) 369#define _Inout_opt_ 370#define _Inout_opt_bytecap_(size) 371#define _Inout_opt_bytecap_c_(size) 372#define _Inout_opt_bytecap_x_(size) 373#define _Inout_opt_bytecount_(size) 374#define _Inout_opt_bytecount_c_(size) 375#define _Inout_opt_bytecount_x_(size) 376#define _Inout_opt_cap_(size) 377#define _Inout_opt_cap_c_(size) 378#define _Inout_opt_cap_x_(size) 379#define _Inout_opt_count_(size) 380#define _Inout_opt_count_c_(size) 381#define _Inout_opt_count_x_(size) 382#define _Inout_opt_ptrdiff_count_(size) 383#define _Inout_opt_z_ 384#define _Inout_opt_z_bytecap_(size) 385#define _Inout_opt_z_bytecap_c_(size) 386#define _Inout_opt_z_bytecap_x_(size) 387#define _Inout_opt_z_bytecount_(size) 388#define _Inout_opt_z_bytecount_c_(size) 389#define _Inout_opt_z_cap_(size) 390#define _Inout_opt_z_cap_c_(size) 391#define _Inout_opt_z_cap_x_(size) 392#define _Inout_opt_z_count_(size) 393#define _Inout_opt_z_count_c_(size) 394#define _Inout_ptrdiff_count_(size) 395#define _Inout_updates_(size) 396#define _Inout_updates_all_(size) 397#define _Inout_updates_all_opt_(size) 398#define _Inout_updates_bytes_(size) 399#define _Inout_updates_bytes_all_(size) 400#define _Inout_updates_bytes_all_opt_(size) 401#define _Inout_updates_bytes_opt_(size) 402#define _Inout_updates_bytes_to_(size, count) 403#define _Inout_updates_bytes_to_opt_(size, count) 404#define _Inout_updates_opt_(size) 405#define _Inout_updates_opt_z_(size) 406#define _Inout_updates_to_(size, count) 407#define _Inout_updates_to_opt_(size, count) 408#define _Inout_updates_z_(size) 409#define _Inout_z_ 410#define _Inout_z_bytecap_(size) 411#define _Inout_z_bytecap_c_(size) 412#define _Inout_z_bytecap_x_(size) 413#define _Inout_z_bytecount_(size) 414#define _Inout_z_bytecount_c_(size) 415#define _Inout_z_cap_(size) 416#define _Inout_z_cap_c_(size) 417#define _Inout_z_cap_x_(size) 418#define _Inout_z_count_(size) 419#define _Inout_z_count_c_(size) 420#define _Interlocked_operand_ 421#define _Literal_ 422#define _Maybenull_ 423#define _Maybevalid_ 424#define _Maybe_raises_SEH_exception 425#define _Must_inspect_result_ 426#define _Notliteral_ 427#define _Notnull_ 428#define _Notref_ 429#define _Notvalid_ 430#define _Null_ 431#define _Null_terminated_ 432#define _NullNull_terminated_ 433#define _On_failure_(annos) 434#define _Out_ 435#define _Out_bound_ 436#define _Out_bytecap_(size) 437#define _Out_bytecap_c_(size) 438#define _Out_bytecap_post_bytecount_(cap, count) 439#define _Out_bytecap_x_(size) 440#define _Out_bytecapcount_(capcount) 441#define _Out_bytecapcount_x_(capcount) 442#define _Out_cap_(size) 443#define _Out_cap_c_(size) 444#define _Out_cap_m_(mult, size) 445#define _Out_cap_post_count_(cap, count) 446#define _Out_cap_x_(size) 447#define _Out_capcount_(capcount) 448#define _Out_capcount_x_(capcount) 449#define _Out_defensive_(annotes) 450#define _Out_opt_ 451#define _Out_opt_bytecap_(size) 452#define _Out_opt_bytecap_c_(size) 453#define _Out_opt_bytecap_post_bytecount_(cap, count) 454#define _Out_opt_bytecap_x_(size) 455#define _Out_opt_bytecapcount_(capcount) 456#define _Out_opt_bytecapcount_x_(capcount) 457#define _Out_opt_cap_(size) 458#define _Out_opt_cap_c_(size) 459#define _Out_opt_cap_m_(mult, size) 460#define _Out_opt_cap_post_count_(cap, count) 461#define _Out_opt_cap_x_(size) 462#define _Out_opt_capcount_(capcount) 463#define _Out_opt_capcount_x_(capcount) 464#define _Out_opt_ptrdiff_cap_(size) 465#define _Out_opt_z_bytecap_(size) 466#define _Out_opt_z_bytecap_c_(size) 467#define _Out_opt_z_bytecap_post_bytecount_(cap, count) 468#define _Out_opt_z_bytecap_x_(size) 469#define _Out_opt_z_bytecapcount_(capcount) 470#define _Out_opt_z_cap_(size) 471#define _Out_opt_z_cap_c_(size) 472#define _Out_opt_z_cap_m_(mult, size) 473#define _Out_opt_z_cap_post_count_(cap, count) 474#define _Out_opt_z_cap_x_(size) 475#define _Out_opt_z_capcount_(capcount) 476#define _Out_ptrdiff_cap_(size) 477#define _Out_range_(lb, ub) 478#define _Out_writes_(size) 479#define _Out_writes_all_(size) 480#define _Out_writes_all_opt_(size) 481#define _Out_writes_bytes_(size) 482#define _Out_writes_bytes_all_(size) 483#define _Out_writes_bytes_all_opt_(size) 484#define _Out_writes_bytes_opt_(size) 485#define _Out_writes_bytes_to_(size, count) 486#define _Out_writes_bytes_to_opt_(size, count) 487#define _Out_writes_opt_(size) 488#define _Out_writes_opt_z_(size) 489#define _Out_writes_to_(size, count) 490#define _Out_writes_to_opt_(size, count) 491#define _Out_writes_to_ptr_(ptr) 492#define _Out_writes_to_ptr_opt_(ptr) 493#define _Out_writes_to_ptr_opt_z_(ptr) 494#define _Out_writes_to_ptr_z_(ptr) 495#define _Out_writes_z_(size) 496#define _Out_z_bytecap_(size) 497#define _Out_z_bytecap_c_(size) 498#define _Out_z_bytecap_post_bytecount_(cap, count) 499#define _Out_z_bytecap_x_(size) 500#define _Out_z_bytecapcount_(capcount) 501#define _Out_z_cap_(size) 502#define _Out_z_cap_c_(size) 503#define _Out_z_cap_m_(mult, size) 504#define _Out_z_cap_post_count_(cap, count) 505#define _Out_z_cap_x_(size) 506#define _Out_z_capcount_(capcount) 507#define _Outptr_ 508#define _Outptr_opt_ 509#define _Outptr_opt_result_buffer_(size) 510#define _Outptr_opt_result_buffer_all_(size) 511#define _Outptr_opt_result_buffer_all_maybenull_(size) 512#define _Outptr_opt_result_buffer_maybenull_(size) 513#define _Outptr_opt_result_buffer_to_(size, count) 514#define _Outptr_opt_result_buffer_to_maybenull_(size, count) 515#define _Outptr_opt_result_bytebuffer_(size) 516#define _Outptr_opt_result_bytebuffer_all_(size) 517#define _Outptr_opt_result_bytebuffer_all_maybenull_(size) 518#define _Outptr_opt_result_bytebuffer_maybenull_(size) 519#define _Outptr_opt_result_bytebuffer_to_(size, count) 520#define _Outptr_opt_result_bytebuffer_to_maybenull_(size, count) 521#define _Outptr_opt_result_maybenull_ 522#define _Outptr_opt_result_maybenull_z_ 523#define _Outptr_opt_result_nullonfailure_ 524#define _Outptr_opt_result_z_ 525#define _Outptr_result_buffer_(size) 526#define _Outptr_result_buffer_all_(size) 527#define _Outptr_result_buffer_all_maybenull_(size) 528#define _Outptr_result_buffer_maybenull_(size) 529#define _Outptr_result_buffer_to_(size, count) 530#define _Outptr_result_buffer_to_maybenull_(size, count) 531#define _Outptr_result_bytebuffer_(size) 532#define _Outptr_result_bytebuffer_all_(size) 533#define _Outptr_result_bytebuffer_all_maybenull_(size) 534#define _Outptr_result_bytebuffer_maybenull_(size) 535#define _Outptr_result_bytebuffer_to_(size, count) 536#define _Outptr_result_bytebuffer_to_maybenull_(size, count) 537#define _Outptr_result_maybenull_ 538#define _Outptr_result_maybenull_z_ 539#define _Outptr_result_nullonfailure_ 540#define _Outptr_result_z_ 541#define _Outref_ 542#define _Outref_result_buffer_(size) 543#define _Outref_result_buffer_all_(size) 544#define _Outref_result_buffer_all_maybenull_(size) 545#define _Outref_result_buffer_maybenull_(size) 546#define _Outref_result_buffer_to_(size, count) 547#define _Outref_result_buffer_to_maybenull_(size, count) 548#define _Outref_result_bytebuffer_(size) 549#define _Outref_result_bytebuffer_all_(size) 550#define _Outref_result_bytebuffer_all_maybenull_(size) 551#define _Outref_result_bytebuffer_maybenull_(size) 552#define _Outref_result_bytebuffer_to_(size, count) 553#define _Outref_result_bytebuffer_to_maybenull_(size, count) 554#define _Outref_result_maybenull_ 555#define _Outref_result_nullonfailure_ 556#define _Points_to_data_ 557#define _Post_ 558#define _Post_bytecap_(size) 559#define _Post_bytecount_(size) 560#define _Post_bytecount_c_(size) 561#define _Post_bytecount_x_(size) 562#define _Post_cap_(size) 563#define _Post_count_(size) 564#define _Post_count_c_(size) 565#define _Post_count_x_(size) 566#define _Post_defensive_ 567#define _Post_equal_to_(expr) 568#define _Post_invalid_ 569#define _Post_maybenull_ 570#define _Post_maybez_ 571#define _Post_notnull_ 572#define _Post_null_ 573#define _Post_ptr_invalid_ 574#define _Post_readable_byte_size_(size) 575#define _Post_readable_size_(size) 576#define _Post_satisfies_(cond) 577#define _Post_valid_ 578#define _Post_writable_byte_size_(size) 579#define _Post_writable_size_(size) 580#define _Post_z_ 581#define _Post_z_bytecount_(size) 582#define _Post_z_bytecount_c_(size) 583#define _Post_z_bytecount_x_(size) 584#define _Post_z_count_(size) 585#define _Post_z_count_c_(size) 586#define _Post_z_count_x_(size) 587#define _Pre_ 588#define _Pre_bytecap_(size) 589#define _Pre_bytecap_c_(size) 590#define _Pre_bytecap_x_(size) 591#define _Pre_bytecount_(size) 592#define _Pre_bytecount_c_(size) 593#define _Pre_bytecount_x_(size) 594#define _Pre_cap_(size) 595#define _Pre_cap_c_(size) 596#define _Pre_cap_c_one_ 597#define _Pre_cap_for_(param) 598#define _Pre_cap_m_(mult, size) 599#define _Pre_cap_x_(size) 600#define _Pre_count_(size) 601#define _Pre_count_c_(size) 602#define _Pre_count_x_(size) 603#define _Pre_defensive_ 604#define _Pre_equal_to_(expr) 605#define _Pre_invalid_ 606#define _Pre_maybenull_ 607#define _Pre_notnull_ 608#define _Pre_null_ 609#define _Pre_opt_bytecap_(size) 610#define _Pre_opt_bytecap_c_(size) 611#define _Pre_opt_bytecap_x_(size) 612#define _Pre_opt_bytecount_(size) 613#define _Pre_opt_bytecount_c_(size) 614#define _Pre_opt_bytecount_x_(size) 615#define _Pre_opt_cap_(size) 616#define _Pre_opt_cap_c_(size) 617#define _Pre_opt_cap_c_one_ 618#define _Pre_opt_cap_for_(param) 619#define _Pre_opt_cap_m_(mult, size) 620#define _Pre_opt_cap_x_(size) 621#define _Pre_opt_count_(size) 622#define _Pre_opt_count_c_(size) 623#define _Pre_opt_count_x_(size) 624#define _Pre_opt_ptrdiff_cap_(ptr) 625#define _Pre_opt_ptrdiff_count_(ptr) 626#define _Pre_opt_valid_ 627#define _Pre_opt_valid_bytecap_(size) 628#define _Pre_opt_valid_bytecap_c_(size) 629#define _Pre_opt_valid_bytecap_x_(size) 630#define _Pre_opt_valid_cap_(size) 631#define _Pre_opt_valid_cap_c_(size) 632#define _Pre_opt_valid_cap_x_(size) 633#define _Pre_opt_z_ 634#define _Pre_opt_z_bytecap_(size) 635#define _Pre_opt_z_bytecap_c_(size) 636#define _Pre_opt_z_bytecap_x_(size) 637#define _Pre_opt_z_cap_(size) 638#define _Pre_opt_z_cap_c_(size) 639#define _Pre_opt_z_cap_x_(size) 640#define _Pre_ptrdiff_cap_(ptr) 641#define _Pre_ptrdiff_count_(ptr) 642#define _Pre_readable_byte_size_(size) 643#define _Pre_readable_size_(size) 644#define _Pre_readonly_ 645#define _Pre_satisfies_(cond) 646#define _Pre_unknown_ 647#define _Pre_valid_ 648#define _Pre_valid_bytecap_(size) 649#define _Pre_valid_bytecap_c_(size) 650#define _Pre_valid_bytecap_x_(size) 651#define _Pre_valid_cap_(size) 652#define _Pre_valid_cap_c_(size) 653#define _Pre_valid_cap_x_(size) 654#define _Pre_writable_byte_size_(size) 655#define _Pre_writable_size_(size) 656#define _Pre_writeonly_ 657#define _Pre_z_ 658#define _Pre_z_bytecap_(size) 659#define _Pre_z_bytecap_c_(size) 660#define _Pre_z_bytecap_x_(size) 661#define _Pre_z_cap_(size) 662#define _Pre_z_cap_c_(size) 663#define _Pre_z_cap_x_(size) 664#define _Prepost_bytecount_(size) 665#define _Prepost_bytecount_c_(size) 666#define _Prepost_bytecount_x_(size) 667#define _Prepost_count_(size) 668#define _Prepost_count_c_(size) 669#define _Prepost_count_x_(size) 670#define _Prepost_opt_bytecount_(size) 671#define _Prepost_opt_bytecount_c_(size) 672#define _Prepost_opt_bytecount_x_(size) 673#define _Prepost_opt_count_(size) 674#define _Prepost_opt_count_c_(size) 675#define _Prepost_opt_count_x_(size) 676#define _Prepost_opt_valid_ 677#define _Prepost_opt_z_ 678#define _Prepost_valid_ 679#define _Prepost_z_ 680#define _Printf_format_string_ 681#define _Raises_SEH_exception_ 682#define _Maybe_raises_SEH_exception_ 683#define _Readable_bytes_(size) 684#define _Readable_elements_(size) 685#define _Reserved_ 686#define _Result_nullonfailure_ 687#define _Result_zeroonfailure_ 688#define __inner_callback 689#define _Ret_ 690#define _Ret_bound_ 691#define _Ret_bytecap_(size) 692#define _Ret_bytecap_c_(size) 693#define _Ret_bytecap_x_(size) 694#define _Ret_bytecount_(size) 695#define _Ret_bytecount_c_(size) 696#define _Ret_bytecount_x_(size) 697#define _Ret_cap_(size) 698#define _Ret_cap_c_(size) 699#define _Ret_cap_x_(size) 700#define _Ret_count_(size) 701#define _Ret_count_c_(size) 702#define _Ret_count_x_(size) 703#define _Ret_maybenull_ 704#define _Ret_maybenull_z_ 705#define _Ret_notnull_ 706#define _Ret_null_ 707#define _Ret_opt_ 708#define _Ret_opt_bytecap_(size) 709#define _Ret_opt_bytecap_c_(size) 710#define _Ret_opt_bytecap_x_(size) 711#define _Ret_opt_bytecount_(size) 712#define _Ret_opt_bytecount_c_(size) 713#define _Ret_opt_bytecount_x_(size) 714#define _Ret_opt_cap_(size) 715#define _Ret_opt_cap_c_(size) 716#define _Ret_opt_cap_x_(size) 717#define _Ret_opt_count_(size) 718#define _Ret_opt_count_c_(size) 719#define _Ret_opt_count_x_(size) 720#define _Ret_opt_valid_ 721#define _Ret_opt_z_ 722#define _Ret_opt_z_bytecap_(size) 723#define _Ret_opt_z_bytecount_(size) 724#define _Ret_opt_z_cap_(size) 725#define _Ret_opt_z_count_(size) 726#define _Ret_range_(lb, ub) 727#define _Ret_valid_ 728#define _Ret_writes_(size) 729#define _Ret_writes_bytes_(size) 730#define _Ret_writes_bytes_maybenull_(size) 731#define _Ret_writes_bytes_to_(size, count) 732#define _Ret_writes_bytes_to_maybenull_(size, count) 733#define _Ret_writes_maybenull_(size) 734#define _Ret_writes_maybenull_z_(size) 735#define _Ret_writes_to_(size, count) 736#define _Ret_writes_to_maybenull_(size, count) 737#define _Ret_writes_z_(size) 738#define _Ret_z_ 739#define _Ret_z_bytecap_(size) 740#define _Ret_z_bytecount_(size) 741#define _Ret_z_cap_(size) 742#define _Ret_z_count_(size) 743#define _Return_type_success_(expr) 744#define _Scanf_format_string_ 745#define _Scanf_s_format_string_ 746#define _Struct_size_bytes_(size) 747#define _Success_(expr) 748#define _Unchanged_(e) 749#define _Use_decl_annotations_ 750#define _Valid_ 751#define _When_(expr, annos) 752#define _Writable_bytes_(size) 753#define _Writable_elements_(size) 754 755#define __bcount(size) 756#define __bcount_opt(size) 757#define __deref_bcount(size) 758#define __deref_bcount_opt(size) 759#define __deref_ecount(size) 760#define __deref_ecount_opt(size) 761#define __deref_in 762#define __deref_in_bcount(size) 763#define __deref_in_bcount_opt(size) 764#define __deref_in_ecount(size) 765#define __deref_in_ecount_opt(size) 766#define __deref_in_opt 767#define __deref_inout 768#define __deref_inout_bcount(size) 769#define __deref_inout_bcount_full(size) 770#define __deref_inout_bcount_full_opt(size) 771#define __deref_inout_bcount_opt(size) 772#define __deref_inout_bcount_part(size, length) 773#define __deref_inout_bcount_part_opt(size, length) 774#define __deref_inout_ecount(size) 775#define __deref_inout_ecount_full(size) 776#define __deref_inout_ecount_full_opt(size) 777#define __deref_inout_ecount_opt(size) 778#define __deref_inout_ecount_part(size, length) 779#define __deref_inout_ecount_part_opt(size, length) 780#define __deref_inout_opt 781#define __deref_opt_bcount(size) 782#define __deref_opt_bcount_opt(size) 783#define __deref_opt_ecount(size) 784#define __deref_opt_ecount_opt(size) 785#define __deref_opt_in 786#define __deref_opt_in_bcount(size) 787#define __deref_opt_in_bcount_opt(size) 788#define __deref_opt_in_ecount(size) 789#define __deref_opt_in_ecount_opt(size) 790#define __deref_opt_in_opt 791#define __deref_opt_inout 792#define __deref_opt_inout_bcount(size) 793#define __deref_opt_inout_bcount_full(size) 794#define __deref_opt_inout_bcount_full_opt(size) 795#define __deref_opt_inout_bcount_opt(size) 796#define __deref_opt_inout_bcount_part(size, length) 797#define __deref_opt_inout_bcount_part_opt(size, length) 798#define __deref_opt_inout_ecount(size) 799#define __deref_opt_inout_ecount_full(size) 800#define __deref_opt_inout_ecount_full_opt(size) 801#define __deref_opt_inout_ecount_opt(size) 802#define __deref_opt_inout_ecount_part(size, length) 803#define __deref_opt_inout_ecount_part_opt(size, length) 804#define __deref_opt_inout_opt 805#define __deref_opt_out 806#define __deref_opt_out_bcount(size) 807#define __deref_opt_out_bcount_full(size) 808#define __deref_opt_out_bcount_full_opt(size) 809#define __deref_opt_out_bcount_opt(size) 810#define __deref_opt_out_bcount_part(size, length) 811#define __deref_opt_out_bcount_part_opt(size, length) 812#define __deref_opt_out_ecount(size) 813#define __deref_opt_out_ecount_full(size) 814#define __deref_opt_out_ecount_full_opt(size) 815#define __deref_opt_out_ecount_opt(size) 816#define __deref_opt_out_ecount_part(size, length) 817#define __deref_opt_out_ecount_part_opt(size, length) 818#define __deref_opt_out_opt 819#define __deref_out 820#define __deref_out_bcount(size) 821#define __deref_out_bcount_full(size) 822#define __deref_out_bcount_full_opt(size) 823#define __deref_out_bcount_opt(size) 824#define __deref_out_bcount_part(size, length) 825#define __deref_out_bcount_part_opt(size, length) 826#define __deref_out_ecount(size) 827#define __deref_out_ecount_full(size) 828#define __deref_out_ecount_full_opt(size) 829#define __deref_out_ecount_opt(size) 830#define __deref_out_ecount_part(size, length) 831#define __deref_out_ecount_part_opt(size, length) 832#define __deref_out_opt 833#define __ecount(size) 834#define __ecount_opt(size) 835//#define __in /* Conflicts with libstdc++ header macros */ 836#define __in_bcount(size) 837#define __in_bcount_opt(size) 838#define __in_ecount(size) 839#define __in_ecount_opt(size) 840#define __in_opt 841#define __inout 842#define __inout_bcount(size) 843#define __inout_bcount_full(size) 844#define __inout_bcount_full_opt(size) 845#define __inout_bcount_opt(size) 846#define __inout_bcount_part(size, length) 847#define __inout_bcount_part_opt(size, length) 848#define __inout_ecount(size) 849#define __inout_ecount_full(size) 850#define __inout_ecount_full_opt(size) 851#define __inout_ecount_opt(size) 852#define __inout_ecount_part(size, length) 853#define __inout_ecount_part_opt(size, length) 854#define __inout_opt 855//#define __out /* Conflicts with libstdc++ header macros */ 856#define __out_bcount(size) 857#define __out_bcount_full(size) 858#define __out_bcount_full_opt(size) 859#define __out_bcount_opt(size) 860#define __out_bcount_part(size, length) 861#define __out_bcount_part_opt(size, length) 862#define __out_ecount(size) 863#define __out_ecount_full(size) 864#define __out_ecount_full_opt(size) 865#define __out_ecount_opt(size) 866#define __out_ecount_part(size, length) 867#define __out_ecount_part_opt(size, length) 868#define __out_opt 869 870#define __blocksOn(resource) 871#define __callback 872#define __checkReturn 873#define __format_string 874#define __in_awcount(expr, size) 875#define __nullnullterminated 876#define __nullterminated 877#define __out_awcount(expr, size) 878#define __override 879//#define __reserved /* Conflicts with header included by CarbonCore.h on OS X */ 880#define __success(expr) 881#define __typefix(ctype) 882 883#ifndef _countof 884#ifndef __cplusplus 885#define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0])) 886#else 887extern "C++" 888{ 889 template <typename _CountofType, size_t _SizeOfArray> 890 char (*__countof_helper(_CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray]; 891#define _countof(_Array) sizeof(*__countof_helper(_Array)) 892} 893#endif 894#endif 895 896/** 897 * RTL Definitions 898 */ 899 900#define MINCHAR 0x80 901#define MAXCHAR 0x7F 902 903#ifndef MINSHORT 904#define MINSHORT 0x8000 905#endif 906 907#ifndef MAXSHORT 908#define MAXSHORT 0x7FFF 909#endif 910 911#define MINLONG 0x80000000 912#define MAXLONG 0x7FFFFFFF 913#define MAXBYTE 0xFF 914#define MAXWORD 0xFFFF 915#define MAXDWORD 0xFFFFFFFF 916 917#define FIELD_OFFSET(type, field) ((LONG)(LONG_PTR) & (((type*)0)->field)) 918 919#define RTL_FIELD_SIZE(type, field) (sizeof(((type*)0)->field)) 920 921#define RTL_SIZEOF_THROUGH_FIELD(type, field) \ 922 (FIELD_OFFSET(type, field) + RTL_FIELD_SIZE(type, field)) 923 924#define RTL_CONTAINS_FIELD(Struct, Size, Field) \ 925 ((((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct)) + (Size))) 926 927#define RTL_NUMBER_OF_V1(A) (sizeof(A) / sizeof((A)[0])) 928#define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A) 929 930#define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V1(A) 931 932#define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A) 933#define _ARRAYSIZE(A) RTL_NUMBER_OF_V1(A) 934 935#define RTL_FIELD_TYPE(type, field) (((type*)0)->field) 936 937#define RTL_NUMBER_OF_FIELD(type, field) (RTL_NUMBER_OF(RTL_FIELD_TYPE(type, field))) 938 939#define RTL_PADDING_BETWEEN_FIELDS(T, F1, F2) \ 940 ((FIELD_OFFSET(T, F2) > FIELD_OFFSET(T, F1)) \ 941 ? (FIELD_OFFSET(T, F2) - FIELD_OFFSET(T, F1) - RTL_FIELD_SIZE(T, F1)) \ 942 : (FIELD_OFFSET(T, F1) - FIELD_OFFSET(T, F2) - RTL_FIELD_SIZE(T, F2))) 943 944#if defined(__cplusplus) 945#define RTL_CONST_CAST(type) const_cast<type> 946#else 947#define RTL_CONST_CAST(type) (type) 948#endif 949 950#define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8) 951 952#define RTL_BITS_OF_FIELD(type, field) (RTL_BITS_OF(RTL_FIELD_TYPE(type, field))) 953 954#define CONTAINING_RECORD(address, type, field) \ 955 ((type*)((PCHAR)(address) - (ULONG_PTR)(&((type*)0)->field))) 956 957#endif 958 959#if defined(_WIN32) || defined(__CYGWIN__) 960#ifdef __GNUC__ 961#define DECLSPEC_EXPORT __attribute__((dllexport)) 962#define DECLSPEC_IMPORT __attribute__((dllimport)) 963#else 964#define DECLSPEC_EXPORT __declspec(dllexport) 965#define DECLSPEC_IMPORT __declspec(dllimport) 966#endif 967#else 968#if defined(__GNUC__) && __GNUC__ >= 4 969#define DECLSPEC_EXPORT __attribute__((visibility("default"))) 970#define DECLSPEC_IMPORT 971#else 972#define DECLSPEC_EXPORT 973#define DECLSPEC_IMPORT 974#endif 975#endif 976 977#endif /* WINPR_SPEC_H */