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/doc_comments/expected.md

1.9 KiB

Host files

File path: out/dir/api.rs

// Host code
/* Rust API */
#[derive(Debug)]
pub enum Commands {
    Trinitrix(trinitrix::Trinitrix),
}
/// First doc comment
pub mod trinitrix {
    #[derive(Debug)]
    pub enum Trinitrix {
        /// Second doc comment
        #[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

#if !defined TRIXY_MAIN_HEADER
#define TRIXY_MAIN_HEADER

#include "errno.h"
#include "string.h"
#include "vec.h"

/**
 * Second doc comment
 */
extern int trinitrix_hi (const char **trixy_output, const char *name);

/**
 * First 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