| #![crate_type = "cdylib"] | |
| extern "C" { | |
| fn observe(ptr: *const u8, len: usize); | |
| } | |
| macro_rules! s { | |
| ( $( $f:ident -> $t:ty );* $(;)* ) => { | |
| $( | |
| extern "C" { | |
| fn $f() -> $t; | |
| } | |
| let s = $f().to_string(); | |
| observe(s.as_ptr(), s.len()); | |
| )* | |
| }; | |
| } | |
| #[no_mangle] | |
| pub unsafe extern "C" fn foo() { | |
| s! { | |
| get_u8 -> u8; | |
| get_i8 -> i8; | |
| get_u16 -> u16; | |
| get_i16 -> i16; | |
| get_u32 -> u32; | |
| get_i32 -> i32; | |
| get_u64 -> u64; | |
| get_i64 -> i64; | |
| get_usize -> usize; | |
| get_isize -> isize; | |
| } | |
| } |