diff options
Diffstat (limited to 'src/cocoa_bridge.rs')
| -rw-r--r-- | src/cocoa_bridge.rs | 17 | 
1 files changed, 17 insertions, 0 deletions
| diff --git a/src/cocoa_bridge.rs b/src/cocoa_bridge.rs index d4749f0..d98701f 100644 --- a/src/cocoa_bridge.rs +++ b/src/cocoa_bridge.rs @@ -1,7 +1,9 @@  use std::ffi::CString; +use std::slice;  use cocoa::base::nil;  use cocoa::foundation::{NSArray, NSAutoreleasePool, NSDictionary}; +use libc::size_t;  use {HeadphoneButton, MapGroup, MapKind}; @@ -45,6 +47,21 @@ pub struct KeyActionResult {  }  #[no_mangle] +pub extern "C" fn c_run_key_action( +    trigger: *const HeadphoneButton, +    length: size_t, +) -> *const KeyActionResult { +    let trigger = unsafe { +        assert!(!trigger.is_null()); + +        slice::from_raw_parts(trigger, length as usize) +    }; + +    let result = run_key_action(trigger).unwrap(); +    &result as *const KeyActionResult +} + +#[no_mangle]  pub extern "C" fn run_key_action(      trigger: &[HeadphoneButton]  ) -> Option<KeyActionResult> { | 
