rustpython_common/
macros.rs1#[macro_export]
4macro_rules! suppress_iph {
5 ($e:expr) => {
6 $crate::__suppress_iph_impl!($e)
7 };
8}
9
10#[macro_export]
11#[doc(hidden)]
12#[cfg(all(windows, target_env = "msvc"))]
13macro_rules! __suppress_iph_impl {
14 ($e:expr) => {{
15 let old = $crate::__macro_private::_set_thread_local_invalid_parameter_handler(
16 $crate::__macro_private::silent_iph_handler,
17 );
18 let ret = $e;
19 $crate::__macro_private::_set_thread_local_invalid_parameter_handler(old);
20 ret
21 }};
22}
23
24#[cfg(not(all(windows, target_env = "msvc")))]
25#[macro_export]
26#[doc(hidden)]
27macro_rules! __suppress_iph_impl {
28 ($e:expr) => {
29 $e
30 };
31}
32
33#[doc(hidden)]
34pub mod __macro_private {
35 #[cfg(target_env = "msvc")]
36 type InvalidParamHandler = extern "C" fn(
37 *const libc::wchar_t,
38 *const libc::wchar_t,
39 *const libc::wchar_t,
40 libc::c_uint,
41 libc::uintptr_t,
42 );
43 #[cfg(target_env = "msvc")]
44 extern "C" {
45 pub fn _set_thread_local_invalid_parameter_handler(
46 pNew: InvalidParamHandler,
47 ) -> InvalidParamHandler;
48 }
49
50 #[cfg(target_env = "msvc")]
51 pub extern "C" fn silent_iph_handler(
52 _: *const libc::wchar_t,
53 _: *const libc::wchar_t,
54 _: *const libc::wchar_t,
55 _: libc::c_uint,
56 _: libc::uintptr_t,
57 ) {
58 }
59}