aboutsummaryrefslogtreecommitdiffstats
path: root/src/cocoa_bridge.rs
diff options
context:
space:
mode:
authorTeddy Wing2018-08-26 08:34:44 +0200
committerTeddy Wing2018-08-26 08:34:44 +0200
commit076af0f0145b7f924eb32be010311545d039850f (patch)
tree40740fd0de1180a407bcea0137b0195defb4232a /src/cocoa_bridge.rs
parentf09a074b3e96b960ee42dc484971e3fa192499d0 (diff)
downloaddome-key-map-076af0f0145b7f924eb32be010311545d039850f.tar.bz2
Link library with a test C program
Make a test `includer.c` program that includes the Rust library and calls our `c_run_key_action()` to see if it actually works. Currently it doesn't, we get `(null)` printed to stdout. Add a Makefile with the build command for the C program. cbindgen.toml: Remove `KeyActionResult` from exported types, as the `Option` field it contains caused `gcc` to complain. cocoa_bridge.rs: * Comment out all 'cocoa' crate related code as the 'cocoa' code was interfering with GCC compilation as a result of my not linking to Cocoa frameworks. * Add a new test map definition that corresponds with the one we look for in `includer.c`. parser.rs: Add `#[repr(C)]` to `MapKind` because it needs to be exported in the library and generated into our C header file.
Diffstat (limited to 'src/cocoa_bridge.rs')
-rw-r--r--src/cocoa_bridge.rs51
1 files changed, 26 insertions, 25 deletions
diff --git a/src/cocoa_bridge.rs b/src/cocoa_bridge.rs
index f2d5f45..fe65533 100644
--- a/src/cocoa_bridge.rs
+++ b/src/cocoa_bridge.rs
@@ -2,8 +2,8 @@ use std::ffi::CString;
use std::ptr;
use std::slice;
-use cocoa::base::nil;
-use cocoa::foundation::{NSArray, NSAutoreleasePool, NSDictionary};
+// use cocoa::base::nil;
+// use cocoa::foundation::{NSArray, NSAutoreleasePool, NSDictionary};
use libc::{c_char, size_t};
use {HeadphoneButton, MapGroup, MapKind};
@@ -12,28 +12,28 @@ use {HeadphoneButton, MapGroup, MapKind};
struct renameMeMapGroup {
}
-pub extern "C" fn parse_mappings() {
- let sample_maps = "map <up> k
-map <down> j";
-
- let map_group = MapGroup::parse(sample_maps).unwrap();
-
- unsafe {
- let _pool = NSAutoreleasePool::new(nil);
-
- let maps = NSDictionary::init(nil).autorelease();
- let modes = NSDictionary::init(nil).autorelease();
-
- for (trigger, action) in map_group.maps {
- // let t = NSArray::arrayWithObjects(nil, &trigger).autorelease();
-
- // maps.
- }
-
- for (trigger, modes) in map_group.modes {
- }
- }
-}
+// pub extern "C" fn parse_mappings() {
+// let sample_maps = "map <up> k
+// map <down> j";
+//
+// let map_group = MapGroup::parse(sample_maps).unwrap();
+//
+// unsafe {
+// let _pool = NSAutoreleasePool::new(nil);
+//
+// let maps = NSDictionary::init(nil).autorelease();
+// let modes = NSDictionary::init(nil).autorelease();
+//
+// for (trigger, action) in map_group.maps {
+// // let t = NSArray::arrayWithObjects(nil, &trigger).autorelease();
+//
+// // maps.
+// }
+//
+// for (trigger, modes) in map_group.modes {
+// }
+// }
+// }
// Different method:
// Call Rust function with trigger
@@ -97,7 +97,8 @@ pub extern "C" fn run_key_action(
trigger: &[HeadphoneButton]
) -> Option<KeyActionResult> {
let sample_maps = "map <up> k
-map <down> j";
+map <down> j
+map <play><down> works!";
// Figure out how to persist this without re-parsing
let map_group = MapGroup::parse(sample_maps).unwrap();