This repository has been archived on 2024-05-26. You can view files and clone it, but cannot push or open issues or pull requests.
trixy/tests/attribute_doc_comments/expected.md

93 lines
2.0 KiB
C

# Host files
File path: `out/dir/api.rs`
```rust
// Host code
/* Rust API */
#[derive(Debug)]
pub enum Commands {
Trinitrix(trinitrix::Trinitrix),
}
/// Attribute doc comment
pub mod trinitrix {
#[derive(Debug)]
pub enum Trinitrix {
/// Attribute doc comment, but very ##" "## "# " escaped
#[allow(non_camel_case_types)]
hi {
trixy_output: trixy::oneshot::Sender<trixy::types::String>,
name: trixy::types::newtypes::String,
},
}
}
/* C API */
pub mod trinitrix_c {
#[allow(unused_imports)]
use crate::callback_function;
}
#[no_mangle]
pub extern "C" fn trinitrix_hi(
output: *mut trixy::types::String,
name: trixy::types::String,
) -> core::ffi::c_int {
let output_val: trixy::types::String = {
let (tx, rx) = trixy::oneshot::channel();
callback_function(
Commands::Trinitrix(crate::trinitrix::Trinitrix::hi {
trixy_output: tx,
name: match name.try_into() {
Ok(ok) => ok,
Err(err) => {
trixy::types::traits::errno::set(err.into());
return 0;
}
},
}),
);
let recv = rx
.recv()
.expect("The channel should not be closed until this value is received");
recv.into()
};
unsafe {
std::ptr::write(output, output_val);
}
return 1;
}
// vim: filetype=rust
```
# Auxiliary files
File path: `dist/interface.h`
```c
#if !defined TRIXY_MAIN_HEADER
#define TRIXY_MAIN_HEADER
#include "errno.h"
#include "string.h"
#include "vec.h"
/**
* Attribute doc comment, but very ##" "## "# " escaped
*/
extern int trinitrix_hi (const char **trixy_output, const char *name);
/**
* Attribute doc comment
*/
struct trinitrix
{
int (*hi) (const char **, const char *);
};
const struct trinitrix trinitrix = {
.hi = trinitrix_hi,
};
#endif // if !defined TRIXY_MAIN_HEADER
// vim: filetype=c
```