doc(c-api) Update paste to 1.0 and document macros.

Thanks to https://github.com/dtolnay/paste/pull/48, we can generate
documentation with various tokens. It's so cool. Thanks @dtolnay!
This commit is contained in:
Ivan Enderlin
2020-12-15 17:02:47 +01:00
parent a4012b7ed2
commit b8712437a4
2 changed files with 16 additions and 6 deletions

View File

@@ -2,7 +2,9 @@
#[macro_export]
macro_rules! wasm_declare_vec_inner {
($name:ident) => {
paste::item! {
paste::paste! {
/// Creates an empty vector of
#[doc = "Creates an empty vector of [`wasm_" $name "_t`]."]
#[no_mangle]
pub unsafe extern "C" fn [<wasm_ $name _vec_new_empty>](out: *mut [<wasm_ $name _vec_t>]) {
// TODO: actually implement this
@@ -16,7 +18,8 @@ macro_rules! wasm_declare_vec_inner {
#[macro_export]
macro_rules! wasm_declare_vec {
($name:ident) => {
paste::item! {
paste::paste! {
#[doc = "Represents of a vector of [`wasm_" $name "_t`]."]
#[derive(Debug)]
#[repr(C)]
pub struct [<wasm_ $name _vec_t>] {
@@ -81,6 +84,7 @@ macro_rules! wasm_declare_vec {
}
// TODO: investigate possible memory leak on `init` (owned pointer)
#[doc = "Creates a new vector of [`wasm_" $name "_t`]."]
#[no_mangle]
pub unsafe extern "C" fn [<wasm_ $name _vec_new>](out: *mut [<wasm_ $name _vec_t>], length: usize, init: *mut [<wasm_ $name _t>]) {
let mut bytes: Vec<[<wasm_ $name _t>]> = Vec::with_capacity(length);
@@ -94,6 +98,7 @@ macro_rules! wasm_declare_vec {
::std::mem::forget(bytes);
}
#[doc = "Creates a new uninitialized vector of [`wasm_" $name "_t`]."]
#[no_mangle]
pub unsafe extern "C" fn [<wasm_ $name _vec_new_uninitialized>](out: *mut [<wasm_ $name _vec_t>], length: usize) {
let mut bytes: Vec<[<wasm_ $name _t>]> = Vec::with_capacity(length);
@@ -103,6 +108,7 @@ macro_rules! wasm_declare_vec {
::std::mem::forget(bytes);
}
#[doc = "Deletes a vector of [`wasm_" $name "_t`]."]
#[no_mangle]
pub unsafe extern "C" fn [<wasm_ $name _vec_delete>](ptr: Option<&mut [<wasm_ $name _vec_t>]>) {
if let Some(vec) = ptr {
@@ -123,7 +129,8 @@ macro_rules! wasm_declare_vec {
#[macro_export]
macro_rules! wasm_declare_boxed_vec {
($name:ident) => {
paste::item! {
paste::paste! {
#[doc = "Represents of a vector of [`wasm_" $name "_t`]."]
#[derive(Debug)]
#[repr(C)]
pub struct [<wasm_ $name _vec_t>] {
@@ -160,6 +167,7 @@ macro_rules! wasm_declare_boxed_vec {
}
// TODO: investigate possible memory leak on `init` (owned pointer)
#[doc = "Creates a new vector of [`wasm_" $name "_t`]."]
#[no_mangle]
pub unsafe extern "C" fn [<wasm_ $name _vec_new>](out: *mut [<wasm_ $name _vec_t>], length: usize, init: *const *mut [<wasm_ $name _t>]) {
let mut bytes: Vec<*mut [<wasm_ $name _t>]> = Vec::with_capacity(length);
@@ -173,6 +181,7 @@ macro_rules! wasm_declare_boxed_vec {
::std::mem::forget(bytes);
}
#[doc = "Creates a new uninitialized vector of [`wasm_" $name "_t`]."]
#[no_mangle]
pub unsafe extern "C" fn [<wasm_ $name _vec_new_uninitialized>](out: *mut [<wasm_ $name _vec_t>], length: usize) {
let mut bytes: Vec<*mut [<wasm_ $name _t>]> = Vec::with_capacity(length);
@@ -182,6 +191,7 @@ macro_rules! wasm_declare_boxed_vec {
::std::mem::forget(bytes);
}
#[doc = "Deletes a vector of [`wasm_" $name "_t`]."]
#[no_mangle]
pub unsafe extern "C" fn [<wasm_ $name _vec_delete>](ptr: *mut [<wasm_ $name _vec_t>]) {
let vec = &mut *ptr;
@@ -204,7 +214,7 @@ macro_rules! wasm_declare_ref_base {
($name:ident) => {
wasm_declare_own!($name);
paste::item! {
paste::paste! {
#[no_mangle]
pub extern "C" fn [<wasm_ $name _copy>](_arg: *const [<wasm_ $name _t>]) -> *mut [<wasm_ $name _t>] {
todo!("in generated declare ref base");
@@ -221,7 +231,7 @@ macro_rules! wasm_declare_ref_base {
#[macro_export]
macro_rules! wasm_declare_own {
($name:ident) => {
paste::item! {
paste::paste! {
#[repr(C)]
pub struct [<wasm_ $name _t>] {}