Add support for rust::Vec<bool>
diff --git a/src/cxx.cc b/src/cxx.cc
index 5f7ac6a..eb86d3d 100644
--- a/src/cxx.cc
+++ b/src/cxx.cc
@@ -266,7 +266,7 @@
}
// Usize and isize are the same type as one of the below.
-#define FOR_EACH_SIZED_PRIMITIVE(MACRO) \
+#define FOR_EACH_NUMERIC(MACRO) \
MACRO(u8, uint8_t) \
MACRO(u16, uint16_t) \
MACRO(u32, uint32_t) \
@@ -278,18 +278,22 @@
MACRO(f32, float) \
MACRO(f64, double)
-#define FOR_EACH_PRIMITIVE(MACRO) \
- FOR_EACH_SIZED_PRIMITIVE(MACRO) \
+#define FOR_EACH_STD_VECTOR(MACRO) \
+ FOR_EACH_NUMERIC(MACRO) \
MACRO(usize, size_t) \
MACRO(isize, rust::isize)
+#define FOR_EACH_RUST_VEC(MACRO) \
+ FOR_EACH_NUMERIC(MACRO) \
+ MACRO(bool, bool)
+
extern "C" {
-FOR_EACH_PRIMITIVE(STD_VECTOR_OPS)
-FOR_EACH_SIZED_PRIMITIVE(RUST_VEC_EXTERNS)
+FOR_EACH_STD_VECTOR(STD_VECTOR_OPS)
+FOR_EACH_RUST_VEC(RUST_VEC_EXTERNS)
} // extern "C"
namespace rust {
inline namespace cxxbridge03 {
-FOR_EACH_SIZED_PRIMITIVE(RUST_VEC_OPS)
+FOR_EACH_RUST_VEC(RUST_VEC_OPS)
} // namespace cxxbridge03
} // namespace rust
diff --git a/src/symbols/rust_vec.rs b/src/symbols/rust_vec.rs
index 712a9e8..9ce87ab 100644
--- a/src/symbols/rust_vec.rs
+++ b/src/symbols/rust_vec.rs
@@ -53,6 +53,7 @@
};
}
+rust_vec_shims_for_primitive!(bool);
rust_vec_shims_for_primitive!(u8);
rust_vec_shims_for_primitive!(u16);
rust_vec_shims_for_primitive!(u32);