diff --git a/include/compat/mingw/sal.h b/include/compat/mingw/sal.h index 5fe9e5d..6487dfc 100644 --- a/include/compat/mingw/sal.h +++ b/include/compat/mingw/sal.h @@ -1,891 +1 @@ -#pragma once - -#if __GNUC__ >= 3 -# pragma GCC system_header -#endif - -#define __SAL_H_FULL_VER 1 - -//#define __null // << Conflicts with GCC internal type __null -#define __notnull -#define __maybenull -#define __readonly -#define __notreadonly -#define __maybereadonly -#define __valid -#define __notvalid -#define __maybevalid -#define __readableTo(extent) -#define __elem_readableTo(size) -#define __byte_readableTo(size) -#define __writableTo(size) -#define __elem_writableTo(size) -#define __byte_writableTo(size) -#define __deref -#define __pre -#define __post -#define __precond(expr) -#define __postcond(expr) -#define __exceptthat -#define __execeptthat -#define __inner_success(expr) -#define __inner_checkReturn __attribute__((warn_unused_result)) -#define __inner_typefix(ctype) -#define __inner_override -#define __inner_callback -#define __inner_blocksOn(resource) -#define __inner_fallthrough_dec -#define __inner_fallthrough -#define __refparam -#define __inner_control_entrypoint(category) -#define __inner_data_entrypoint(category) - -#define __ecount(size) -#define __bcount(size) -// #define __in // Conflicts with STL. -#define __in_ecount(size) -#define __in_bcount(size) -#define __in_z -#define __in_ecount_z(size) -#define __in_bcount_z(size) -#define __in_nz -#define __in_ecount_nz(size) -#define __in_bcount_nz(size) -#define __in_xcount_opt(size) -// #define __out // Conflicts with STL. -#define __out_ecount(size) -#define __out_bcount(size) -#define __out_ecount_part(size,length) -#define __out_bcount_part(size,length) -#define __out_ecount_full(size) -#define __out_bcount_full(size) -#define __out_z -#define __out_z_opt -#define __out_ecount_z(size) -#define __out_bcount_z(size) -#define __out_ecount_part_z(size,length) -#define __out_bcount_part_z(size,length) -#define __out_ecount_full_z(size) -#define __out_bcount_full_z(size) -#define __out_nz -#define __out_nz_opt -#define __out_ecount_nz(size) -#define __out_bcount_nz(size) -#define __inout -#define __inout_ecount(size) -#define __inout_bcount(size) -#define __inout_ecount_part(size,length) -#define __inout_bcount_part(size,length) -#define __inout_ecount_full(size) -#define __inout_bcount_full(size) -#define __inout_z -#define __inout_ecount_z(size) -#define __inout_bcount_z(size) -#define __inout_nz -#define __inout_ecount_nz(size) -#define __inout_bcount_nz(size) -#define __ecount_opt(size) -#define __bcount_opt(size) -#define __in_opt -#define __in_ecount_opt(size) -#define __in_bcount_opt(size) -#define __in_z_opt -#define __in_ecount_z_opt(size) -#define __in_bcount_z_opt(size) -#define __in_nz_opt -#define __in_ecount_nz_opt(size) -#define __in_bcount_nz_opt(size) -#define __out_opt -#define __out_ecount_opt(size) -#define __out_bcount_opt(size) -#define __out_ecount_part_opt(size,length) -#define __out_bcount_part_opt(size,length) -#define __out_ecount_full_opt(size) -#define __out_bcount_full_opt(size) -#define __out_ecount_z_opt(size) -#define __out_bcount_z_opt(size) -#define __out_ecount_part_z_opt(size,length) -#define __out_bcount_part_z_opt(size,length) -#define __out_ecount_full_z_opt(size) -#define __out_bcount_full_z_opt(size) -#define __out_ecount_nz_opt(size) -#define __out_bcount_nz_opt(size) -#define __inout_opt -#define __inout_ecount_opt(size) -#define __inout_bcount_opt(size) -#define __inout_ecount_part_opt(size,length) -#define __inout_bcount_part_opt(size,length) -#define __inout_ecount_full_opt(size) -#define __inout_bcount_full_opt(size) -#define __inout_z_opt -#define __inout_ecount_z_opt(size) -#define __inout_ecount_z_opt(size) -#define __inout_bcount_z_opt(size) -#define __inout_nz_opt -#define __inout_ecount_nz_opt(size) -#define __inout_bcount_nz_opt(size) -#define __deref_ecount(size) -#define __deref_bcount(size) -#define __deref_out -#define __deref_out_ecount(size) -#define __deref_out_bcount(size) -#define __deref_out_ecount_part(size,length) -#define __deref_out_bcount_part(size,length) -#define __deref_out_ecount_full(size) -#define __deref_out_bcount_full(size) -#define __deref_out_z -#define __deref_out_ecount_z(size) -#define __deref_out_bcount_z(size) -#define __deref_out_nz -#define __deref_out_ecount_nz(size) -#define __deref_out_bcount_nz(size) -#define __deref_inout -#define __deref_inout_z -#define __deref_inout_ecount(size) -#define __deref_inout_bcount(size) -#define __deref_inout_ecount_part(size,length) -#define __deref_inout_bcount_part(size,length) -#define __deref_inout_ecount_full(size) -#define __deref_inout_bcount_full(size) -#define __deref_inout_z -#define __deref_inout_ecount_z(size) -#define __deref_inout_bcount_z(size) -#define __deref_inout_nz -#define __deref_inout_ecount_nz(size) -#define __deref_inout_bcount_nz(size) -#define __deref_ecount_opt(size) -#define __deref_bcount_opt(size) -#define __deref_out_opt -#define __deref_out_ecount_opt(size) -#define __deref_out_bcount_opt(size) -#define __deref_out_ecount_part_opt(size,length) -#define __deref_out_bcount_part_opt(size,length) -#define __deref_out_ecount_full_opt(size) -#define __deref_out_bcount_full_opt(size) -#define __deref_out_z_opt -#define __deref_out_ecount_z_opt(size) -#define __deref_out_bcount_z_opt(size) -#define __deref_out_nz_opt -#define __deref_out_ecount_nz_opt(size) -#define __deref_out_bcount_nz_opt(size) -#define __deref_inout_opt -#define __deref_inout_ecount_opt(size) -#define __deref_inout_bcount_opt(size) -#define __deref_inout_ecount_part_opt(size,length) -#define __deref_inout_bcount_part_opt(size,length) -#define __deref_inout_ecount_full_opt(size) -#define __deref_inout_bcount_full_opt(size) -#define __deref_inout_z_opt -#define __deref_inout_ecount_z_opt(size) -#define __deref_inout_bcount_z_opt(size) -#define __deref_inout_nz_opt -#define __deref_inout_ecount_nz_opt(size) -#define __deref_inout_bcount_nz_opt(size) -#define __deref_opt_ecount(size) -#define __deref_opt_bcount(size) -#define __deref_opt_out -#define __deref_opt_out_z -#define __deref_opt_out_ecount(size) -#define __deref_opt_out_bcount(size) -#define __deref_opt_out_ecount_part(size,length) -#define __deref_opt_out_bcount_part(size,length) -#define __deref_opt_out_ecount_full(size) -#define __deref_opt_out_bcount_full(size) -#define __deref_opt_inout -#define __deref_opt_inout_ecount(size) -#define __deref_opt_inout_bcount(size) -#define __deref_opt_inout_ecount_part(size,length) -#define __deref_opt_inout_bcount_part(size,length) -#define __deref_opt_inout_ecount_full(size) -#define __deref_opt_inout_bcount_full(size) -#define __deref_opt_inout_z -#define __deref_opt_inout_ecount_z(size) -#define __deref_opt_inout_bcount_z(size) -#define __deref_opt_inout_nz -#define __deref_opt_inout_ecount_nz(size) -#define __deref_opt_inout_bcount_nz(size) -#define __deref_opt_ecount_opt(size) -#define __deref_opt_bcount_opt(size) -#define __deref_opt_out_opt -#define __deref_opt_out_ecount_opt(size) -#define __deref_opt_out_bcount_opt(size) -#define __deref_opt_out_ecount_part_opt(size,length) -#define __deref_opt_out_bcount_part_opt(size,length) -#define __deref_opt_out_ecount_full_opt(size) -#define __deref_opt_out_bcount_full_opt(size) -#define __deref_opt_out_z_opt -#define __deref_opt_out_ecount_z_opt(size) -#define __deref_opt_out_bcount_z_opt(size) -#define __deref_opt_out_nz_opt -#define __deref_opt_out_ecount_nz_opt(size) -#define __deref_opt_out_bcount_nz_opt(size) -#define __deref_opt_inout_opt -#define __deref_opt_inout_ecount_opt(size) -#define __deref_opt_inout_bcount_opt(size) -#define __deref_opt_inout_ecount_part_opt(size,length) -#define __deref_opt_inout_bcount_part_opt(size,length) -#define __deref_opt_inout_ecount_full_opt(size) -#define __deref_opt_inout_bcount_full_opt(size) -#define __deref_opt_inout_z_opt -#define __deref_opt_inout_ecount_z_opt(size) -#define __deref_opt_inout_bcount_z_opt(size) -#define __deref_opt_inout_nz_opt -#define __deref_opt_inout_ecount_nz_opt(size) -#define __deref_opt_inout_bcount_nz_opt(size) - -#define __success(expr) -#define __nullterminated -#define __nullnullterminated -#define __reserved -#define __checkReturn __inner_checkReturn -#define __typefix(ctype) -#define __override -#define __callback -#define __format_string -#define __blocksOn(resource) -#define __control_entrypoint(category) -#define __data_entrypoint(category) - -#define _Always_(annos) -#define _Analysis_noreturn_ -#define _Analysis_assume_(expr) -#define _At_(target, annos) -#define _At_buffer_(target, iter, bound, annos) -#define _COM_Outptr_ -#define _COM_Outptr_opt_ -#define _COM_Outptr_opt_result_maybenull_ -#define _COM_Outptr_result_maybenull_ -#define _Check_return_ -#define _Const_ -#define _Deref2_pre_readonly_ -#define _Deref_in_bound_ -#define _Deref_in_range_(lb,ub) -#define _Deref_inout_bound_ -#define _Deref_inout_z_ -#define _Deref_inout_z_bytecap_c_(size) -#define _Deref_inout_z_cap_c_(size) -#define _Deref_opt_out_ -#define _Deref_opt_out_opt_ -#define _Deref_opt_out_opt_z_ -#define _Deref_opt_out_z_ -#define _Deref_out_ -#define _Deref_out_bound_ -#define _Deref_out_opt_ -#define _Deref_out_opt_z_ -#define _Deref_out_range_(lb,ub) -#define _Deref_out_z_ -#define _Deref_out_z_bytecap_c_(size) -#define _Deref_out_z_cap_c_(size) -#define _Deref_post_bytecap_(size) -#define _Deref_post_bytecap_c_(size) -#define _Deref_post_bytecap_x_(size) -#define _Deref_post_bytecount_(size) -#define _Deref_post_bytecount_c_(size) -#define _Deref_post_bytecount_x_(size) -#define _Deref_post_cap_(size) -#define _Deref_post_cap_c_(size) -#define _Deref_post_cap_x_(size) -#define _Deref_post_count_(size) -#define _Deref_post_count_c_(size) -#define _Deref_post_count_x_(size) -#define _Deref_post_maybenull_ -#define _Deref_post_notnull_ -#define _Deref_post_null_ -#define _Deref_post_opt_bytecap_(size) -#define _Deref_post_opt_bytecap_c_(size) -#define _Deref_post_opt_bytecap_x_(size) -#define _Deref_post_opt_bytecount_(size) -#define _Deref_post_opt_bytecount_c_(size) -#define _Deref_post_opt_bytecount_x_(size) -#define _Deref_post_opt_cap_(size) -#define _Deref_post_opt_cap_c_(size) -#define _Deref_post_opt_cap_x_(size) -#define _Deref_post_opt_count_(size) -#define _Deref_post_opt_count_c_(size) -#define _Deref_post_opt_count_x_(size) -#define _Deref_post_opt_valid_ -#define _Deref_post_opt_valid_bytecap_(size) -#define _Deref_post_opt_valid_bytecap_c_(size) -#define _Deref_post_opt_valid_bytecap_x_(size) -#define _Deref_post_opt_valid_cap_(size) -#define _Deref_post_opt_valid_cap_c_(size) -#define _Deref_post_opt_valid_cap_x_(size) -#define _Deref_post_opt_z_ -#define _Deref_post_opt_z_bytecap_(size) -#define _Deref_post_opt_z_bytecap_c_(size) -#define _Deref_post_opt_z_bytecap_x_(size) -#define _Deref_post_opt_z_cap_(size) -#define _Deref_post_opt_z_cap_c_(size) -#define _Deref_post_opt_z_cap_x_(size) -#define _Deref_post_valid_ -#define _Deref_post_valid_bytecap_(size) -#define _Deref_post_valid_bytecap_c_(size) -#define _Deref_post_valid_bytecap_x_(size) -#define _Deref_post_valid_cap_(size) -#define _Deref_post_valid_cap_c_(size) -#define _Deref_post_valid_cap_x_(size) -#define _Deref_post_z_ -#define _Deref_post_z_bytecap_(size) -#define _Deref_post_z_bytecap_c_(size) -#define _Deref_post_z_bytecap_x_(size) -#define _Deref_post_z_cap_(size) -#define _Deref_post_z_cap_c_(size) -#define _Deref_post_z_cap_x_(size) -#define _Deref_pre_bytecap_(size) -#define _Deref_pre_bytecap_c_(size) -#define _Deref_pre_bytecap_x_(size) -#define _Deref_pre_bytecount_(size) -#define _Deref_pre_bytecount_c_(size) -#define _Deref_pre_bytecount_x_(size) -#define _Deref_pre_cap_(size) -#define _Deref_pre_cap_c_(size) -#define _Deref_pre_cap_x_(size) -#define _Deref_pre_count_(size) -#define _Deref_pre_count_c_(size) -#define _Deref_pre_count_x_(size) -#define _Deref_pre_invalid_ -#define _Deref_pre_maybenull_ -#define _Deref_pre_notnull_ -#define _Deref_pre_null_ -#define _Deref_pre_opt_bytecap_(size) -#define _Deref_pre_opt_bytecap_c_(size) -#define _Deref_pre_opt_bytecap_x_(size) -#define _Deref_pre_opt_bytecount_(size) -#define _Deref_pre_opt_bytecount_c_(size) -#define _Deref_pre_opt_bytecount_x_(size) -#define _Deref_pre_opt_cap_(size) -#define _Deref_pre_opt_cap_c_(size) -#define _Deref_pre_opt_cap_x_(size) -#define _Deref_pre_opt_count_(size) -#define _Deref_pre_opt_count_c_(size) -#define _Deref_pre_opt_count_x_(size) -#define _Deref_pre_opt_valid_ -#define _Deref_pre_opt_valid_bytecap_(size) -#define _Deref_pre_opt_valid_bytecap_c_(size) -#define _Deref_pre_opt_valid_bytecap_x_(size) -#define _Deref_pre_opt_valid_cap_(size) -#define _Deref_pre_opt_valid_cap_c_(size) -#define _Deref_pre_opt_valid_cap_x_(size) -#define _Deref_pre_opt_z_ -#define _Deref_pre_opt_z_bytecap_(size) -#define _Deref_pre_opt_z_bytecap_c_(size) -#define _Deref_pre_opt_z_bytecap_x_(size) -#define _Deref_pre_opt_z_cap_(size) -#define _Deref_pre_opt_z_cap_c_(size) -#define _Deref_pre_opt_z_cap_x_(size) -#define _Deref_pre_readonly_ -#define _Deref_pre_valid_ -#define _Deref_pre_valid_bytecap_(size) -#define _Deref_pre_valid_bytecap_c_(size) -#define _Deref_pre_valid_bytecap_x_(size) -#define _Deref_pre_valid_cap_(size) -#define _Deref_pre_valid_cap_c_(size) -#define _Deref_pre_valid_cap_x_(size) -#define _Deref_pre_writeonly_ -#define _Deref_pre_z_ -#define _Deref_pre_z_bytecap_(size) -#define _Deref_pre_z_bytecap_c_(size) -#define _Deref_pre_z_bytecap_x_(size) -#define _Deref_pre_z_cap_(size) -#define _Deref_pre_z_cap_c_(size) -#define _Deref_pre_z_cap_x_(size) -#define _Deref_prepost_bytecap_(size) -#define _Deref_prepost_bytecap_x_(size) -#define _Deref_prepost_bytecount_(size) -#define _Deref_prepost_bytecount_x_(size) -#define _Deref_prepost_cap_(size) -#define _Deref_prepost_cap_x_(size) -#define _Deref_prepost_count_(size) -#define _Deref_prepost_count_x_(size) -#define _Deref_prepost_opt_bytecap_(size) -#define _Deref_prepost_opt_bytecap_x_(size) -#define _Deref_prepost_opt_bytecount_(size) -#define _Deref_prepost_opt_bytecount_x_(size) -#define _Deref_prepost_opt_cap_(size) -#define _Deref_prepost_opt_cap_x_(size) -#define _Deref_prepost_opt_count_(size) -#define _Deref_prepost_opt_count_x_(size) -#define _Deref_prepost_opt_valid_ -#define _Deref_prepost_opt_valid_bytecap_(size) -#define _Deref_prepost_opt_valid_bytecap_x_(size) -#define _Deref_prepost_opt_valid_cap_(size) -#define _Deref_prepost_opt_valid_cap_x_(size) -#define _Deref_prepost_opt_z_ -#define _Deref_prepost_opt_z_bytecap_(size) -#define _Deref_prepost_opt_z_cap_(size) -#define _Deref_prepost_valid_ -#define _Deref_prepost_valid_bytecap_(size) -#define _Deref_prepost_valid_bytecap_x_(size) -#define _Deref_prepost_valid_cap_(size) -#define _Deref_prepost_valid_cap_x_(size) -#define _Deref_prepost_z_ -#define _Deref_prepost_z_bytecap_(size) -#define _Deref_prepost_z_cap_(size) -#define _Deref_ret_bound_ -#define _Deref_ret_opt_z_ -#define _Deref_ret_range_(lb,ub) -#define _Deref_ret_z_ -#define _Field_range_(min,max) -#define _Field_size_(size) -#define _Field_size_bytes_(size) -#define _Field_size_bytes_full_(size) -#define _Field_size_bytes_full_opt_(size) -#define _Field_size_bytes_opt_(size) -#define _Field_size_bytes_part_(size, count) -#define _Field_size_bytes_part_opt_(size, count) -#define _Field_size_full_(size) -#define _Field_size_full_opt_(size) -#define _Field_size_opt_(size) -#define _Field_size_part_(size, count) -#define _Field_size_part_opt_(size, count) -#define _Field_z_ -#define _Function_class_(x) -#define _Group_(annos) -#define _In_ -#define _In_bound_ -#define _In_bytecount_(size) -#define _In_bytecount_c_(size) -#define _In_bytecount_x_(size) -#define _In_count_(size) -#define _In_count_c_(size) -#define _In_count_x_(size) -#define _In_defensive_(annotes) -#define _In_opt_ -#define _In_opt_bytecount_(size) -#define _In_opt_bytecount_c_(size) -#define _In_opt_bytecount_x_(size) -#define _In_opt_count_(size) -#define _In_opt_count_c_(size) -#define _In_opt_count_x_(size) -#define _In_opt_ptrdiff_count_(size) -#define _In_opt_z_ -#define _In_opt_z_bytecount_(size) -#define _In_opt_z_bytecount_c_(size) -#define _In_opt_z_count_(size) -#define _In_opt_z_count_c_(size) -#define _In_ptrdiff_count_(size) -#define _In_range_(lb,ub) -#define _In_reads_(size) -#define _In_reads_bytes_(size) -#define _In_reads_bytes_opt_(size) -#define _In_reads_opt_(size) -#define _In_reads_opt_z_(size) -#define _In_reads_or_z_(size) -#define _In_reads_to_ptr_(ptr) -#define _In_reads_to_ptr_opt_(ptr) -#define _In_reads_to_ptr_opt_z_(ptr) -#define _In_reads_to_ptr_z_(ptr) -#define _In_reads_z_(size) -#define _In_z_ -#define _In_z_bytecount_(size) -#define _In_z_bytecount_c_(size) -#define _In_z_count_(size) -#define _In_z_count_c_(size) -#define _Inout_ -#define _Inout_bytecap_(size) -#define _Inout_bytecap_c_(size) -#define _Inout_bytecap_x_(size) -#define _Inout_bytecount_(size) -#define _Inout_bytecount_c_(size) -#define _Inout_bytecount_x_(size) -#define _Inout_cap_(size) -#define _Inout_cap_c_(size) -#define _Inout_cap_x_(size) -#define _Inout_count_(size) -#define _Inout_count_c_(size) -#define _Inout_count_x_(size) -#define _Inout_defensive_(annotes) -#define _Inout_opt_ -#define _Inout_opt_bytecap_(size) -#define _Inout_opt_bytecap_c_(size) -#define _Inout_opt_bytecap_x_(size) -#define _Inout_opt_bytecount_(size) -#define _Inout_opt_bytecount_c_(size) -#define _Inout_opt_bytecount_x_(size) -#define _Inout_opt_cap_(size) -#define _Inout_opt_cap_c_(size) -#define _Inout_opt_cap_x_(size) -#define _Inout_opt_count_(size) -#define _Inout_opt_count_c_(size) -#define _Inout_opt_count_x_(size) -#define _Inout_opt_ptrdiff_count_(size) -#define _Inout_opt_z_ -#define _Inout_opt_z_bytecap_(size) -#define _Inout_opt_z_bytecap_c_(size) -#define _Inout_opt_z_bytecap_x_(size) -#define _Inout_opt_z_bytecount_(size) -#define _Inout_opt_z_bytecount_c_(size) -#define _Inout_opt_z_cap_(size) -#define _Inout_opt_z_cap_c_(size) -#define _Inout_opt_z_cap_x_(size) -#define _Inout_opt_z_count_(size) -#define _Inout_opt_z_count_c_(size) -#define _Inout_ptrdiff_count_(size) -#define _Inout_updates_(size) -#define _Inout_updates_all_(size) -#define _Inout_updates_all_opt_(size) -#define _Inout_updates_bytes_(size) -#define _Inout_updates_bytes_all_(size) -#define _Inout_updates_bytes_all_opt_(size) -#define _Inout_updates_bytes_opt_(size) -#define _Inout_updates_bytes_to_(size,count) -#define _Inout_updates_bytes_to_opt_(size,count) -#define _Inout_updates_opt_(size) -#define _Inout_updates_opt_z_(size) -#define _Inout_updates_to_(size,count) -#define _Inout_updates_to_opt_(size,count) -#define _Inout_updates_z_(size) -#define _Inout_z_ -#define _Inout_z_bytecap_(size) -#define _Inout_z_bytecap_c_(size) -#define _Inout_z_bytecap_x_(size) -#define _Inout_z_bytecount_(size) -#define _Inout_z_bytecount_c_(size) -#define _Inout_z_cap_(size) -#define _Inout_z_cap_c_(size) -#define _Inout_z_cap_x_(size) -#define _Inout_z_count_(size) -#define _Inout_z_count_c_(size) -#define _Interlocked_operand_ -#define _Literal_ -#define _Maybe_raises_SEH_exception -#define _Maybe_raises_SEH_exception_ -#define _Maybenull_ -#define _Maybevalid_ -#define _Must_inspect_result_ -#define _Notliteral_ -#define _Notnull_ -#define _Notref_ -#define _Notvalid_ -#define _NullNull_terminated_ -#define _Null_ -#define _Null_terminated_ -#define _On_failure_(annos) -#define _Out_ -#define _Out_bound_ -#define _Out_bytecap_(size) -#define _Out_bytecap_c_(size) -#define _Out_bytecap_post_bytecount_(cap,count) -#define _Out_bytecap_x_(size) -#define _Out_bytecapcount_(capcount) -#define _Out_bytecapcount_x_(capcount) -#define _Out_cap_(size) -#define _Out_cap_c_(size) -#define _Out_cap_m_(mult,size) -#define _Out_cap_post_count_(cap,count) -#define _Out_cap_x_(size) -#define _Out_capcount_(capcount) -#define _Out_capcount_x_(capcount) -#define _Out_defensive_(annotes) -#define _Out_opt_ -#define _Out_opt_bytecap_(size) -#define _Out_opt_bytecap_c_(size) -#define _Out_opt_bytecap_post_bytecount_(cap,count) -#define _Out_opt_bytecap_x_(size) -#define _Out_opt_bytecapcount_(capcount) -#define _Out_opt_bytecapcount_x_(capcount) -#define _Out_opt_cap_(size) -#define _Out_opt_cap_c_(size) -#define _Out_opt_cap_m_(mult,size) -#define _Out_opt_cap_post_count_(cap,count) -#define _Out_opt_cap_x_(size) -#define _Out_opt_capcount_(capcount) -#define _Out_opt_capcount_x_(capcount) -#define _Out_opt_ptrdiff_cap_(size) -#define _Out_opt_z_bytecap_(size) -#define _Out_opt_z_bytecap_c_(size) -#define _Out_opt_z_bytecap_post_bytecount_(cap,count) -#define _Out_opt_z_bytecap_x_(size) -#define _Out_opt_z_bytecapcount_(capcount) -#define _Out_opt_z_cap_(size) -#define _Out_opt_z_cap_c_(size) -#define _Out_opt_z_cap_m_(mult,size) -#define _Out_opt_z_cap_post_count_(cap,count) -#define _Out_opt_z_cap_x_(size) -#define _Out_opt_z_capcount_(capcount) -#define _Out_ptrdiff_cap_(size) -#define _Out_range_(lb,ub) -#define _Out_writes_(size) -#define _Out_writes_all_(size) -#define _Out_writes_all_opt_(size) -#define _Out_writes_bytes_(size) -#define _Out_writes_bytes_all_(size) -#define _Out_writes_bytes_all_opt_(size) -#define _Out_writes_bytes_opt_(size) -#define _Out_writes_bytes_to_(size,count) -#define _Out_writes_bytes_to_opt_(size,count) -#define _Out_writes_opt_(size) -#define _Out_writes_opt_z_(size) -#define _Out_writes_to_(size,count) -#define _Out_writes_to_opt_(size,count) -#define _Out_writes_to_ptr_(ptr) -#define _Out_writes_to_ptr_opt_(ptr) -#define _Out_writes_to_ptr_opt_z_(ptr) -#define _Out_writes_to_ptr_z_(ptr) -#define _Out_writes_z_(size) -#define _Out_z_bytecap_(size) -#define _Out_z_bytecap_c_(size) -#define _Out_z_bytecap_post_bytecount_(cap,count) -#define _Out_z_bytecap_x_(size) -#define _Out_z_bytecapcount_(capcount) -#define _Out_z_cap_(size) -#define _Out_z_cap_c_(size) -#define _Out_z_cap_m_(mult,size) -#define _Out_z_cap_post_count_(cap,count) -#define _Out_z_cap_x_(size) -#define _Out_z_capcount_(capcount) -#define _Outptr_ -#define _Outptr_opt_ -#define _Outptr_opt_result_buffer_(size) -#define _Outptr_opt_result_buffer_all_(size) -#define _Outptr_opt_result_buffer_all_maybenull_(size) -#define _Outptr_opt_result_buffer_maybenull_(size) -#define _Outptr_opt_result_buffer_to_(size, count) -#define _Outptr_opt_result_buffer_to_maybenull_(size, count) -#define _Outptr_opt_result_bytebuffer_(size) -#define _Outptr_opt_result_bytebuffer_all_(size) -#define _Outptr_opt_result_bytebuffer_all_maybenull_(size) -#define _Outptr_opt_result_bytebuffer_maybenull_(size) -#define _Outptr_opt_result_bytebuffer_to_(size, count) -#define _Outptr_opt_result_bytebuffer_to_maybenull_(size, count) -#define _Outptr_opt_result_maybenull_ -#define _Outptr_opt_result_maybenull_z_ -#define _Outptr_opt_result_nullonfailure_ -#define _Outptr_opt_result_z_ -#define _Outptr_result_buffer_(size) -#define _Outptr_result_buffer_all_(size) -#define _Outptr_result_buffer_all_maybenull_(size) -#define _Outptr_result_buffer_maybenull_(size) -#define _Outptr_result_buffer_to_(size, count) -#define _Outptr_result_buffer_to_maybenull_(size, count) -#define _Outptr_result_bytebuffer_(size) -#define _Outptr_result_bytebuffer_all_(size) -#define _Outptr_result_bytebuffer_all_maybenull_(size) -#define _Outptr_result_bytebuffer_maybenull_(size) -#define _Outptr_result_bytebuffer_to_(size, count) -#define _Outptr_result_bytebuffer_to_maybenull_(size, count) -#define _Outptr_result_maybenull_ -#define _Outptr_result_maybenull_z_ -#define _Outptr_result_nullonfailure_ -#define _Outptr_result_z_ -#define _Outref_ -#define _Outref_result_buffer_(size) -#define _Outref_result_buffer_all_(size) -#define _Outref_result_buffer_all_maybenull_(size) -#define _Outref_result_buffer_maybenull_(size) -#define _Outref_result_buffer_to_(size, count) -#define _Outref_result_buffer_to_maybenull_(size, count) -#define _Outref_result_bytebuffer_(size) -#define _Outref_result_bytebuffer_all_(size) -#define _Outref_result_bytebuffer_all_maybenull_(size) -#define _Outref_result_bytebuffer_maybenull_(size) -#define _Outref_result_bytebuffer_to_(size, count) -#define _Outref_result_bytebuffer_to_maybenull_(size, count) -#define _Outref_result_maybenull_ -#define _Outref_result_nullonfailure_ -#define _Points_to_data_ -#define _Post_ -#define _Post_bytecap_(size) -#define _Post_bytecount_(size) -#define _Post_bytecount_c_(size) -#define _Post_bytecount_x_(size) -#define _Post_cap_(size) -#define _Post_count_(size) -#define _Post_count_c_(size) -#define _Post_count_x_(size) -#define _Post_defensive_ -#define _Post_equal_to_(expr) -#define _Post_invalid_ -#define _Post_maybenull_ -#define _Post_maybez_ -#define _Post_notnull_ -#define _Post_null_ -#define _Post_ptr_invalid_ -#define _Post_readable_byte_size_(size) -#define _Post_readable_size_(size) -#define _Post_satisfies_(cond) -#define _Post_valid_ -#define _Post_writable_byte_size_(size) -#define _Post_writable_size_(size) -#define _Post_z_ -#define _Post_z_bytecount_(size) -#define _Post_z_bytecount_c_(size) -#define _Post_z_bytecount_x_(size) -#define _Post_z_count_(size) -#define _Post_z_count_c_(size) -#define _Post_z_count_x_(size) -#define _Pre_ -#define _Pre_bytecap_(size) -#define _Pre_bytecap_c_(size) -#define _Pre_bytecap_x_(size) -#define _Pre_bytecount_(size) -#define _Pre_bytecount_c_(size) -#define _Pre_bytecount_x_(size) -#define _Pre_cap_(size) -#define _Pre_cap_c_(size) -#define _Pre_cap_c_one_ -#define _Pre_cap_for_(param) -#define _Pre_cap_m_(mult,size) -#define _Pre_cap_x_(size) -#define _Pre_count_(size) -#define _Pre_count_c_(size) -#define _Pre_count_x_(size) -#define _Pre_defensive_ -#define _Pre_equal_to_(expr) -#define _Pre_invalid_ -#define _Pre_maybenull_ -#define _Pre_notnull_ -#define _Pre_null_ -#define _Pre_opt_bytecap_(size) -#define _Pre_opt_bytecap_c_(size) -#define _Pre_opt_bytecap_x_(size) -#define _Pre_opt_bytecount_(size) -#define _Pre_opt_bytecount_c_(size) -#define _Pre_opt_bytecount_x_(size) -#define _Pre_opt_cap_(size) -#define _Pre_opt_cap_c_(size) -#define _Pre_opt_cap_c_one_ -#define _Pre_opt_cap_for_(param) -#define _Pre_opt_cap_m_(mult,size) -#define _Pre_opt_cap_x_(size) -#define _Pre_opt_count_(size) -#define _Pre_opt_count_c_(size) -#define _Pre_opt_count_x_(size) -#define _Pre_opt_ptrdiff_cap_(ptr) -#define _Pre_opt_ptrdiff_count_(ptr) -#define _Pre_opt_valid_ -#define _Pre_opt_valid_bytecap_(size) -#define _Pre_opt_valid_bytecap_c_(size) -#define _Pre_opt_valid_bytecap_x_(size) -#define _Pre_opt_valid_cap_(size) -#define _Pre_opt_valid_cap_c_(size) -#define _Pre_opt_valid_cap_x_(size) -#define _Pre_opt_z_ -#define _Pre_opt_z_bytecap_(size) -#define _Pre_opt_z_bytecap_c_(size) -#define _Pre_opt_z_bytecap_x_(size) -#define _Pre_opt_z_cap_(size) -#define _Pre_opt_z_cap_c_(size) -#define _Pre_opt_z_cap_x_(size) -#define _Pre_ptrdiff_cap_(ptr) -#define _Pre_ptrdiff_count_(ptr) -#define _Pre_readable_byte_size_(size) -#define _Pre_readable_size_(size) -#define _Pre_readonly_ -#define _Pre_satisfies_(cond) -#define _Pre_valid_ -#define _Pre_valid_bytecap_(size) -#define _Pre_valid_bytecap_c_(size) -#define _Pre_valid_bytecap_x_(size) -#define _Pre_valid_cap_(size) -#define _Pre_valid_cap_c_(size) -#define _Pre_valid_cap_x_(size) -#define _Pre_writable_byte_size_(size) -#define _Pre_writable_size_(size) -#define _Pre_writeonly_ -#define _Pre_z_ -#define _Pre_z_bytecap_(size) -#define _Pre_z_bytecap_c_(size) -#define _Pre_z_bytecap_x_(size) -#define _Pre_z_cap_(size) -#define _Pre_z_cap_c_(size) -#define _Pre_z_cap_x_(size) -#define _Prepost_bytecount_(size) -#define _Prepost_bytecount_c_(size) -#define _Prepost_bytecount_x_(size) -#define _Prepost_count_(size) -#define _Prepost_count_c_(size) -#define _Prepost_count_x_(size) -#define _Prepost_opt_bytecount_(size) -#define _Prepost_opt_bytecount_c_(size) -#define _Prepost_opt_bytecount_x_(size) -#define _Prepost_opt_count_(size) -#define _Prepost_opt_count_c_(size) -#define _Prepost_opt_count_x_(size) -#define _Prepost_opt_valid_ -#define _Prepost_opt_z_ -#define _Prepost_valid_ -#define _Prepost_z_ -#define _Printf_format_string_ -#define _Raises_SEH_exception_ -#define _Readable_bytes_(size) -#define _Readable_elements_(size) -#define _Reserved_ -#define _Result_nullonfailure_ -#define _Result_zeroonfailure_ -#define _Ret_ -#define _Ret_bound_ -#define _Ret_bytecap_(size) -#define _Ret_bytecap_c_(size) -#define _Ret_bytecap_x_(size) -#define _Ret_bytecount_(size) -#define _Ret_bytecount_c_(size) -#define _Ret_bytecount_x_(size) -#define _Ret_cap_(size) -#define _Ret_cap_c_(size) -#define _Ret_cap_x_(size) -#define _Ret_count_(size) -#define _Ret_count_c_(size) -#define _Ret_count_x_(size) -#define _Ret_maybenull_ -#define _Ret_maybenull_z_ -#define _Ret_notnull_ -#define _Ret_null_ -#define _Ret_opt_ -#define _Ret_opt_bytecap_(size) -#define _Ret_opt_bytecap_c_(size) -#define _Ret_opt_bytecap_x_(size) -#define _Ret_opt_bytecount_(size) -#define _Ret_opt_bytecount_c_(size) -#define _Ret_opt_bytecount_x_(size) -#define _Ret_opt_cap_(size) -#define _Ret_opt_cap_c_(size) -#define _Ret_opt_cap_x_(size) -#define _Ret_opt_count_(size) -#define _Ret_opt_count_c_(size) -#define _Ret_opt_count_x_(size) -#define _Ret_opt_valid_ -#define _Ret_opt_z_ -#define _Ret_opt_z_bytecap_(size) -#define _Ret_opt_z_bytecount_(size) -#define _Ret_opt_z_cap_(size) -#define _Ret_opt_z_count_(size) -#define _Ret_range_(lb,ub) -#define _Ret_valid_ -#define _Ret_writes_(size) -#define _Ret_writes_bytes_(size) -#define _Ret_writes_bytes_maybenull_(size) -#define _Ret_writes_bytes_to_(size,count) -#define _Ret_writes_bytes_to_maybenull_(size,count) -#define _Ret_writes_maybenull_(size) -#define _Ret_writes_maybenull_z_(size) -#define _Ret_writes_to_(size,count) -#define _Ret_writes_to_maybenull_(size,count) -#define _Ret_writes_z_(size) -#define _Ret_z_ -#define _Ret_z_bytecap_(size) -#define _Ret_z_bytecount_(size) -#define _Ret_z_cap_(size) -#define _Ret_z_count_(size) -#define _Return_type_success_(expr) -#define _Scanf_format_string_ -#define _Scanf_s_format_string_ -#define _Struct_size_bytes_(size) -#define _Success_(expr) -#define _Unchanged_(e) -#define _Use_decl_annotations_ -#define _Valid_ -#define _When_(expr, annos) -#define _Writable_bytes_(size) -#define _Writable_elements_(size) -#define __inner_callback -#define __inner_exceptthat -#define __inner_typefix(ctype) - -#ifndef __fallthrough -# define __fallthrough __inner_fallthrough -#endif - -#ifndef __analysis_assume -# define __analysis_assume(expr) -#endif +#include "salieri.h" diff --git a/include/compat/mingw/salieri.h b/include/compat/mingw/salieri.h new file mode 100644 index 0000000..898ee17 --- /dev/null +++ b/include/compat/mingw/salieri.h @@ -0,0 +1,1599 @@ +/** + * Salieri + * v1 + * + * Salieri is a header which contains definitions for the Microsoft + * source-code annotation language (SAL). It is *not* an + * implementation of SAL; that's for compilers and static analyzers. + * For the most part we just define macros to nothing. + * + * The goal is to allow projects to use SAL without creating a hard + * dependency on it (i.e., you can still use compilers other than + * MSVC). Simply include `salieri.h`, which you can/should distribute + * with your code, instead of ``. + * + * Multiple copies of Salieri can be included safely, even different + * versions. Including a newer version will simiply replace older + * definitions with newer ones, and including older versions will have + * no effect. + * + * I don't think anything in here is copyrightable, but just in case: + * + * To the extent possible under law, the author(s) have dedicated + * all copyright and related and neighboring rights to this software + * to the public domain worldwide. This software is distributed + * without any warranty. + * + * For details, see . + */ + +#if !defined(SALIERI_VERSION) || (SALIERI_VERSION < 1) + +/* TODO: figure out when first appeared. */ +#if defined(_MSC_VER) +# include +#endif + +/* The main concern for the implementation is that we don't want to + * replace annotations from , but we *do* want to replace + * annotations from older versions of Salieri. To keep track of + * everything, when we (Salieri) define a SAL annotation, we also + * define SALIERI_DEFINED_${annotation} (with the leading and trailing + * '-' stripped). Then, before redefining an annotation macro we + * check to make sure SALIERI_DEFINED_${annontation} is defined. + * + * This means you can safely use Salieri in a public header in your + * project. + */ + +/* Function Parameters & Return Value + * + * https://msdn.microsoft.com/en-us/library/hh916382.aspx + *****/ + +/* Pointer Parameters */ + +#if defined(_In_) && defined(SALIERI_DEFINED_In) +# undef _In_ +#endif +#if !defined(_In_) +# define _In_ +# define SALIERI_DEFINED_In +#endif + +#if defined(__in_ecount) && defined(SALIERI_DEFINED__in_ecount) +# undef __in_ecount +#endif +#if !defined(__in_ecount) +# define __in_ecount(s) +# define SALIERI_DEFINED__in_ecount(s) +#endif + +#if defined(__in_ecount_opt) && defined(SALIERI_DEFINED__in_ecount_opt) +# undef __in_ecount_opt +#endif +#if !defined(__in_ecount_opt) +# define __in_ecount_opt(s) +# define SALIERI_DEFINED__in_ecount_opt(s) +#endif + +#if defined(_Out_) && defined(SALIERI_DEFINED_Out) +# undef _Out_ +#endif +#if !defined(_Out_) +# define _Out_ +# define SALIERI_DEFINED_Out +#endif + +#if defined(_Inout_) && defined(SALIERI_DEFINED_Inout) +# undef _Inout_ +#endif +#if !defined(_Inout_) +# define _Inout_ +# define SALIERI_DEFINED_Inout +#endif + +#if defined(_In_z_) && defined(SALIERI_DEFINED_In_z) +# undef _In_z_ +#endif +#if !defined(_In_z_) +# define _In_z_ +# define SALIERI_DEFINED_In_z +#endif + +#if defined(_Inout_z_) && defined(SALIERI_DEFINED_Inout_z) +# undef _Inout_z_ +#endif +#if !defined(_Inout_z_) +# define _Inout_z_ +# define SALIERI_DEFINED_Inout_z +#endif + +#if defined(_In_reads_) && defined(SALIERI_DEFINED_In_reads) +# undef _In_reads_ +#endif +#if !defined(_In_reads_) +# define _In_reads_(s) +# define SALIERI_DEFINED_In_reads +#endif + +#if defined(_In_reads_bytes_) && defined(SALIERI_DEFINED_In_reads_bytes) +# undef _In_reads_bytes_ +#endif +#if !defined(_In_reads_bytes_) +# define _In_reads_bytes_(s) +# define SALIERI_DEFINED_In_reads_bytes +#endif + +#if defined(_In_reads_z_) && defined(SALIERI_DEFINED_In_reads_z) +# undef _In_reads_z_ +#endif +#if !defined(_In_reads_z_) +# define _In_reads_z_(s) +# define SALIERI_DEFINED_In_reads_z +#endif + +#if defined(_In_reads_or_z_) && defined(SALIERI_DEFINED_In_reads_or_z) +# undef _In_reads_or_z_ +#endif +#if !defined(_In_reads_or_z_) +# define _In_reads_or_z_(s) +# define SALIERI_DEFINED_In_reads_or_z +#endif + +#if defined(_Out_writes_) && defined(SALIERI_DEFINED_Out_writes) +# undef _Out_writes_ +#endif +#if !defined(_Out_writes_) +# define _Out_writes_(s) +# define SALIERI_DEFINED_Out_writes +#endif + +#if defined(_Out_writes_bytes_) && defined(SALIERI_DEFINED_Out_writes_bytes) +# undef _Out_writes_bytes_ +#endif +#if !defined(_Out_writes_bytes_) +# define _Out_writes_bytes_(s) +# define SALIERI_DEFINED_Out_writes_bytes +#endif + +#if defined(_Out_writes_bytes_opt_) && defined(SALIERI_DEFINED_Out_writes_bytes_opt_) +# undef _Out_writes_bytes_opt_ +#endif +#if !defined(_Out_writes_bytes_opt_) +# define _Out_writes_bytes_opt_(s) +# define SALIERI_DEFINED_Out_writes_bytes_opt_ +#endif + +#if defined(_Out_writes_z_) && defined(SALIERI_DEFINED_Out_writes_z) +# undef _Out_writes_z_ +#endif +#if !defined(_Out_writes_z_) +# define _Out_writes_z_(s) +# define SALIERI_DEFINED_Out_writes_z +#endif + +#if defined(_Inout_updates_) && defined(SALIERI_DEFINED_Inout_updates) +# undef _Inout_updates_ +#endif +#if !defined(_Inout_updates_) +# define _Inout_updates_(s) +# define SALIERI_DEFINED_Inout_updates +#endif + +#if defined(_Inout_updates_bytes_) && defined(SALIERI_DEFINED_Inout_updates_bytes) +# undef _Inout_updates_bytes_ +#endif +#if !defined(_Inout_updates_bytes_) +# define _Inout_updates_bytes_(s) +# define SALIERI_DEFINED_Inout_updates_bytes +#endif + +#if defined(_Inout_updates_z_) && defined(SALIERI_DEFINED_Inout_updates_z) +# undef _Inout_updates_z_ +#endif +#if !defined(_Inout_updates_z_) +# define _Inout_updates_z_(s) +# define SALIERI_DEFINED_Inout_updates_z +#endif + +#if defined(_Out_writes_to_) && defined(SALIERI_DEFINED_Out_writes_to) +# undef _Out_writes_to_ +#endif +#if !defined(_Out_writes_to_) +# define _Out_writes_to_(s,c) +# define SALIERI_DEFINED_Out_writes_to +#endif + +#if defined(_Out_writes_bytes_to_) && defined(SALIERI_DEFINED_Out_writes_bytes_to) +# undef _Out_writes_bytes_to_ +#endif +#if !defined(_Out_writes_bytes_to_) +# define _Out_writes_bytes_to_(s,c) +# define SALIERI_DEFINED_Out_writes_bytes_to +#endif + +#if defined(_Out_writes_all_) && defined(SALIERI_DEFINED_Out_writes_all) +# undef _Out_writes_all_ +#endif +#if !defined(_Out_writes_all_) +# define _Out_writes_all_(s) +# define SALIERI_DEFINED_Out_writes_all +#endif + +#if defined(_Out_writes_bytes_all_) && defined(SALIERI_DEFINED_Out_writes_bytes_all) +# undef _Out_writes_bytes_all_ +#endif +#if !defined(_Out_writes_bytes_all_) +# define _Out_writes_bytes_all_(s) +# define SALIERI_DEFINED_Out_writes_bytes_all +#endif + +#if defined(_In_updates_to_) && defined(SALIERI_DEFINED_In_updates_to) +# undef _In_updates_to_ +#endif +#if !defined(_In_updates_to_) +# define _In_updates_to_(s,c) +# define SALIERI_DEFINED_In_updates_to +#endif + +#if defined(_In_updates_bytes_to_) && defined(SALIERI_DEFINED_In_updates_bytes_to) +# undef _In_updates_bytes_to_ +#endif +#if !defined(_In_updates_bytes_to_) +# define _In_updates_bytes_to_(s,c) +# define SALIERI_DEFINED_In_updates_bytes_to +#endif + +#if defined(_Inout_updates_z_) && defined(SALIERI_DEFINED_Inout_updates_z) +# undef _Inout_updates_z_ +#endif +#if !defined(_Inout_updates_z_) +# define _Inout_updates_z_(s) +# define SALIERI_DEFINED_Inout_updates_z +#endif + +#if defined(_Out_writes_to_) && defined(SALIERI_DEFINED_Out_writes_to) +# undef _Out_writes_to_ +#endif +#if !defined(_Out_writes_to_) +# define _Out_writes_to_(s,c) +# define SALIERI_DEFINED_Out_writes_to +#endif + +#if defined(_Out_writes_bytes_to_) && defined(SALIERI_DEFINED_Out_writes_bytes_to) +# undef _Out_writes_bytes_to_ +#endif +#if !defined(_Out_writes_bytes_to_) +# define _Out_writes_bytes_to_(s,c) +# define SALIERI_DEFINED_Out_writes_bytes_to +#endif + +#if defined(_Out_writes_all_) && defined(SALIERI_DEFINED_Out_writes_all) +# undef _Out_writes_all_ +#endif +#if !defined(_Out_writes_all_) +# define _Out_writes_all_(s) +# define SALIERI_DEFINED_Out_writes_all +#endif + +#if defined(_Out_writes_bytes_all_) && defined(SALIERI_DEFINED_Out_writes_bytes_all) +# undef _Out_writes_bytes_all_ +#endif +#if !defined(_Out_writes_bytes_all_) +# define _Out_writes_bytes_all_(s) +# define SALIERI_DEFINED_Out_writes_bytes_all +#endif + +#if defined(_Inout_updates_to_) && defined(SALIERI_DEFINED_Inout_updates_to) +# undef _Inout_updates_to_ +#endif +#if !defined(_Inout_updates_to_) +# define _Inout_updates_to_(s,c) +# define SALIERI_DEFINED_Inout_updates_to +#endif + +#if defined(_Inout_updates_bytes_to_) && defined(SALIERI_DEFINED_Inout_updates_bytes_to) +# undef _Inout_updates_bytes_to_ +#endif +#if !defined(_Inout_updates_bytes_to_) +# define _Inout_updates_bytes_to_(s,c) +# define SALIERI_DEFINED_Inout_updates_bytes_to +#endif + +#if defined(_Inout_updates_all_) && defined(SALIERI_DEFINED_Inout_updates_all) +# undef _Inout_updates_all_ +#endif +#if !defined(_Inout_updates_all_) +# define _Inout_updates_all_(s) +# define SALIERI_DEFINED_Inout_updates_all +#endif + +#if defined(_Inout_updates_bytes_all_) && defined(SALIERI_DEFINED_Inout_updates_bytes_all) +# undef _Inout_updates_bytes_all_ +#endif +#if !defined(_Inout_updates_bytes_all_) +# define _Inout_updates_bytes_all_(s) +# define SALIERI_DEFINED_Inout_updates_bytes_all +#endif + +#if defined(_In_reads_to_ptr_) && defined(SALIERI_DEFINED_In_reads_to_ptr) +# undef _In_reads_to_ptr_ +#endif +#if !defined(_In_reads_to_ptr_) +# define _In_reads_to_ptr_(p) +# define SALIERI_DEFINED_In_reads_to_ptr +#endif + +#if defined(_In_reads_to_ptr_z_) && defined(SALIERI_DEFINED_In_reads_to_ptr_z) +# undef _In_reads_to_ptr_z_ +#endif +#if !defined(_In_reads_to_ptr_z_) +# define _In_reads_to_ptr_z_(p) +# define SALIERI_DEFINED_In_reads_to_ptr_z +#endif + +#if defined(_Out_writes_to_ptr_) && defined(SALIERI_DEFINED_Out_writes_to_ptr) +# undef _Out_writes_to_ptr_ +#endif +#if !defined(_Out_writes_to_ptr_) +# define _Out_writes_to_ptr_(p) +# define SALIERI_DEFINED_Out_writes_to_ptr +#endif + +#if defined(_Out_writes_to_ptr_z_) && defined(SALIERI_DEFINED_Out_writes_to_ptr_z) +# undef _Out_writes_to_ptr_z_ +#endif +#if !defined(_Out_writes_to_ptr_z_) +# define _Out_writes_to_ptr_z_(p) +# define SALIERI_DEFINED_Out_writes_to_ptr_z +#endif + +/* Optional Pointer Parameters */ + +#if defined(_In_opt_) && defined(SALIERI_DEFINED_In_opt) +# undef _In_opt_ +#endif +#if !defined(_In_opt_) +# define _In_opt_ +# define SALIERI_DEFINED_In_opt +#endif + +#if defined(_Out_opt_) && defined(SALIERI_DEFINED_Out_opt) +# undef _Out_opt_ +#endif +#if !defined(_Out_opt_) +# define _Out_opt_ +# define SALIERI_DEFINED_Out_opt +#endif + +#if defined(_Inout_opt_) && defined(SALIERI_DEFINED_Inout_opt) +# undef _Inout_opt_ +#endif +#if !defined(_Inout_opt_) +# define _Inout_opt_ +# define SALIERI_DEFINED_Inout_opt +#endif + +#if defined(_In_opt_z_) && defined(SALIERI_DEFINED_In_opt_z) +# undef _In_opt_z_ +#endif +#if !defined(_In_opt_z_) +# define _In_opt_z_ +# define SALIERI_DEFINED_In_opt_z +#endif + +#if defined(_Inout_opt_z_) && defined(SALIERI_DEFINED_Inout_opt_z) +# undef _Inout_opt_z_ +#endif +#if !defined(_Inout_opt_z_) +# define _Inout_opt_z_ +# define SALIERI_DEFINED_Inout_opt_z +#endif + +#if defined(_Inout_opt_bytecount_) && defined(SALIERI_DEFINED_Inout_opt_bytecount_) +# undef _Inout_opt_bytecount_ +#endif +#if !defined(_Inout_opt_bytecount_) +# define _Inout_opt_bytecount_(s) +# define SALIERI_DEFINED_Inout_opt_bytecount_(s) +#endif + +#if defined(_In_reads_opt_) && defined(SALIERI_DEFINED_In_reads_opt) +# undef _In_reads_opt_ +#endif +#if !defined(_In_reads_opt_) +# define _In_reads_opt_(s) +# define SALIERI_DEFINED_In_reads_opt +#endif + +#if defined(_In_reads_bytes_opt_) && defined(SALIERI_DEFINED_In_reads_bytes_opt) +# undef _In_reads_bytes_opt_ +#endif +#if !defined(_In_reads_bytes_opt_) +# define _In_reads_bytes_opt_(s) +# define SALIERI_DEFINED_In_reads_bytes_opt +#endif + +#if defined(_In_reads_opt_z_) && defined(SALIERI_DEFINED_In_reads_opt_z) +# undef _In_reads_opt_z_ +#endif +#if !defined(_In_reads_opt_z_) +# define _In_reads_opt_z_(s) +# define SALIERI_DEFINED_In_reads_opt_z +#endif + +#if defined(_Out_writes_opt_) && defined(SALIERI_DEFINED_Out_writes_opt) +# undef _Out_writes_opt_ +#endif +#if !defined(_Out_writes_opt_) +# define _Out_writes_opt_(s) +# define SALIERI_DEFINED_Out_writes_opt +#endif + +#if defined(_Out_writes_bytes_) && defined(SALIERI_DEFINED_Out_writes_bytes) +# undef _Out_writes_bytes_ +#endif +#if !defined(_Out_writes_bytes_) +# define _Out_writes_bytes_(s) +# define SALIERI_DEFINED_Out_writes_bytes +#endif + +#if defined(_Out_writes_opt_z_) && defined(SALIERI_DEFINED_Out_writes_opt_z) +# undef _Out_writes_opt_z_ +#endif +#if !defined(_Out_writes_opt_z_) +# define _Out_writes_opt_z_(s) +# define SALIERI_DEFINED_Out_writes_opt_z +#endif + +#if defined(_Inout_updates_opt_) && defined(SALIERI_DEFINED_Inout_updates_opt) +# undef _Inout_updates_opt_ +#endif +#if !defined(_Inout_updates_opt_) +# define _Inout_updates_opt_(s) +# define SALIERI_DEFINED_Inout_updates_opt +#endif + +#if defined(_Inout_updates_bytes_opt_) && defined(SALIERI_DEFINED_Inout_updates_bytes_opt) +# undef _Inout_updates_bytes_opt_ +#endif +#if !defined(_Inout_updates_bytes_opt_) +# define _Inout_updates_bytes_opt_(s) +# define SALIERI_DEFINED_Inout_updates_bytes_opt +#endif + +#if defined(_Inout_updates_opt_z_) && defined(SALIERI_DEFINED_Inout_updates_opt_z) +# undef _Inout_updates_opt_z_ +#endif +#if !defined(_Inout_updates_opt_z_) +# define _Inout_updates_opt_z_(s) +# define SALIERI_DEFINED_Inout_updates_opt_z +#endif + +#if defined(_Out_writes_to_opt_) && defined(SALIERI_DEFINED_Out_writes_to_opt) +# undef _Out_writes_to_opt_ +#endif +#if !defined(_Out_writes_to_opt_) +# define _Out_writes_to_opt_(s,c) +# define SALIERI_DEFINED_Out_writes_to_opt +#endif + +#if defined(_Out_writes_bytes_to_opt_) && defined(SALIERI_DEFINED_Out_writes_bytes_to_opt) +# undef _Out_writes_bytes_to_opt_ +#endif +#if !defined(_Out_writes_bytes_to_opt_) +# define _Out_writes_bytes_to_opt_(s,c) +# define SALIERI_DEFINED_Out_writes_bytes_to_opt +#endif + +#if defined(_Out_writes_all_opt_) && defined(SALIERI_DEFINED_Out_writes_all_opt) +# undef _Out_writes_all_opt_ +#endif +#if !defined(_Out_writes_all_opt_) +# define _Out_writes_all_opt_(s) +# define SALIERI_DEFINED_Out_writes_all_opt +#endif + +#if defined(_Out_writes_bytes_all_opt_) && defined(SALIERI_DEFINED_Out_writes_bytes_all_opt) +# undef _Out_writes_bytes_all_opt_ +#endif +#if !defined(_Out_writes_bytes_all_opt_) +# define _Out_writes_bytes_all_opt_(s) +# define SALIERI_DEFINED_Out_writes_bytes_all_opt +#endif + +#if defined(_In_updates_to_opt_) && defined(SALIERI_DEFINED_In_updates_to_opt) +# undef _In_updates_to_opt_ +#endif +#if !defined(_In_updates_to_opt_) +# define _In_updates_to_opt_(s,c) +# define SALIERI_DEFINED_In_updates_to_opt +#endif + +#if defined(_In_updates_bytes_to_opt_) && defined(SALIERI_DEFINED_In_updates_bytes_to_opt) +# undef _In_updates_bytes_to_opt_ +#endif +#if !defined(_In_updates_bytes_to_opt_) +# define _In_updates_bytes_to_opt_(s,c) +# define SALIERI_DEFINED_In_updates_bytes_to_opt +#endif + +#if defined(_Inout_updates_all_opt_) && defined(SALIERI_DEFINED_Inout_updates_all_opt) +# undef _Inout_updates_all_opt_ +#endif +#if !defined(_Inout_updates_all_opt_) +# define _Inout_updates_all_opt_(s) +# define SALIERI_DEFINED_Inout_updates_all_opt +#endif + +#if defined(_Inout_updates_bytes_all_opt_) && defined(SALIERI_DEFINED_Inout_updates_bytes_all_opt) +# undef _Inout_updates_bytes_all_opt_ +#endif +#if !defined(_Inout_updates_bytes_all_opt_) +# define _Inout_updates_bytes_all_opt_(s) +# define SALIERI_DEFINED_Inout_updates_bytes_all_opt +#endif + +#if defined(_In_reads_to_ptr_opt_) && defined(SALIERI_DEFINED_In_reads_to_ptr_opt) +# undef _In_reads_to_ptr_opt_ +#endif +#if !defined(_In_reads_to_ptr_opt_) +# define _In_reads_to_ptr_opt_(p) +# define SALIERI_DEFINED_In_reads_to_ptr_opt +#endif + +#if defined(_In_reads_to_ptr_opt_z_) && defined(SALIERI_DEFINED_In_reads_to_ptr_opt_z) +# undef _In_reads_to_ptr_opt_z_ +#endif +#if !defined(_In_reads_to_ptr_opt_z_) +# define _In_reads_to_ptr_opt_z_(p) +# define SALIERI_DEFINED_In_reads_to_ptr_opt_z +#endif + +#if defined(_Out_writes_to_ptr_opt_) && defined(SALIERI_DEFINED_Out_writes_to_ptr_opt) +# undef _Out_writes_to_ptr_opt_ +#endif +#if !defined(_Out_writes_to_ptr_opt_) +# define _Out_writes_to_ptr_opt_(p) +# define SALIERI_DEFINED_Out_writes_to_ptr_opt +#endif + +#if defined(_Out_writes_to_ptr_opt_z_) && defined(SALIERI_DEFINED_Out_writes_to_ptr_opt_z) +# undef _Out_writes_to_ptr_opt_z_ +#endif +#if !defined(_Out_writes_to_ptr_opt_z_) +# define _Out_writes_to_ptr_opt_z_(p) +# define SALIERI_DEFINED_Out_writes_to_ptr_opt_z +#endif + +/* Output Pointer Parameters */ + +#if defined(_Outptr_) && defined(SALIERI_DEFINED_Outptr) +# undef _Outptr_ +#endif +#if !defined(_Outptr_) +# define _Outptr_ +# define SALIERI_DEFINED_Outptr +#endif + +#if defined(_Outptr_opt_) && defined(SALIERI_DEFINED_Outptr_opt) +# undef _Outptr_opt_ +#endif +#if !defined(_Outptr_opt_) +# define _Outptr_opt_ +# define SALIERI_DEFINED_Outptr_opt +#endif + +#if defined(_Outptr_result_maybenull_) && defined(SALIERI_DEFINED_Outptr_result_maybenull) +# undef _Outptr_result_maybenull_ +#endif +#if !defined(_Outptr_result_maybenull_) +# define _Outptr_result_maybenull_ +# define SALIERI_DEFINED_Outptr_result_maybenull +#endif + +#if defined(_Outptr_opt_result_maybenull_) && defined(SALIERI_DEFINED_Outptr_opt_result_maybenull) +# undef _Outptr_opt_result_maybenull_ +#endif +#if !defined(_Outptr_opt_result_maybenull_) +# define _Outptr_opt_result_maybenull_ +# define SALIERI_DEFINED_Outptr_opt_result_maybenull +#endif + +#if defined(_Outptr_result_z_) && defined(SALIERI_DEFINED_Outptr_result_z) +# undef _Outptr_result_z_ +#endif +#if !defined(_Outptr_result_z_) +# define _Outptr_result_z_ +# define SALIERI_DEFINED_Outptr_result_z +#endif + +#if defined(_Outptr_opt_result_z_) && defined(SALIERI_DEFINED_Outptr_opt_result_z) +# undef _Outptr_opt_result_z_ +#endif +#if !defined(_Outptr_opt_result_z_) +# define _Outptr_opt_result_z_ +# define SALIERI_DEFINED_Outptr_opt_result_z +#endif + +#if defined(_Outptr_result_maybenull_z_) && defined(SALIERI_DEFINED_Outptr_result_maybenull_z) +# undef _Outptr_result_maybenull_z_ +#endif +#if !defined(_Outptr_result_maybenull_z_) +# define _Outptr_result_maybenull_z_ +# define SALIERI_DEFINED_Outptr_result_maybenull_z +#endif + +#if defined(_Outptr_opt_result_maybenull_z_) && defined(SALIERI_DEFINED_Outptr_opt_result_maybenull_z) +# undef _Outptr_opt_result_maybenull_z_ +#endif +#if !defined(_Outptr_opt_result_maybenull_z_) +# define _Outptr_opt_result_maybenull_z_ +# define SALIERI_DEFINED_Outptr_opt_result_maybenull_z +#endif + +#if defined(_COM_Outptr_) && defined(SALIERI_DEFINED_COM_Outptr) +# undef _COM_Outptr_ +#endif +#if !defined(_COM_Outptr_) +# define _COM_Outptr_ +# define SALIERI_DEFINED_COM_Outptr +#endif + +#if defined(_COM_Outptr_opt_) && defined(SALIERI_DEFINED_COM_Outptr_opt) +# undef _COM_Outptr_opt_ +#endif +#if !defined(_COM_Outptr_opt_) +# define _COM_Outptr_opt_ +# define SALIERI_DEFINED_COM_Outptr_opt +#endif + +#if defined(_COM_Outptr_result_maybenull_) && defined(SALIERI_DEFINED_COM_Outptr_result_maybenull) +# undef _COM_Outptr_result_maybenull_ +#endif +#if !defined(_COM_Outptr_result_maybenull_) +# define _COM_Outptr_result_maybenull_ +# define SALIERI_DEFINED_COM_Outptr_result_maybenull +#endif + +#if defined(_COM_Outptr_opt_result_maybenull_) && defined(SALIERI_DEFINED_COM_Outptr_opt_result_maybenull) +# undef _COM_Outptr_opt_result_maybenull_ +#endif +#if !defined(_COM_Outptr_opt_result_maybenull_) +# define _COM_Outptr_opt_result_maybenull_ +# define SALIERI_DEFINED_COM_Outptr_opt_result_maybenull +#endif + +#if defined(_Outptr_opt_result_maybenull_) && defined(SALIERI_DEFINED_Outptr_opt_result_maybenull) +# undef _Outptr_opt_result_maybenull_ +#endif +#if !defined(_Outptr_opt_result_maybenull_) +# define _Outptr_opt_result_maybenull_ +# define SALIERI_DEFINED_Outptr_opt_result_maybenull +#endif + +#if defined(_Outptr_result_buffer_) && defined(SALIERI_DEFINED_Outptr_result_buffer) +# undef _Outptr_result_buffer_ +#endif +#if !defined(_Outptr_result_buffer_) +# define _Outptr_result_buffer_(s) +# define SALIERI_DEFINED_Outptr_result_buffer +#endif + +#if defined(_Outptr_result_bytebuffer_) && defined(SALIERI_DEFINED_Outptr_result_bytebuffer) +# undef _Outptr_result_bytebuffer_ +#endif +#if !defined(_Outptr_result_bytebuffer_) +# define _Outptr_result_bytebuffer_(s) +# define SALIERI_DEFINED_Outptr_result_bytebuffer +#endif + +#if defined(_Outptr_opt_result_buffer_) && defined(SALIERI_DEFINED_Outptr_opt_result_buffer) +# undef _Outptr_opt_result_buffer_ +#endif +#if !defined(_Outptr_opt_result_buffer_) +# define _Outptr_opt_result_buffer_(s) +# define SALIERI_DEFINED_Outptr_opt_result_buffer +#endif + +#if defined(_Outptr_opt_result_bytebuffer_) && defined(SALIERI_DEFINED_Outptr_opt_result_bytebuffer) +# undef _Outptr_opt_result_bytebuffer_ +#endif +#if !defined(_Outptr_opt_result_bytebuffer_) +# define _Outptr_opt_result_bytebuffer_(s) +# define SALIERI_DEFINED_Outptr_opt_result_bytebuffer +#endif + +#if defined(_Outptr_result_buffer_to_) && defined(SALIERI_DEFINED_Outptr_result_buffer_to) +# undef _Outptr_result_buffer_to_ +#endif +#if !defined(_Outptr_result_buffer_to_) +# define _Outptr_result_buffer_to_(s,c) +# define SALIERI_DEFINED_Outptr_result_buffer_to +#endif + +#if defined(_Outptr_result_bytebuffer_to_) && defined(SALIERI_DEFINED_Outptr_result_bytebuffer_to) +# undef _Outptr_result_bytebuffer_to_ +#endif +#if !defined(_Outptr_result_bytebuffer_to_) +# define _Outptr_result_bytebuffer_to_(s,c) +# define SALIERI_DEFINED_Outptr_result_bytebuffer_to +#endif + +#if defined(_Outptr_opt_result_buffer_to_) && defined(SALIERI_DEFINED_Outptr_opt_result_buffer_to) +# undef _Outptr_opt_result_buffer_to_ +#endif +#if !defined(_Outptr_opt_result_buffer_to_) +# define _Outptr_opt_result_buffer_to_(s,c) +# define SALIERI_DEFINED_Outptr_opt_result_buffer_to +#endif + +#if defined(_Outptr_opt_result_bytebuffer_to_) && defined(SALIERI_DEFINED_Outptr_opt_result_bytebuffer_to) +# undef _Outptr_opt_result_bytebuffer_to_ +#endif +#if !defined(_Outptr_opt_result_bytebuffer_to_) +# define _Outptr_opt_result_bytebuffer_to_(s,c) +# define SALIERI_DEFINED_Outptr_opt_result_bytebuffer_to +#endif + +#if defined(_Result_nullonfailure_) && defined(SALIERI_DEFINED_Result_nullonfailure) +# undef _Result_nullonfailure_ +#endif +#if !defined(_Result_nullonfailure_) +# define _Result_nullonfailure_ +# define SALIERI_DEFINED_Result_nullonfailure +#endif + +#if defined(_Result_zeroonfailure_) && defined(SALIERI_DEFINED_Result_zeroonfailure) +# undef _Result_zeroonfailure_ +#endif +#if !defined(_Result_zeroonfailure_) +# define _Result_zeroonfailure_ +# define SALIERI_DEFINED_Result_zeroonfailure +#endif + +#if defined(_Outptr_result_nullonfailure_) && defined(SALIERI_DEFINED_Outptr_result_nullonfailure) +# undef _Outptr_result_nullonfailure_ +#endif +#if !defined(_Outptr_result_nullonfailure_) +# define _Outptr_result_nullonfailure_ +# define SALIERI_DEFINED_Outptr_result_nullonfailure +#endif + +#if defined(_Outptr_opt_result_nullonfailure_) && defined(SALIERI_DEFINED_Outptr_opt_result_nullonfailure) +# undef _Outptr_opt_result_nullonfailure_ +#endif +#if !defined(_Outptr_opt_result_nullonfailure_) +# define _Outptr_opt_result_nullonfailure_ +# define SALIERI_DEFINED_Outptr_opt_result_nullonfailure +#endif + +#if defined(_Outref_result_nullonfailure_) && defined(SALIERI_DEFINED_Outref_result_nullonfailure) +# undef _Outref_result_nullonfailure_ +#endif +#if !defined(_Outref_result_nullonfailure_) +# define _Outref_result_nullonfailure_ +# define SALIERI_DEFINED_Outref_result_nullonfailure +#endif + +/* Output Reference Parameters */ + +#if defined(_Outref_) && defined(SALIERI_DEFINED_Outref) +# undef _Outref_ +#endif +#if !defined(_Outref_) +# define _Outref_ +# define SALIERI_DEFINED_Outref +#endif + +#if defined(_Outref_result_maybenull_) && defined(SALIERI_DEFINED_Outref_result_maybenull) +# undef _Outref_result_maybenull_ +#endif +#if !defined(_Outref_result_maybenull_) +# define _Outref_result_maybenull_ +# define SALIERI_DEFINED_Outref_result_maybenull +#endif + +#if defined(_Outref_result_buffer_) && defined(SALIERI_DEFINED_Outref_result_buffer) +# undef _Outref_result_buffer_ +#endif +#if !defined(_Outref_result_buffer_) +# define _Outref_result_buffer_(s) +# define SALIERI_DEFINED_Outref_result_buffer +#endif + +#if defined(_Outref_result_bytebuffer_) && defined(SALIERI_DEFINED_Outref_result_bytebuffer) +# undef _Outref_result_bytebuffer_ +#endif +#if !defined(_Outref_result_bytebuffer_) +# define _Outref_result_bytebuffer_(s) +# define SALIERI_DEFINED_Outref_result_bytebuffer +#endif + +#if defined(_Outref_result_buffer_to_) && defined(SALIERI_DEFINED_Outref_result_buffer_to) +# undef _Outref_result_buffer_to_ +#endif +#if !defined(_Outref_result_buffer_to_) +# define _Outref_result_buffer_to_(s,c) +# define SALIERI_DEFINED_Outref_result_buffer_to +#endif + +#if defined(_Outref_result_bytebuffer_to_) && defined(SALIERI_DEFINED_Outref_result_bytebuffer_to) +# undef _Outref_result_bytebuffer_to_ +#endif +#if !defined(_Outref_result_bytebuffer_to_) +# define _Outref_result_bytebuffer_to_(s,c) +# define SALIERI_DEFINED_Outref_result_bytebuffer_to +#endif + +#if defined(_Outref_result_buffer_all_) && defined(SALIERI_DEFINED_Outref_result_buffer_all) +# undef _Outref_result_buffer_all_ +#endif +#if !defined(_Outref_result_buffer_all_) +# define _Outref_result_buffer_all_(s) +# define SALIERI_DEFINED_Outref_result_buffer_all +#endif + +#if defined(_Outref_result_bytebuffer_all_) && defined(SALIERI_DEFINED_Outref_result_bytebuffer_all) +# undef _Outref_result_bytebuffer_all_ +#endif +#if !defined(_Outref_result_bytebuffer_all_) +# define _Outref_result_bytebuffer_all_(s) +# define SALIERI_DEFINED_Outref_result_bytebuffer_all +#endif + +#if defined(_Outref_result_buffer_maybenull_) && defined(SALIERI_DEFINED_Outref_result_buffer_maybenull) +# undef _Outref_result_buffer_maybenull_ +#endif +#if !defined(_Outref_result_buffer_maybenull_) +# define _Outref_result_buffer_maybenull_(s) +# define SALIERI_DEFINED_Outref_result_buffer_maybenull +#endif + +#if defined(_Outref_result_bytebuffer_maybenull_) && defined(SALIERI_DEFINED_Outref_result_bytebuffer_maybenull) +# undef _Outref_result_bytebuffer_maybenull_ +#endif +#if !defined(_Outref_result_bytebuffer_maybenull_) +# define _Outref_result_bytebuffer_maybenull_(s) +# define SALIERI_DEFINED_Outref_result_bytebuffer_maybenull +#endif + +#if defined(_Outref_result_buffer_to_maybenull_) && defined(SALIERI_DEFINED_Outref_result_buffer_to_maybenull) +# undef _Outref_result_buffer_to_maybenull_ +#endif +#if !defined(_Outref_result_buffer_to_maybenull_) +# define _Outref_result_buffer_to_maybenull_(s,c) +# define SALIERI_DEFINED_Outref_result_buffer_to_maybenull +#endif + +#if defined(_Outref_result_bytebuffer_to_maybenull_) && defined(SALIERI_DEFINED_Outref_result_bytebuffer_to_maybenull) +# undef _Outref_result_bytebuffer_to_maybenull_ +#endif +#if !defined(_Outref_result_bytebuffer_to_maybenull_) +# define _Outref_result_bytebuffer_to_maybenull_(s,c) +# define SALIERI_DEFINED_Outref_result_bytebuffer_to_maybenull +#endif + +#if defined(_Outref_result_buffer_all_maybenull_) && defined(SALIERI_DEFINED_Outref_result_buffer_all_maybenull) +# undef _Outref_result_buffer_all_maybenull_ +#endif +#if !defined(_Outref_result_buffer_all_maybenull_) +# define _Outref_result_buffer_all_maybenull_(s) +# define SALIERI_DEFINED_Outref_result_buffer_all_maybenull +#endif + +#if defined(_Outref_result_bytebuffer_all_maybenull_) && defined(SALIERI_DEFINED_Outref_result_bytebuffer_all_maybenull) +# undef _Outref_result_bytebuffer_all_maybenull_ +#endif +#if !defined(_Outref_result_bytebuffer_all_maybenull_) +# define _Outref_result_bytebuffer_all_maybenull_(s) +# define SALIERI_DEFINED_Outref_result_bytebuffer_all_maybenull +#endif + +/* Return Values */ + +#if defined(_Ret_z_) && defined(SALIERI_DEFINED_Ret_z) +# undef _Ret_z_ +#endif +#if !defined(_Ret_z_) +# define _Ret_z_ +# define SALIERI_DEFINED_Ret_z +#endif + +#if defined(_Ret_writes_) && defined(SALIERI_DEFINED_Ret_writes) +# undef _Ret_writes_ +#endif +#if !defined(_Ret_writes_) +# define _Ret_writes_(s) +# define SALIERI_DEFINED_Ret_writes +#endif + +#if defined(_Ret_writes_bytes_) && defined(SALIERI_DEFINED_Ret_writes_bytes) +# undef _Ret_writes_bytes_ +#endif +#if !defined(_Ret_writes_bytes_) +# define _Ret_writes_bytes_(s) +# define SALIERI_DEFINED_Ret_writes_bytes +#endif + +#if defined(_Ret_writes_z_) && defined(SALIERI_DEFINED_Ret_writes_z) +# undef _Ret_writes_z_ +#endif +#if !defined(_Ret_writes_z_) +# define _Ret_writes_z_(s) +# define SALIERI_DEFINED_Ret_writes_z +#endif + +#if defined(_Ret_writes_to_) && defined(SALIERI_DEFINED_Ret_writes_to) +# undef _Ret_writes_to_ +#endif +#if !defined(_Ret_writes_to_) +# define _Ret_writes_to_(s,c) +# define SALIERI_DEFINED_Ret_writes_to +#endif + +#if defined(_Ret_writes_maybenull_) && defined(SALIERI_DEFINED_Ret_writes_maybenull) +# undef _Ret_writes_maybenull_ +#endif +#if !defined(_Ret_writes_maybenull_) +# define _Ret_writes_maybenull_(s) +# define SALIERI_DEFINED_Ret_writes_maybenull +#endif + +#if defined(_Ret_writes_to_maybenull_) && defined(SALIERI_DEFINED_Ret_writes_to_maybenull) +# undef _Ret_writes_to_maybenull_ +#endif +#if !defined(_Ret_writes_to_maybenull_) +# define _Ret_writes_to_maybenull_(s) +# define SALIERI_DEFINED_Ret_writes_to_maybenull +#endif + +#if defined(_Ret_writes_maybenull_z_) && defined(SALIERI_DEFINED_Ret_writes_maybenull_z) +# undef _Ret_writes_maybenull_z_ +#endif +#if !defined(_Ret_writes_maybenull_z_) +# define _Ret_writes_maybenull_z_(s) +# define SALIERI_DEFINED_Ret_writes_maybenull_z +#endif + +#if defined(_Ret_maybenull_) && defined(SALIERI_DEFINED_Ret_maybenull) +# undef _Ret_maybenull_ +#endif +#if !defined(_Ret_maybenull_) +# define _Ret_maybenull_ +# define SALIERI_DEFINED_Ret_maybenull +#endif + +#if defined(_Ret_maybenull_z_) && defined(SALIERI_DEFINED_Ret_maybenull_z) +# undef _Ret_maybenull_z_ +#endif +#if !defined(_Ret_maybenull_z_) +# define _Ret_maybenull_z_ +# define SALIERI_DEFINED_Ret_maybenull_z +#endif + +#if defined(_Ret_null_) && defined(SALIERI_DEFINED_Ret_null) +# undef _Ret_null_ +#endif +#if !defined(_Ret_null_) +# define _Ret_null_ +# define SALIERI_DEFINED_Ret_null +#endif + +#if defined(_Ret_notnull_) && defined(SALIERI_DEFINED_Ret_notnull) +# undef _Ret_notnull_ +#endif +#if !defined(_Ret_notnull_) +# define _Ret_notnull_ +# define SALIERI_DEFINED_Ret_notnull +#endif + +#if defined(_Ret_writes_bytes_to_) && defined(SALIERI_DEFINED_Ret_writes_bytes_to) +# undef _Ret_writes_bytes_to_ +#endif +#if !defined(_Ret_writes_bytes_to_) +# define _Ret_writes_bytes_to_ +# define SALIERI_DEFINED_Ret_writes_bytes_to +#endif + +#if defined(_Ret_writes_bytes_to_) && defined(SALIERI_DEFINED_Ret_writes_bytes_to) +# undef _Ret_writes_bytes_to_ +#endif +#if !defined(_Ret_writes_bytes_to_) +# define _Ret_writes_bytes_to_ +# define SALIERI_DEFINED_Ret_writes_bytes_to +#endif + +#if defined(_Ret_writes_bytes_maybenull_) && defined(SALIERI_DEFINED_Ret_writes_bytes_maybenull) +# undef _Ret_writes_bytes_maybenull_ +#endif +#if !defined(_Ret_writes_bytes_maybenull_) +# define _Ret_writes_bytes_maybenull_ +# define SALIERI_DEFINED_Ret_writes_bytes_maybenull +#endif + +#if defined(_Ret_writes_bytes_to_maybenull_) && defined(SALIERI_DEFINED_Ret_writes_bytes_to_maybenull) +# undef _Ret_writes_bytes_to_maybenull_ +#endif +#if !defined(_Ret_writes_bytes_to_maybenull_) +# define _Ret_writes_bytes_to_maybenull_ +# define SALIERI_DEFINED_Ret_writes_bytes_to_maybenull +#endif + +/* Other Common Annotations */ + +#if defined(_In_range_) && defined(SALIERI_DEFINED_In_range) +# undef _In_range_ +#endif +#if !defined(_In_range_) +# define _In_range_(low, hi) +# define SALIERI_DEFINED_In_range +#endif + +#if defined(_Out_range_) && defined(SALIERI_DEFINED_Out_range) +# undef _Out_range_ +#endif +#if !defined(_Out_range_) +# define _Out_range_(low, hi) +# define SALIERI_DEFINED_Out_range +#endif + +#if defined(_Ret_range_) && defined(SALIERI_DEFINED_Ret_range) +# undef _Ret_range_ +#endif +#if !defined(_Ret_range_) +# define _Ret_range_(low, hi) +# define SALIERI_DEFINED_Ret_range +#endif + +#if defined(_Deref_in_range_) && defined(SALIERI_DEFINED_Deref_in_range) +# undef _Deref_in_range_ +#endif +#if !defined(_Deref_in_range_) +# define _Deref_in_range_(low, hi) +# define SALIERI_DEFINED_Deref_in_range +#endif + +#if defined(_Deref_out_range_) && defined(SALIERI_DEFINED_Deref_out_range) +# undef _Deref_out_range_ +#endif +#if !defined(_Deref_out_range_) +# define _Deref_out_range_(low, hi) +# define SALIERI_DEFINED_Deref_out_range +#endif + +#if defined(_Deref_inout_range_) && defined(SALIERI_DEFINED_Deref_inout_range) +# undef _Deref_inout_range_ +#endif +#if !defined(_Deref_inout_range_) +# define _Deref_inout_range_(low, hi) +# define SALIERI_DEFINED_Deref_inout_range +#endif + +#if defined(_Field_range_) && defined(SALIERI_DEFINED_Field_range) +# undef _Field_range_ +#endif +#if !defined(_Field_range_) +# define _Field_range_(low, hi) +# define SALIERI_DEFINED_Field_range +#endif + +#if defined(_Pre_equal_to_) && defined(SALIERI_DEFINED_Pre_equal_to) +# undef _Pre_equal_to_ +#endif +#if !defined(_Pre_equal_to_) +# define _Pre_equal_to_(expr) +# define SALIERI_DEFINED_Pre_equal_to +#endif + +#if defined(_Post_equal_to_) && defined(SALIERI_DEFINED_Post_equal_to) +# undef _Post_equal_to_ +#endif +#if !defined(_Post_equal_to_) +# define _Post_equal_to_(expr) +# define SALIERI_DEFINED_Post_equal_to +#endif + +#if defined(_Struct_size_bytes_) && defined(SALIERI_DEFINED_Struct_size_bytes) +# undef _Struct_size_bytes_ +#endif +#if !defined(_Struct_size_bytes_) +# define _Struct_size_bytes_(size) +# define SALIERI_DEFINED_Struct_size_bytes +#endif + +/* Annotating Function Behavior + * + * https://msdn.microsoft.com/en-us/library/jj159529.aspx + *****/ + +#if defined(_Called_from_function_class_) && defined(SALIERI_DEFINED_Called_from_function_class) +# undef _Called_from_function_class_ +#endif +#if !defined(_Called_from_function_class_) +# define _Called_from_function_class_(name) +# define SALIERI_DEFINED_Called_from_function_class +#endif + +#if defined(_Check_return_) && defined(SALIERI_DEFINED_Check_return) +# undef _Check_return_ +#endif +#if !defined(_Check_return_) +# define _Check_return_ +# define SALIERI_DEFINED_Check_return +#endif + +#if defined(_Function_class_) && defined(SALIERI_DEFINED_Function_class) +# undef _Function_class_ +#endif +#if !defined(_Function_class_) +# define _Function_class_(name) +# define SALIERI_DEFINED_Function_class +#endif + +#if defined(_Raises_SEH_exception_) && defined(SALIERI_DEFINED_Raises_SEH_exception) +# undef _Raises_SEH_exception_ +#endif +#if !defined(_Raises_SEH_exception_) +# define _Raises_SEH_exception_ +# define SALIERI_DEFINED_Raises_SEH_exception +#endif + +#if defined(_Must_inspect_result_) && defined(SALIERI_DEFINED_Must_inspect_result) +# undef _Must_inspect_result_ +#endif +#if !defined(_Must_inspect_result_) +# define _Must_inspect_result_ +# define SALIERI_DEFINED_Must_inspect_result +#endif + +#if defined(_Use_decl_annotations_) && defined(SALIERI_DEFINED_Use_decl_annotations) +# undef _Use_decl_annotations_ +#endif +#if !defined(_Use_decl_annotations_) +# define _Use_decl_annotations_ +# define SALIERI_DEFINED_Use_decl_annotations +#endif + +#if defined(_Always_) && defined(SALIERI_DEFINED_Always) +# undef _Always_ +#endif +#if !defined(_Always_) +# define _Always_(anno_list) +# define SALIERI_DEFINED_Always +#endif + +#if defined(_On_failure_) && defined(SALIERI_DEFINED_On_failure) +# undef _On_failure_ +#endif +#if !defined(_On_failure_) +# define _On_failure_(anno_list) +# define SALIERI_DEFINED_On_failure +#endif + +#if defined(_Return_type_success_) && defined(SALIERI_DEFINED_Return_type_success) +# undef _Return_type_success_ +#endif +#if !defined(_Return_type_success_) +# define _Return_type_success_(expr) +# define SALIERI_DEFINED_Return_type_success +#endif + +#if defined(_Success_) && defined(SALIERI_DEFINED_Success) +# undef _Success_ +#endif +#if !defined(_Success_) +# define _Success_(expr) +# define SALIERI_DEFINED_Success +#endif + +/* Annotating Structs and Classes + * + * https://msdn.microsoft.com/en-us/library/jj159528.aspx + *****/ + +#if defined(_Field_range_) && defined(SALIERI_DEFINED_Field_range) +# undef _Field_range_ +#endif +#if !defined(_Field_range_) +# define _Field_range_(low, high) +# define SALIERI_DEFINED_Field_range +#endif + +#if defined(_Field_size_) && defined(SALIERI_DEFINED_Field_size) +# undef _Field_size_ +#endif +#if !defined(_Field_size_) +# define _Field_size_(size) +# define SALIERI_DEFINED_Field_size +#endif + +#if defined(_Field_size_part_) && defined(SALIERI_DEFINED_Field_size_part) +# undef _Field_size_part_ +#endif +#if !defined(_Field_size_part_) +# define _Field_size_part_(size) +# define SALIERI_DEFINED_Field_size_part +#endif + +#if defined(_Field_size_opt_) && defined(SALIERI_DEFINED_Field_size_opt) +# undef _Field_size_opt_ +#endif +#if !defined(_Field_size_opt_) +# define _Field_size_opt_(size) +# define SALIERI_DEFINED_Field_size_opt +#endif + +#if defined(_Field_size_bytes_) && defined(SALIERI_DEFINED_Field_size_bytes) +# undef _Field_size_bytes_ +#endif +#if !defined(_Field_size_bytes_) +# define _Field_size_bytes_(size) +# define SALIERI_DEFINED_Field_size_bytes +#endif + +#if defined(_Field_size_bytes_opt_) && defined(SALIERI_DEFINED_Field_size_bytes_opt) +# undef _Field_size_bytes_opt_ +#endif +#if !defined(_Field_size_bytes_opt_) +# define _Field_size_bytes_opt_(size) +# define SALIERI_DEFINED_Field_size_bytes_opt +#endif + +#if defined(_Field_size_part_) && defined(SALIERI_DEFINED_Field_size_part) +# undef _Field_size_part_ +#endif +#if !defined(_Field_size_part_) +# define _Field_size_part_(size, count) +# define SALIERI_DEFINED_Field_size_part +#endif + +#if defined(_Field_size_part_opt_) && defined(SALIERI_DEFINED_Field_size_part_opt) +# undef _Field_size_part_opt_ +#endif +#if !defined(_Field_size_part_opt_) +# define _Field_size_part_opt_(size, count) +# define SALIERI_DEFINED_Field_size_part_opt +#endif + +#if defined(_Field_size_bytes_part_) && defined(SALIERI_DEFINED_Field_size_bytes_part) +# undef _Field_size_bytes_part_ +#endif +#if !defined(_Field_size_bytes_part_) +# define _Field_size_bytes_part_(size, count) +# define SALIERI_DEFINED_Field_size_bytes_part +#endif + +#if defined(_Field_size_bytes_part_opt_) && defined(SALIERI_DEFINED_Field_size_bytes_part_opt) +# undef _Field_size_bytes_part_opt_ +#endif +#if !defined(_Field_size_bytes_part_opt_) +# define _Field_size_bytes_part_opt_(size, count) +# define SALIERI_DEFINED_Field_size_bytes_part_opt +#endif + +#if defined(_Field_size_full_) && defined(SALIERI_DEFINED_Field_size_full) +# undef _Field_size_full_ +#endif +#if !defined(_Field_size_full_) +# define _Field_size_full_(size) +# define SALIERI_DEFINED_Field_size_full +#endif + +#if defined(_Field_size_full_opt_) && defined(SALIERI_DEFINED_Field_size_full_opt) +# undef _Field_size_full_opt_ +#endif +#if !defined(_Field_size_full_opt_) +# define _Field_size_full_opt_(size) +# define SALIERI_DEFINED_Field_size_full_opt +#endif + +#if defined(_Field_size_bytes_full_) && defined(SALIERI_DEFINED_Field_size_bytes_full) +# undef _Field_size_bytes_full_ +#endif +#if !defined(_Field_size_bytes_full_) +# define _Field_size_bytes_full_(size) +# define SALIERI_DEFINED_Field_size_bytes_full +#endif + +#if defined(_Field_size_bytes_full_opt_) && defined(SALIERI_DEFINED_Field_size_bytes_full_opt) +# undef _Field_size_bytes_full_opt_ +#endif +#if !defined(_Field_size_bytes_full_opt_) +# define _Field_size_bytes_full_opt_(size) +# define SALIERI_DEFINED_Field_size_bytes_full_opt +#endif + +#if defined(_Struct_size_bytes_) && defined(SALIERI_DEFINED_Struct_size_bytes) +# undef _Struct_size_bytes_ +#endif +#if !defined(_Struct_size_bytes_) +# define _Struct_size_bytes_(size) +# define SALIERI_DEFINED_Struct_size_bytes +#endif + +/* Annotating Locking Behavior + * + * https://msdn.microsoft.com/en-us/library/hh916381.aspx + *****/ + +#if defined(_Acquires_exclusive_lock_) && defined(SALIERI_DEFINED_Acquires_exclusive_lock) +# undef _Acquires_exclusive_lock_ +#endif +#if !defined(_Acquires_exclusive_lock_) +# define _Acquires_exclusive_lock_(expr) +# define SALIERI_DEFINED_Acquires_exclusive_lock +#endif + +#if defined(_Acquires_lock_) && defined(SALIERI_DEFINED_Acquires_lock) +# undef _Acquires_lock_ +#endif +#if !defined(_Acquires_lock_) +# define _Acquires_lock_(expr) +# define SALIERI_DEFINED_Acquires_lock +#endif + +#if defined(_Acquires_nonreentrant_lock_) && defined(SALIERI_DEFINED_Acquires_nonreentrant_lock) +# undef _Acquires_nonreentrant_lock_ +#endif +#if !defined(_Acquires_nonreentrant_lock_) +# define _Acquires_nonreentrant_lock_(expr) +# define SALIERI_DEFINED_Acquires_nonreentrant_lock +#endif + +#if defined(_Acquires_shared_lock_) && defined(SALIERI_DEFINED_Acquires_shared_lock) +# undef _Acquires_shared_lock_ +#endif +#if !defined(_Acquires_shared_lock_) +# define _Acquires_shared_lock_(expr) +# define SALIERI_DEFINED_Acquires_shared_lock +#endif + +#if defined(_Create_lock_level_) && defined(SALIERI_DEFINED_Create_lock_level) +# undef _Create_lock_level_ +#endif +#if !defined(_Create_lock_level_) +# define _Create_lock_level_(name) +# define SALIERI_DEFINED_Create_lock_level +#endif + +#if defined(_Has_lock_kind_) && defined(SALIERI_DEFINED_Has_lock_kind) +# undef _Has_lock_kind_ +#endif +#if !defined(_Has_lock_kind_) +# define _Has_lock_kind_(kind) +# define SALIERI_DEFINED_Has_lock_kind +#endif + +#if defined(_Has_lock_level_) && defined(SALIERI_DEFINED_Has_lock_level) +# undef _Has_lock_level_ +#endif +#if !defined(_Has_lock_level_) +# define _Has_lock_level_(name) +# define SALIERI_DEFINED_Has_lock_level +#endif + +#if defined(_Lock_level_order_) && defined(SALIERI_DEFINED_Lock_level_order) +# undef _Lock_level_order_ +#endif +#if !defined(_Lock_level_order_) +# define _Lock_level_order_(name1, name2) +# define SALIERI_DEFINED_Lock_level_order +#endif + +#if defined(_Post_same_lock_) && defined(SALIERI_DEFINED_Post_same_lock) +# undef _Post_same_lock_ +#endif +#if !defined(_Post_same_lock_) +# define _Post_same_lock_(expr1, expr2) +# define SALIERI_DEFINED_Post_same_lock +#endif + +#if defined(_Releases_exclusive_lock_) && defined(SALIERI_DEFINED_Releases_exclusive_lock) +# undef _Releases_exclusive_lock_ +#endif +#if !defined(_Releases_exclusive_lock_) +# define _Releases_exclusive_lock_(expr) +# define SALIERI_DEFINED_Releases_exclusive_lock +#endif + +#if defined(_Releases_lock_) && defined(SALIERI_DEFINED_Releases_lock) +# undef _Releases_lock_ +#endif +#if !defined(_Releases_lock_) +# define _Releases_lock_(expr) +# define SALIERI_DEFINED_Releases_lock +#endif + +#if defined(_Releases_nonreentrant_lock_) && defined(SALIERI_DEFINED_Releases_nonreentrant_lock) +# undef _Releases_nonreentrant_lock_ +#endif +#if !defined(_Releases_nonreentrant_lock_) +# define _Releases_nonreentrant_lock_(expr) +# define SALIERI_DEFINED_Releases_nonreentrant_lock +#endif + +#if defined(_Releases_shared_lock_) && defined(SALIERI_DEFINED_Releases_shared_lock) +# undef _Releases_shared_lock_ +#endif +#if !defined(_Releases_shared_lock_) +# define _Releases_shared_lock_(expr) +# define SALIERI_DEFINED_Releases_shared_lock +#endif + +#if defined(_Requires_lock_held_) && defined(SALIERI_DEFINED_Requires_lock_held) +# undef _Requires_lock_held_ +#endif +#if !defined(_Requires_lock_held_) +# define _Requires_lock_held_(expr) +# define SALIERI_DEFINED_Requires_lock_held +#endif + +#if defined(_Requires_lock_not_held_) && defined(SALIERI_DEFINED_Requires_lock_not_held) +# undef _Requires_lock_not_held_ +#endif +#if !defined(_Requires_lock_not_held_) +# define _Requires_lock_not_held_(expr) +# define SALIERI_DEFINED_Requires_lock_not_held +#endif + +#if defined(_Requires_no_locks_held_) && defined(SALIERI_DEFINED_Requires_no_locks_held) +# undef _Requires_no_locks_held_ +#endif +#if !defined(_Requires_no_locks_held_) +# define _Requires_no_locks_held_ +# define SALIERI_DEFINED_Requires_no_locks_held +#endif + +#if defined(_Requires_shared_lock_held_) && defined(SALIERI_DEFINED_Requires_shared_lock_held) +# undef _Requires_shared_lock_held_ +#endif +#if !defined(_Requires_shared_lock_held_) +# define _Requires_shared_lock_held_(expr) +# define SALIERI_DEFINED_Requires_shared_lock_held +#endif + +#if defined(_Requires_exclusive_lock_held_) && defined(SALIERI_DEFINED_Requires_exclusive_lock_held) +# undef _Requires_exclusive_lock_held_ +#endif +#if !defined(_Requires_exclusive_lock_held_) +# define _Requires_exclusive_lock_held_(expr) +# define SALIERI_DEFINED_Requires_exclusive_lock_held +#endif + +/* Shared Data Access Annotations */ + +#if defined(_Guarded_by_) && defined(SALIERI_DEFINED_Guarded_by) +# undef _Guarded_by_ +#endif +#if !defined(_Guarded_by_) +# define _Guarded_by_(expr) +# define SALIERI_DEFINED_Guarded_by +#endif + +#if defined(_Interlocked_) && defined(SALIERI_DEFINED_Interlocked) +# undef _Interlocked_ +#endif +#if !defined(_Interlocked_) +# define _Interlocked_ +# define SALIERI_DEFINED_Interlocked +#endif + +#if defined(_Interlocked_operand_) && defined(SALIERI_DEFINED_Interlocked_operand) +# undef _Interlocked_operand_ +#endif +#if !defined(_Interlocked_operand_) +# define _Interlocked_operand_ +# define SALIERI_DEFINED_Interlocked_operand +#endif + +#if defined(_Write_guarded_by_) && defined(SALIERI_DEFINED_Write_guarded_by) +# undef _Write_guarded_by_ +#endif +#if !defined(_Write_guarded_by_) +# define _Write_guarded_by_(expr) +# define SALIERI_DEFINED_Write_guarded_by +#endif + +/* Specifying When and Where an Annotation Applies + * + * https://msdn.microsoft.com/en-us/library/jj159526.aspx + *****/ + +#if defined(_At_) && defined(SALIERI_DEFINED_At) +# undef _At_ +#endif +#if !defined(_At_) +# define _At_(expr, anno_list) +# define SALIERI_DEFINED_At +#endif + +#if defined(_At_buffer_) && defined(SALIERI_DEFINED_At_buffer) +# undef _At_buffer_ +#endif +#if !defined(_At_buffer_) +# define _At_buffer_(expr, iter, elem_count, anno_list) +# define SALIERI_DEFINED_At_buffer +#endif + +#if defined(_Group_) && defined(SALIERI_DEFINED_Group) +# undef _Group_ +#endif +#if !defined(_Group_) +# define _Group_(anno_list) +# define SALIERI_DEFINED_Group +#endif + +#if defined(_When_) && defined(SALIERI_DEFINED_When) +# undef _When_ +#endif +#if !defined(_When_) +# define _When_(expr, anno_list) +# define SALIERI_DEFINED_When +#endif + +/* Intrinsic Functions + * + * https://msdn.microsoft.com/en-us/library/jj159527.aspx + *****/ + +/* General Purpose */ + +#if defined(_Curr_) && defined(SALIERI_DEFINED_Curr) +# undef _Curr_ +#endif +#if !defined(_Curr_) +# define _Curr_ +# define SALIERI_DEFINED_Curr +#endif + +#if defined(_Inexpressible_) && defined(SALIERI_DEFINED_Inexpressible) +# undef _Inexpressible_ +#endif +#if !defined(_Inexpressible_) +# define _Inexpressible_(expr) +# define SALIERI_DEFINED_Inexpressible +#endif + +#if defined(_Nullterm_length_) && defined(SALIERI_DEFINED_Nullterm_length) +# undef _Nullterm_length_ +#endif +#if !defined(_Nullterm_length_) +# define _Nullterm_length_(param) +# define SALIERI_DEFINED_Nullterm_length +#endif + +#if defined(_Old_) && defined(SALIERI_DEFINED_Old) +# undef _Old_ +#endif +#if !defined(_Old_) +# define _Old_(expr) +# define SALIERI_DEFINED_Old +#endif + +#if defined(_Param_) && defined(SALIERI_DEFINED_Param) +# undef _Param_ +#endif +#if !defined(_Param_) +# define _Param_(n) +# define SALIERI_DEFINED_Param +#endif + +/* String Specific */ + +#if defined(_String_length_) && defined(SALIERI_DEFINED_String_length) +# undef _String_length_ +#endif +#if !defined(_String_length_) +# define _String_length_(param) +# define SALIERI_DEFINED_String_length +#endif + +#if defined(SALIERI_VERSION) +# undef SALIERI_VERSION +#endif + +#define SALIERI_VERSION 1 + +#endif /* !defined(SALIERI_VERSION) || (SALIERI_VERSION < X) */