diff --git a/tests/expectations/both/ptrs_as_arrays.c b/tests/expectations/both/ptrs_as_arrays.c new file mode 100644 index 0000000..75aca35 --- /dev/null +++ b/tests/expectations/both/ptrs_as_arrays.c @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +void ptr_as_array(uint32_t n, const uint32_t arg[3], const uint64_t *v); + +void ptr_as_array1(uint32_t n, const uint32_t arg[3], uint64_t v[4]); + +void ptr_as_array2(uint32_t n, uint32_t arg[], const uint64_t v[]); + +void ptr_as_array_unnamed(uint32_t*, const uint32_t*); + +void ptr_as_array_wrong_syntax(uint32_t *arg, const uint32_t *v, const uint32_t*); diff --git a/tests/expectations/both/ptrs_as_arrays.compat.c b/tests/expectations/both/ptrs_as_arrays.compat.c new file mode 100644 index 0000000..0ccf6cc --- /dev/null +++ b/tests/expectations/both/ptrs_as_arrays.compat.c @@ -0,0 +1,22 @@ +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +void ptr_as_array(uint32_t n, const uint32_t arg[3], const uint64_t *v); + +void ptr_as_array1(uint32_t n, const uint32_t arg[3], uint64_t v[4]); + +void ptr_as_array2(uint32_t n, uint32_t arg[], const uint64_t v[]); + +void ptr_as_array_unnamed(uint32_t*, const uint32_t*); + +void ptr_as_array_wrong_syntax(uint32_t *arg, const uint32_t *v, const uint32_t*); + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus diff --git a/tests/expectations/ptrs_as_arrays.c b/tests/expectations/ptrs_as_arrays.c new file mode 100644 index 0000000..75aca35 --- /dev/null +++ b/tests/expectations/ptrs_as_arrays.c @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +void ptr_as_array(uint32_t n, const uint32_t arg[3], const uint64_t *v); + +void ptr_as_array1(uint32_t n, const uint32_t arg[3], uint64_t v[4]); + +void ptr_as_array2(uint32_t n, uint32_t arg[], const uint64_t v[]); + +void ptr_as_array_unnamed(uint32_t*, const uint32_t*); + +void ptr_as_array_wrong_syntax(uint32_t *arg, const uint32_t *v, const uint32_t*); diff --git a/tests/expectations/ptrs_as_arrays.compat.c b/tests/expectations/ptrs_as_arrays.compat.c new file mode 100644 index 0000000..0ccf6cc --- /dev/null +++ b/tests/expectations/ptrs_as_arrays.compat.c @@ -0,0 +1,22 @@ +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +void ptr_as_array(uint32_t n, const uint32_t arg[3], const uint64_t *v); + +void ptr_as_array1(uint32_t n, const uint32_t arg[3], uint64_t v[4]); + +void ptr_as_array2(uint32_t n, uint32_t arg[], const uint64_t v[]); + +void ptr_as_array_unnamed(uint32_t*, const uint32_t*); + +void ptr_as_array_wrong_syntax(uint32_t *arg, const uint32_t *v, const uint32_t*); + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus diff --git a/tests/expectations/ptrs_as_arrays.cpp b/tests/expectations/ptrs_as_arrays.cpp new file mode 100644 index 0000000..1442159 --- /dev/null +++ b/tests/expectations/ptrs_as_arrays.cpp @@ -0,0 +1,18 @@ +#include +#include +#include +#include + +extern "C" { + +void ptr_as_array(uint32_t n, const uint32_t arg[3], const uint64_t *v); + +void ptr_as_array1(uint32_t n, const uint32_t arg[3], uint64_t v[4]); + +void ptr_as_array2(uint32_t n, uint32_t arg[], const uint64_t v[]); + +void ptr_as_array_unnamed(uint32_t*, const uint32_t*); + +void ptr_as_array_wrong_syntax(uint32_t *arg, const uint32_t *v, const uint32_t*); + +} // extern "C" diff --git a/tests/expectations/tag/ptrs_as_arrays.c b/tests/expectations/tag/ptrs_as_arrays.c new file mode 100644 index 0000000..75aca35 --- /dev/null +++ b/tests/expectations/tag/ptrs_as_arrays.c @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +void ptr_as_array(uint32_t n, const uint32_t arg[3], const uint64_t *v); + +void ptr_as_array1(uint32_t n, const uint32_t arg[3], uint64_t v[4]); + +void ptr_as_array2(uint32_t n, uint32_t arg[], const uint64_t v[]); + +void ptr_as_array_unnamed(uint32_t*, const uint32_t*); + +void ptr_as_array_wrong_syntax(uint32_t *arg, const uint32_t *v, const uint32_t*); diff --git a/tests/expectations/tag/ptrs_as_arrays.compat.c b/tests/expectations/tag/ptrs_as_arrays.compat.c new file mode 100644 index 0000000..0ccf6cc --- /dev/null +++ b/tests/expectations/tag/ptrs_as_arrays.compat.c @@ -0,0 +1,22 @@ +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +void ptr_as_array(uint32_t n, const uint32_t arg[3], const uint64_t *v); + +void ptr_as_array1(uint32_t n, const uint32_t arg[3], uint64_t v[4]); + +void ptr_as_array2(uint32_t n, uint32_t arg[], const uint64_t v[]); + +void ptr_as_array_unnamed(uint32_t*, const uint32_t*); + +void ptr_as_array_wrong_syntax(uint32_t *arg, const uint32_t *v, const uint32_t*); + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus diff --git a/tests/rust/ptrs_as_arrays.rs b/tests/rust/ptrs_as_arrays.rs new file mode 100644 index 0000000..02cb908 --- /dev/null +++ b/tests/rust/ptrs_as_arrays.rs @@ -0,0 +1,19 @@ +/// cbindgen:ptrs-as-arrays=[[arg;3]] +#[no_mangle] +pub unsafe extern "C" fn ptr_as_array(n: u32, arg: *const u32, v: *const u64) {} + +/// cbindgen:ptrs-as-arrays=[[arg;3], [v; 4]] +#[no_mangle] +pub unsafe extern "C" fn ptr_as_array1(n: u32, arg: *const u32, v: *mut u64) {} + +/// cbindgen:ptrs-as-arrays=[[n;2], [arg; ], [v;], [k; 3]] +#[no_mangle] +pub unsafe extern "C" fn ptr_as_array2(n: u32, arg: *mut u32, v: *const u64) {} + +/// cbindgen:ptrs-as-arrays=[[a;2;3]] +#[no_mangle] +pub unsafe extern "C" fn ptr_as_array_wrong_syntax(arg: *mut u32, v: *const u32, _: *const u32) {} + +/// cbindgen:ptrs-as-arrays=[[_;2], [_;3]] +#[no_mangle] +pub unsafe extern "C" fn ptr_as_array_unnamed(_: *mut u32, _: *const u32) {}