|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
|  | */ | 
|  |  | 
|  | #ifndef SAL_HXX | 
|  | #define SAL_HXX | 
|  |  | 
|  | #ifdef __GNUC__ | 
|  | #  define __inner_checkReturn __attribute__((warn_unused_result)) | 
|  | #elif defined(_MSC_VER) | 
|  | #  define __inner_checkReturn __declspec("SAL_checkReturn") | 
|  | #else | 
|  | #  define __inner_checkReturn | 
|  | #endif | 
|  |  | 
|  | #define __checkReturn __inner_checkReturn | 
|  |  | 
|  | /* Input parameters */ | 
|  | #define _In_ | 
|  | #define _In_opt_ | 
|  | #define _In_z_ | 
|  | #define _In_opt_z_ | 
|  | #define _In_reads_(s) | 
|  | #define _In_reads_opt_(s) | 
|  | #define _In_reads_bytes_(s) | 
|  | #define _In_reads_bytes_opt_(s) | 
|  | #define _In_reads_z_(s) | 
|  | #define _In_reads_opt_z_(s) | 
|  | #define _In_reads_or_z_(s) | 
|  | #define _In_reads_or_z_opt_(s) | 
|  | #define _In_reads_to_ptr_(p) | 
|  | #define _In_reads_to_ptr_opt_(p) | 
|  | #define _In_reads_to_ptr_z_(p) | 
|  | #define _In_reads_to_ptr_opt_z_(p) | 
|  |  | 
|  | /* Output parameters */ | 
|  | #define _Out_ | 
|  | #define _Out_opt_ | 
|  | #define _Out_writes_(s) | 
|  | #define _Out_writes_opt_(s) | 
|  | #define _Out_writes_bytes_(s) | 
|  | #define _Out_writes_bytes_opt_(s) | 
|  | #define _Out_writes_z_(s) | 
|  | #define _Out_writes_opt_z_(s) | 
|  | #define _Out_writes_to_(s, c) | 
|  | #define _Out_writes_to_opt_(s, c) | 
|  | #define _Out_writes_all_(s) | 
|  | #define _Out_writes_all_opt_(s) | 
|  | #define _Out_writes_bytes_to_(s, c) | 
|  | #define _Out_writes_bytes_to_opt_(s, c) | 
|  | #define _Out_writes_bytes_all_(s) | 
|  | #define _Out_writes_bytes_all_opt_(s) | 
|  | #define _Out_writes_to_ptr_(p) | 
|  | #define _Out_writes_to_ptr_opt_(p) | 
|  | #define _Out_writes_to_ptr_z_(p) | 
|  | #define _Out_writes_to_ptr_opt_z_(p) | 
|  |  | 
|  | /* Inout parameters */ | 
|  | #define _Inout_ | 
|  | #define _Inout_opt_ | 
|  | #define _Inout_z_ | 
|  | #define _Inout_opt_z_ | 
|  | #define _Inout_updates_(s) | 
|  | #define _Inout_updates_opt_(s) | 
|  | #define _Inout_updates_z_(s) | 
|  | #define _Inout_updates_opt_z_(s) | 
|  | #define _Inout_updates_to_(s, c) | 
|  | #define _Inout_updates_to_opt_(s, c) | 
|  | #define _Inout_updates_all_(s) | 
|  | #define _Inout_updates_all_opt_(s) | 
|  | #define _Inout_updates_bytes_(s) | 
|  | #define _Inout_updates_bytes_opt_(s) | 
|  | #define _Inout_updates_bytes_to_(s, c) | 
|  | #define _Inout_updates_bytes_to_opt_(s, c) | 
|  | #define _Inout_updates_bytes_all_(s) | 
|  | #define _Inout_updates_bytes_all_opt_(s) | 
|  |  | 
|  | /* Pointer to pointer parameters */ | 
|  | #define _Outptr_ | 
|  | #define _Outptr_result_maybenull_ | 
|  | #define _Outptr_opt_ | 
|  | #define _Outptr_opt_result_maybenull_ | 
|  | #define _Outptr_result_z_ | 
|  | #define _Outptr_opt_result_z_ | 
|  | #define _Outptr_result_maybenull_z_ | 
|  | #define _Outptr_opt_result_maybenull_z_ | 
|  | #define _Outptr_result_nullonfailure_ | 
|  | #define _Outptr_opt_result_nullonfailure_ | 
|  | #define _COM_Outptr_ | 
|  | #define _COM_Outptr_result_maybenull_ | 
|  | #define _COM_Outptr_opt_ | 
|  | #define _COM_Outptr_opt_result_maybenull_ | 
|  | #define _Outptr_result_buffer_(s) | 
|  | #define _Outptr_opt_result_buffer_(s) | 
|  | #define _Outptr_result_buffer_to_(s, c) | 
|  | #define _Outptr_opt_result_buffer_to_(s, c) | 
|  | #define _Outptr_result_buffer_all_(s) | 
|  | #define _Outptr_opt_result_buffer_all_(s) | 
|  | #define _Outptr_result_buffer_maybenull_(s) | 
|  | #define _Outptr_opt_result_buffer_maybenull_(s) | 
|  | #define _Outptr_result_buffer_to_maybenull_(s, c) | 
|  | #define _Outptr_opt_result_buffer_to_maybenull_(s, c) | 
|  | #define _Outptr_result_buffer_all_maybenull_(s) | 
|  | #define _Outptr_opt_result_buffer_all_maybenull_(s) | 
|  | #define _Outptr_result_bytebuffer_(s) | 
|  | #define _Outptr_opt_result_bytebuffer_(s) | 
|  | #define _Outptr_result_bytebuffer_to_(s, c) | 
|  | #define _Outptr_opt_result_bytebuffer_to_(s, c) | 
|  | #define _Outptr_result_bytebuffer_all_(s) | 
|  | #define _Outptr_opt_result_bytebuffer_all_(s) | 
|  | #define _Outptr_result_bytebuffer_maybenull_(s) | 
|  | #define _Outptr_opt_result_bytebuffer_maybenull_(s) | 
|  | #define _Outptr_result_bytebuffer_to_maybenull_(s, c) | 
|  | #define _Outptr_opt_result_bytebuffer_to_maybenull_(s, c) | 
|  | #define _Outptr_result_bytebuffer_all_maybenull_(s) | 
|  | #define _Outptr_opt_result_bytebuffer_all_maybenull_(s) | 
|  |  | 
|  | /* Output reference parameters */ | 
|  | #define _Outref_ | 
|  | #define _Outref_result_maybenull_ | 
|  | #define _Outref_result_buffer_(s) | 
|  | #define _Outref_result_bytebuffer_(s) | 
|  | #define _Outref_result_buffer_to_(s, c) | 
|  | #define _Outref_result_bytebuffer_to_(s, c) | 
|  | #define _Outref_result_buffer_all_(s) | 
|  | #define _Outref_result_bytebuffer_all_(s) | 
|  | #define _Outref_result_buffer_maybenull_(s) | 
|  | #define _Outref_result_bytebuffer_maybenull_(s) | 
|  | #define _Outref_result_buffer_to_maybenull_(s, c) | 
|  | #define _Outref_result_bytebuffer_to_maybenull_(s, c) | 
|  | #define _Outref_result_buffer_all_maybenull_(s) | 
|  | #define _Outref_result_bytebuffer_all_maybenull_(s) | 
|  | #define _Outref_result_nullonfailure_ | 
|  | #define _Result_nullonfailure_ | 
|  | #define _Result_zeroonfailure_ | 
|  |  | 
|  | /* Return values */ | 
|  | #define _Ret_z_ | 
|  | #define _Ret_maybenull_z_ | 
|  | #define _Ret_notnull_ | 
|  | #define _Ret_maybenull_ | 
|  | #define _Ret_null_ | 
|  | #define _Ret_valid_ | 
|  | #define _Ret_writes_(s) | 
|  | #define _Ret_writes_z_(s) | 
|  | #define _Ret_writes_bytes_(s) | 
|  | #define _Ret_writes_maybenull_(s) | 
|  | #define _Ret_writes_maybenull_z_(s) | 
|  | #define _Ret_writes_bytes_maybenull_(s) | 
|  | #define _Ret_writes_to_(s, c) | 
|  | #define _Ret_writes_bytes_to_(s, c) | 
|  | #define _Ret_writes_to_maybenull_(s, c) | 
|  | #define _Ret_writes_bytes_to_maybenull_(s, c) | 
|  | #define _Points_to_data_ | 
|  | #define _Literal_ | 
|  | #define _Notliteral_ | 
|  | #define _Deref_ret_range_(l,u) | 
|  | #define _Unchanged_(e) | 
|  | #define _Pre_satisfies_(c) | 
|  | #define _Post_satisfies_(c) | 
|  |  | 
|  | /* Optional pointer parameters */ | 
|  | #define __in_opt | 
|  | #define __out_opt | 
|  | #define __inout_opt | 
|  |  | 
|  | /* Other common annotations */ | 
|  | #define _In_range_(low, hi) | 
|  | #define _Out_range_(low, hi) | 
|  | #define _Ret_range_(low, hi) | 
|  | #define _Deref_in_range_(low, hi) | 
|  | #define _Deref_out_range_(low, hi) | 
|  | #define _Deref_inout_range_(low, hi) | 
|  | #define _Pre_equal_to_(expr) | 
|  | #define _Post_equal_to_(expr) | 
|  | #define _Struct_size_bytes_(size) | 
|  |  | 
|  | /* Function annotations */ | 
|  | #define _Called_from_function_class_(name) | 
|  | #define _Check_return_ __checkReturn | 
|  | #define _Function_class_(name) | 
|  | #define _Raises_SEH_exception_ | 
|  | #define _Maybe_raises_SEH_exception_ | 
|  | #define _Must_inspect_result_ | 
|  | #define _Use_decl_annotations_ | 
|  |  | 
|  | /* Success/failure annotations */ | 
|  | #define _Always_(anno_list) | 
|  | #define _On_failure_(anno_list) | 
|  | #define _Return_type_success_(expr) | 
|  | #define _Success_(expr) | 
|  |  | 
|  | #define _Reserved_ | 
|  | #define _Const_ | 
|  |  | 
|  | /* Buffer properties */ | 
|  | #define _Readable_bytes_(s) | 
|  | #define _Readable_elements_(s) | 
|  | #define _Writable_bytes_(s) | 
|  | #define _Writable_elements_(s) | 
|  | #define _Null_terminated_ | 
|  | #define _NullNull_terminated_ | 
|  | #define _Pre_readable_size_(s) | 
|  | #define _Pre_writable_size_(s) | 
|  | #define _Pre_readable_byte_size_(s) | 
|  | #define _Pre_writable_byte_size_(s) | 
|  | #define _Post_readable_size_(s) | 
|  | #define _Post_writable_size_(s) | 
|  | #define _Post_readable_byte_size_(s) | 
|  | #define _Post_writable_byte_size_(s) | 
|  |  | 
|  | /* Field properties */ | 
|  | #define _Field_size_(s) | 
|  | #define _Field_size_full_(s) | 
|  | #define _Field_size_full_opt_(s) | 
|  | #define _Field_size_opt_(s) | 
|  | #define _Field_size_part_(s, c) | 
|  | #define _Field_size_part_opt_(s, c) | 
|  | #define _Field_size_bytes_(size) | 
|  | #define _Field_size_bytes_full_(size) | 
|  | #define _Field_size_bytes_full_opt_(s) | 
|  | #define _Field_size_bytes_opt_(s) | 
|  | #define _Field_size_bytes_part_(s, c) | 
|  | #define _Field_size_bytes_part_opt_(s, c) | 
|  | #define _Field_z_ | 
|  | #define _Field_range_(min, max) | 
|  |  | 
|  | /* Structural annotations */ | 
|  | #define _At_(e, a) | 
|  | #define _At_buffer_(e, i, c, a) | 
|  | #define _Group_(a) | 
|  | #define _When_(e, a) | 
|  |  | 
|  | /* printf/scanf annotations */ | 
|  | #define _Printf_format_string_ | 
|  | #define _Scanf_format_string_ | 
|  | #define _Scanf_s_format_string_ | 
|  | #define _Format_string_impl_(kind,where) | 
|  | #define _Printf_format_string_params_(x) | 
|  | #define _Scanf_format_string_params_(x) | 
|  | #define _Scanf_s_format_string_params_(x) | 
|  |  | 
|  | /* Analysis */ | 
|  | #define _Analysis_assume_(expr) | 
|  | #define _Analysis_assume_nullterminated_(expr) | 
|  |  | 
|  | /* FIXME: __in macro conflicts with argument names in libstdc++. For this reason, | 
|  | * we disable it for C++. This should be fixed in libstdc++ so we can uncomment | 
|  | * it in fixed version here. */ | 
|  | #if !defined(__cplusplus) || !defined(__GNUC__) | 
|  | #define __in | 
|  | #define __out | 
|  | #endif | 
|  |  | 
|  | #define __bcount(size) | 
|  | #define __ecount(size) | 
|  |  | 
|  | #define __in_bcount(size) | 
|  | #define __in_bcount_nz(size) | 
|  | #define __in_bcount_z(size) | 
|  | #define __in_ecount(size) | 
|  | #define __in_ecount_nz(size) | 
|  | #define __in_ecount_z(size) | 
|  |  | 
|  | #define __out_bcount(size) | 
|  | #define __out_bcount_nz(size) | 
|  | #define __out_bcount_z(size) | 
|  | #define __out_bcount_full(size) | 
|  | #define __out_bcount_full_z(size) | 
|  | #define __out_bcount_part(size, length) | 
|  | #define __out_bcount_part_z(size, length) | 
|  | #define __out_ecount(size) | 
|  | #define __out_ecount_nz(size) | 
|  | #define __out_ecount_z(size) | 
|  | #define __out_ecount_full(size) | 
|  | #define __out_ecount_full_z(size) | 
|  | #define __out_ecount_part(size, length) | 
|  | #define __out_ecount_part_z(size, length) | 
|  |  | 
|  | #define __inout | 
|  | #define __inout_bcount(size) | 
|  | #define __inout_bcount_nz(size) | 
|  | #define __inout_bcount_z(size) | 
|  | #define __inout_bcount_full(size) | 
|  | #define __inout_bcount_part(size, length) | 
|  | #define __inout_ecount(size) | 
|  | #define __inout_ecount_nz(size) | 
|  | #define __inout_ecount_z(size) | 
|  | #define __inout_ecount_full(size) | 
|  | #define __inout_ecount_part(size, length) | 
|  |  | 
|  | #define __deref_out_ecount(size) | 
|  |  | 
|  | #endif | 
|  |  |