diff options
| author | Teddy Wing | 2018-08-26 08:34:44 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2018-08-26 08:34:44 +0200 | 
| commit | 076af0f0145b7f924eb32be010311545d039850f (patch) | |
| tree | 40740fd0de1180a407bcea0137b0195defb4232a /src | |
| parent | f09a074b3e96b960ee42dc484971e3fa192499d0 (diff) | |
| download | dome-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')
| -rw-r--r-- | src/cocoa_bridge.rs | 51 | ||||
| -rw-r--r-- | src/lib.rs | 2 | ||||
| -rw-r--r-- | src/parser.rs | 1 | 
3 files changed, 28 insertions, 26 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(); @@ -1,4 +1,4 @@ -extern crate cocoa; +// extern crate cocoa;  #[macro_use]  extern crate combine; diff --git a/src/parser.rs b/src/parser.rs index c6c8cce..1d9aa56 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -23,6 +23,7 @@ pub enum HeadphoneButton {  type Trigger = Vec<HeadphoneButton>;  type Action = String; +#[repr(C)]  #[derive(Debug, PartialEq)]  pub enum MapKind {      Map, | 
