65 lines
955 B
Rust
65 lines
955 B
Rust
#[cfg(all(unix, x11))]
|
|
#[repr(u32)]
|
|
enum FooType {
|
|
A,
|
|
B,
|
|
C,
|
|
}
|
|
|
|
#[cfg(all(unix, x11))]
|
|
#[repr(C)]
|
|
struct FooHandle {
|
|
ty: FooType,
|
|
x: i32,
|
|
y: f32,
|
|
}
|
|
|
|
#[cfg(any(windows, target_pointer_width="32"))]
|
|
#[repr(u32)]
|
|
enum BarType {
|
|
A,
|
|
B,
|
|
C,
|
|
}
|
|
|
|
#[repr(u8)]
|
|
pub enum C {
|
|
C1,
|
|
C2,
|
|
#[cfg(windows)]
|
|
C3,
|
|
#[cfg(unix)]
|
|
C5 { int: i32 },
|
|
}
|
|
|
|
#[cfg(any(windows, target_pointer_width="32"))]
|
|
#[repr(C)]
|
|
struct BarHandle {
|
|
ty: BarType,
|
|
x: i32,
|
|
y: f32,
|
|
}
|
|
|
|
// FIXME(#634): Support deriving methods for structs with conditional fields.
|
|
/// cbindgen:derive-eq=false
|
|
/// cbindgen:derive-neq=false
|
|
#[repr(C)]
|
|
struct ConditionalField {
|
|
#[cfg(x11)]
|
|
field: i32,
|
|
}
|
|
|
|
#[cfg(all(unix, x11))]
|
|
#[no_mangle]
|
|
pub extern "C" fn root(a: FooHandle, c: C)
|
|
{ }
|
|
|
|
#[cfg(any(windows, target_pointer_width="32"))]
|
|
#[no_mangle]
|
|
pub extern "C" fn root(a: BarHandle, c: C)
|
|
{ }
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn cond(a: ConditionalField)
|
|
{ }
|