Test returning opaque types in CxxVector from C to Rust
diff --git a/tests/ffi/lib.rs b/tests/ffi/lib.rs
index a16775b..d6a94e4 100644
--- a/tests/ffi/lib.rs
+++ b/tests/ffi/lib.rs
@@ -30,6 +30,7 @@
fn c_return_unique_ptr_vector_u8() -> UniquePtr<CxxVector<u8>>;
fn c_return_unique_ptr_vector_f64() -> UniquePtr<CxxVector<f64>>;
fn c_return_unique_ptr_vector_shared() -> UniquePtr<CxxVector<Shared>>;
+ fn c_return_unique_ptr_vector_opaque() -> UniquePtr<CxxVector<C>>;
fn c_take_primitive(n: usize);
fn c_take_shared(shared: Shared);
diff --git a/tests/ffi/tests.cc b/tests/ffi/tests.cc
index 502be05..372641c 100644
--- a/tests/ffi/tests.cc
+++ b/tests/ffi/tests.cc
@@ -83,6 +83,10 @@
return vec;
}
+std::unique_ptr<std::vector<C>> c_return_unique_ptr_vector_opaque() {
+ return std::unique_ptr<std::vector<C>>(new std::vector<C>());
+}
+
void c_take_primitive(size_t n) {
if (n == 2020) {
cxx_test_suite_set_correct();
diff --git a/tests/ffi/tests.h b/tests/ffi/tests.h
index e1e163d..ed07ce6 100644
--- a/tests/ffi/tests.h
+++ b/tests/ffi/tests.h
@@ -32,6 +32,7 @@
std::unique_ptr<std::vector<uint8_t>> c_return_unique_ptr_vector_u8();
std::unique_ptr<std::vector<double>> c_return_unique_ptr_vector_f64();
std::unique_ptr<std::vector<Shared>> c_return_unique_ptr_vector_shared();
+std::unique_ptr<std::vector<C>> c_return_unique_ptr_vector_opaque();
void c_take_primitive(size_t n);
void c_take_shared(Shared shared);