aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTeddy Wing2018-09-22 01:40:35 +0200
committerTeddy Wing2018-09-22 01:40:35 +0200
commit457b2796e6fc268074b87d36c9f9a2c25eb4b5af (patch)
tree24b97e3ce4aeb926d1c0467c059d5751e80e244e /src
parentce1eca32e2249a72692c6eb01052361d98af29c3 (diff)
downloaddome-key-map-457b2796e6fc268074b87d36c9f9a2c25eb4b5af.tar.bz2
Add a `State` struct
The plan is to use this as an opaque pointer to be passed between the Objective-C code and Rust code. It will contain the current mode (if in a mode) and the parsed `MapGroup` definitions. For now just some code inspired by the Rust FFI Omnibus (http://jakegoulding.com/rust-ffi-omnibus/objects/) to create and free a `State`.
Diffstat (limited to 'src')
-rw-r--r--src/cocoa_bridge.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/cocoa_bridge.rs b/src/cocoa_bridge.rs
index e860d24..a864e13 100644
--- a/src/cocoa_bridge.rs
+++ b/src/cocoa_bridge.rs
@@ -92,6 +92,22 @@ pub struct CKeyActionResult {
pub in_mode: *const Trigger,
}
+#[derive(Default)]
+pub struct State {
+ in_mode: Option<Vec<HeadphoneButton>>,
+}
+
+#[no_mangle]
+pub extern "C" fn state_new() -> *mut State {
+ Box::into_raw(Box::new(State::default()))
+}
+
+#[no_mangle]
+pub extern "C" fn state_free(ptr: *mut State) {
+ if ptr.is_null() { return }
+ unsafe { Box::from_raw(ptr); }
+}
+
#[no_mangle]
pub extern "C" fn c_run_key_action(
trigger: Trigger,