diff --git a/bindgen-tests/tests/expectations/tests/macro-cast.rs b/bindgen-tests/tests/expectations/tests/macro-cast.rs new file mode 100644 index 0000000000..0631cd9560 --- /dev/null +++ b/bindgen-tests/tests/expectations/tests/macro-cast.rs @@ -0,0 +1,13 @@ +#![allow( + dead_code, + non_snake_case, + non_camel_case_types, + non_upper_case_globals +)] + +pub const ULONG_MAX: u32 = 4294967295; +pub const portMAX_DELAY: TickType_t = 4294967295u32 as TickType_t; +pub const NEG_TO_POS: ::std::os::raw::c_uint = -1i8 as ::std::os::raw::c_uint; +pub const BIG_TO_SMALL: ::std::os::raw::c_ushort = + 4294967295u32 as ::std::os::raw::c_ushort; +pub type TickType_t = ::std::os::raw::c_ulong; diff --git a/bindgen-tests/tests/expectations/tests/macro-do-while.rs b/bindgen-tests/tests/expectations/tests/macro-do-while.rs new file mode 100644 index 0000000000..408e6322d9 --- /dev/null +++ b/bindgen-tests/tests/expectations/tests/macro-do-while.rs @@ -0,0 +1,28 @@ +#![allow( + dead_code, + non_snake_case, + non_camel_case_types, + non_upper_case_globals +)] + +#[allow(non_snake_case, unused_mut)] +#[inline(always)] +pub unsafe extern "C" fn vTaskDelayUntil( + mut pxPreviousWakeTime: ::std::os::raw::c_int, + mut xTimeIncrement: ::std::os::raw::c_int, +) { + loop { + { + drop(xTaskDelayUntil(pxPreviousWakeTime, xTimeIncrement)) + }; + if 0 == Default::default() { + break; + } + } +} +extern "C" { + pub fn xTaskDelayUntil( + arg1: ::std::os::raw::c_int, + arg2: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} diff --git a/bindgen-tests/tests/expectations/tests/macro-func-arg-variable-same-name.rs b/bindgen-tests/tests/expectations/tests/macro-func-arg-variable-same-name.rs new file mode 100644 index 0000000000..94e70e5cf8 --- /dev/null +++ b/bindgen-tests/tests/expectations/tests/macro-func-arg-variable-same-name.rs @@ -0,0 +1,17 @@ +#![allow( + dead_code, + non_snake_case, + non_camel_case_types, + non_upper_case_globals +)] + +pub const y: u32 = 2; +#[doc(hidden)] +#[macro_export] +macro_rules! __cmacro__f3 { + ($ x : expr) => { + 4 + }; +} +pub use __cmacro__f3 as f3; +pub const x: u32 = 2; diff --git a/bindgen-tests/tests/expectations/tests/macro-func-nested.rs b/bindgen-tests/tests/expectations/tests/macro-func-nested.rs new file mode 100644 index 0000000000..0f6edc99ee --- /dev/null +++ b/bindgen-tests/tests/expectations/tests/macro-func-nested.rs @@ -0,0 +1,23 @@ +#![allow( + dead_code, + non_snake_case, + non_camel_case_types, + non_upper_case_globals +)] + +#[doc(hidden)] +#[macro_export] +macro_rules! __cmacro__f1 { + ($ x : expr) => { + $x * 2 + }; +} +pub use __cmacro__f1 as f1; +#[doc(hidden)] +#[macro_export] +macro_rules! __cmacro__f2 { + ($ y : expr) => { + $y * ($y * 2) + }; +} +pub use __cmacro__f2 as f2; diff --git a/bindgen-tests/tests/expectations/tests/macro-macos-limits.rs b/bindgen-tests/tests/expectations/tests/macro-macos-limits.rs new file mode 100644 index 0000000000..bc777d40d1 --- /dev/null +++ b/bindgen-tests/tests/expectations/tests/macro-macos-limits.rs @@ -0,0 +1,31 @@ +#![allow( + dead_code, + non_snake_case, + non_camel_case_types, + non_upper_case_globals +)] + +pub const CHAR_BIT: u32 = 8; +pub const MB_LEN_MAX: u32 = 1; +pub const SCHAR_MIN: i32 = -128; +pub const SCHAR_MAX: u32 = 127; +pub const UCHAR_MAX: u32 = 255; +pub const CHAR_MIN: i32 = -128; +pub const CHAR_MAX: u32 = 127; +pub const SHRT_MIN: i32 = -32768; +pub const SHRT_MAX: u32 = 32767; +pub const USHRT_MAX: u32 = 65535; +pub const INT_MIN: ::std::os::raw::c_int = -::std::os::raw::c_int::MAX - 1; +pub const INT_MAX: ::std::os::raw::c_int = ::std::os::raw::c_int::MAX; +pub const UINT_MAX: ::std::os::raw::c_uint = + ::std::os::raw::c_int::MAX as ::std::os::raw::c_uint * 2 + 1; +pub const LONG_MIN: ::std::os::raw::c_long = -::std::os::raw::c_long::MAX - 1; +pub const LONG_MAX: ::std::os::raw::c_long = ::std::os::raw::c_long::MAX; +pub const ULONG_MAX: ::std::os::raw::c_ulong = + ::std::os::raw::c_long::MAX as ::std::os::raw::c_ulong * 2 + 1; +pub const LONG_LONG_MIN: ::std::os::raw::c_longlong = + -::std::os::raw::c_longlong::MAX - 1; +pub const LONG_LONG_MAX: ::std::os::raw::c_longlong = + ::std::os::raw::c_longlong::MAX; +pub const ULONG_LONG_MAX: ::std::os::raw::c_ulonglong = + ::std::os::raw::c_longlong::MAX as ::std::os::raw::c_ulonglong * 2 + 1; diff --git a/bindgen-tests/tests/expectations/tests/func_wrapper.rs b/bindgen-tests/tests/expectations/tests/macro_func_wrapper.rs similarity index 100% rename from bindgen-tests/tests/expectations/tests/func_wrapper.rs rename to bindgen-tests/tests/expectations/tests/macro_func_wrapper.rs diff --git a/bindgen-tests/tests/expectations/tests/memory_barrier.rs b/bindgen-tests/tests/expectations/tests/macro_memory_barrier.rs similarity index 100% rename from bindgen-tests/tests/expectations/tests/memory_barrier.rs rename to bindgen-tests/tests/expectations/tests/macro_memory_barrier.rs diff --git a/bindgen-tests/tests/headers/macro-cast.h b/bindgen-tests/tests/headers/macro-cast.h new file mode 100644 index 0000000000..0b42d3eaf0 --- /dev/null +++ b/bindgen-tests/tests/headers/macro-cast.h @@ -0,0 +1,7 @@ +#define ULONG_MAX 4294967295 + +typedef unsigned long TickType_t; +#define portMAX_DELAY (TickType_t) ULONG_MAX + +#define NEG_TO_POS (unsigned int) -1 +#define BIG_TO_SMALL (unsigned short) ULONG_MAX diff --git a/bindgen-tests/tests/headers/macro-do-while.h b/bindgen-tests/tests/headers/macro-do-while.h new file mode 100644 index 0000000000..7f95afebc8 --- /dev/null +++ b/bindgen-tests/tests/headers/macro-do-while.h @@ -0,0 +1,6 @@ +int xTaskDelayUntil(int, int); + +#define vTaskDelayUntil( pxPreviousWakeTime, xTimeIncrement ) \ + do { \ + ( void ) xTaskDelayUntil( ( pxPreviousWakeTime ), ( xTimeIncrement ) ); \ + } while( 0 ) diff --git a/bindgen-tests/tests/headers/macro-func-arg-variable-same-name.h b/bindgen-tests/tests/headers/macro-func-arg-variable-same-name.h new file mode 100644 index 0000000000..172b6a4a86 --- /dev/null +++ b/bindgen-tests/tests/headers/macro-func-arg-variable-same-name.h @@ -0,0 +1,6 @@ +// The `x` argument of the `f3` function-like macro +// and the `x` in the nested `y` macro should be treated +// as different variables. +#define y x +#define f3(x) y + y +#define x 2 diff --git a/bindgen-tests/tests/headers/macro-func-nested.h b/bindgen-tests/tests/headers/macro-func-nested.h new file mode 100644 index 0000000000..5a5a90848b --- /dev/null +++ b/bindgen-tests/tests/headers/macro-func-nested.h @@ -0,0 +1,3 @@ +// The `f1` macro call in `f2` should be expanded. +#define f1(x) x * 2 +#define f2(y) y * f1(y) diff --git a/bindgen-tests/tests/headers/macro-macos-limits.h b/bindgen-tests/tests/headers/macro-macos-limits.h new file mode 100644 index 0000000000..a2edff0afb --- /dev/null +++ b/bindgen-tests/tests/headers/macro-macos-limits.h @@ -0,0 +1,83 @@ +/* Number of bits in a `char'. */ +#undef CHAR_BIT +#define CHAR_BIT 8 + +/* Maximum length of a multibyte character. */ +#ifndef MB_LEN_MAX +#define MB_LEN_MAX 1 +#endif + +/* Minimum and maximum values a `signed char' can hold. */ +#undef SCHAR_MIN +#define SCHAR_MIN (-128) +#undef SCHAR_MAX +#define SCHAR_MAX 127 + +/* Maximum value an `unsigned char' can hold. (Minimum is 0). */ +#undef UCHAR_MAX +#define UCHAR_MAX 255 + +/* Minimum and maximum values a `char' can hold. */ +#ifdef __CHAR_UNSIGNED__ +#undef CHAR_MIN +#define CHAR_MIN 0 +#undef CHAR_MAX +#define CHAR_MAX 255 +#else +#undef CHAR_MIN +#define CHAR_MIN (-128) +#undef CHAR_MAX +#define CHAR_MAX 127 +#endif + +/* Minimum and maximum values a `signed short int' can hold. */ +#undef SHRT_MIN +#define SHRT_MIN (-32768) +#undef SHRT_MAX +#define SHRT_MAX 32767 + +/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ +#undef USHRT_MAX +#define USHRT_MAX 65535 + +/* Minimum and maximum values a `signed int' can hold. */ +#ifndef __INT_MAX__ +#define __INT_MAX__ 2147483647 +#endif +#undef INT_MIN +#define INT_MIN (-INT_MAX-1) +#undef INT_MAX +#define INT_MAX __INT_MAX__ + +/* Maximum value an `unsigned int' can hold. (Minimum is 0). */ +#undef UINT_MAX +#define UINT_MAX (INT_MAX * 2U + 1) + +/* Minimum and maximum values a `signed long int' can hold. + (Same as `int'). */ +#ifndef __LONG_MAX__ +#define __LONG_MAX__ 2147483647L +#endif +#undef LONG_MIN +#define LONG_MIN (-LONG_MAX-1) +#undef LONG_MAX +#define LONG_MAX __LONG_MAX__ + +/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */ +#undef ULONG_MAX +#define ULONG_MAX (LONG_MAX * 2UL + 1) + +#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__) +/* Minimum and maximum values a `signed long long int' can hold. */ +#ifndef __LONG_LONG_MAX__ +#define __LONG_LONG_MAX__ 9223372036854775807LL +#endif +#undef LONG_LONG_MIN +#define LONG_LONG_MIN (-LONG_LONG_MAX-1) +#undef LONG_LONG_MAX +#define LONG_LONG_MAX __LONG_LONG_MAX__ + +/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ +#undef ULONG_LONG_MAX +#define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1) +#endif diff --git a/bindgen-tests/tests/headers/func_wrapper.h b/bindgen-tests/tests/headers/macro_func_wrapper.h similarity index 100% rename from bindgen-tests/tests/headers/func_wrapper.h rename to bindgen-tests/tests/headers/macro_func_wrapper.h diff --git a/bindgen-tests/tests/headers/memory_barrier.h b/bindgen-tests/tests/headers/macro_memory_barrier.h similarity index 100% rename from bindgen-tests/tests/headers/memory_barrier.h rename to bindgen-tests/tests/headers/macro_memory_barrier.h