1.4 KiB
1.4 KiB
Host files
File path: out/dir/api.rs
// Host code
/* Rust API */
#[derive(Debug)]
pub enum Commands {
/// Call out an outstanding person
#[allow(non_camel_case_types)]
call_me_back_outstanding { callback: fn(String) -> String },
One(one::One),
}
pub mod one {
#[derive(Debug)]
pub enum One {
/// Call out a person
#[allow(non_camel_case_types)]
call_me_back { callback: fn(u32) },
}
}
/* C API */
#[no_mangle]
pub extern "C" fn call_me_back_outstanding(
callback: fn(String) -> String,
) -> core::ffi::c_int {
callback_function(call_me_back_outstanding);
return 1;
}
pub mod one_c {}
#[no_mangle]
pub extern "C" fn one_call_me_back(callback: fn(u32)) -> core::ffi::c_int {
callback_function(one_call_me_back);
return 1;
}
// vim: filetype=rust
Auxiliary files
File path: dist/interface.h
#if !defined TRIXY_MAIN_HEADER
#define TRIXY_MAIN_HEADER
#include "errno.h"
#include "string.h"
#include "vec.h"
/**
* Call out an outstanding person
*/
extern int
call_me_back_outstanding (const char *(*name) (const char *name)callback);
/**
* Call out a person
*/
extern int one_call_me_back (void (*name) (uint32_t age) callback);
struct one
{
int (*call_me_back) ();
};
const struct one one = {
.call_me_back = one_call_me_back,
};
#endif // if !defined TRIXY_MAIN_HEADER
// vim: filetype=c