blob: 26c14fed09c9c59e871f3148f6ae4f19d0b071cf [file] [log] [blame]
David Tolnay97c72102020-01-25 16:49:00 -08001#include "tests/ffi/tests.h"
David Tolnayb8715772020-01-28 00:54:05 -08002#include "tests/ffi/lib.rs"
David Tolnay97c72102020-01-25 16:49:00 -08003
4namespace tests {
5
David Tolnayad5b8af2020-01-26 16:59:13 -08006C::C(size_t n) : n(n) {}
7
David Tolnayb8715772020-01-28 00:54:05 -08008size_t c_return_primitive() { return 2020; }
David Tolnayad5b8af2020-01-26 16:59:13 -08009
David Tolnayb8715772020-01-28 00:54:05 -080010Shared c_return_shared() { return Shared{2020}; }
David Tolnayad5b8af2020-01-26 16:59:13 -080011
12std::unique_ptr<C> c_return_unique_ptr() {
13 return std::unique_ptr<C>(new C{2020});
14}
15
David Tolnayb8715772020-01-28 00:54:05 -080016const size_t &c_return_ref(const Shared &shared) { return shared.z; }
David Tolnayad5b8af2020-01-26 16:59:13 -080017
18cxxbridge::RustStr c_return_str(const Shared &shared) {
19 (void)shared;
20 return "2020";
21}
22
David Tolnayb8715772020-01-28 00:54:05 -080023cxxbridge::RustString c_return_rust_string() { return "2020"; }
David Tolnayad5b8af2020-01-26 16:59:13 -080024
25std::unique_ptr<std::string> c_return_unique_ptr_string() {
26 return std::unique_ptr<std::string>(new std::string("2020"));
27}
28
David Tolnayb8715772020-01-28 00:54:05 -080029void c_take_primitive(size_t n) { (void)n; }
David Tolnayad5b8af2020-01-26 16:59:13 -080030
David Tolnayb8715772020-01-28 00:54:05 -080031void c_take_shared(Shared shared) { (void)shared; }
David Tolnayad5b8af2020-01-26 16:59:13 -080032
David Tolnayb8715772020-01-28 00:54:05 -080033void c_take_box(cxxbridge::RustBox<R> r) { (void)r; }
David Tolnayad5b8af2020-01-26 16:59:13 -080034
David Tolnayb8715772020-01-28 00:54:05 -080035void c_take_unique_ptr(std::unique_ptr<C> c) { (void)c; }
David Tolnayad5b8af2020-01-26 16:59:13 -080036
David Tolnayb8715772020-01-28 00:54:05 -080037void c_take_ref_r(const R &r) { (void)r; }
David Tolnayad5b8af2020-01-26 16:59:13 -080038
David Tolnayb8715772020-01-28 00:54:05 -080039void c_take_ref_c(const C &c) { (void)c; }
David Tolnayad5b8af2020-01-26 16:59:13 -080040
David Tolnayb8715772020-01-28 00:54:05 -080041void c_take_str(cxxbridge::RustStr s) { (void)s; }
David Tolnayad5b8af2020-01-26 16:59:13 -080042
David Tolnayb8715772020-01-28 00:54:05 -080043void c_take_rust_string(cxxbridge::RustString s) { (void)s; }
David Tolnayad5b8af2020-01-26 16:59:13 -080044
David Tolnayb8715772020-01-28 00:54:05 -080045void c_take_unique_ptr_string(std::unique_ptr<std::string> s) { (void)s; }
David Tolnayad5b8af2020-01-26 16:59:13 -080046
David Tolnay97c72102020-01-25 16:49:00 -080047} // namespace tests