Rename std::vector binding to CxxVector
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index 5554d28..782da05 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -26,7 +26,7 @@
// "Header" to define newtypes locally so we can implement
// traits on them.
expanded.extend(quote! {
- pub struct Vector<T>(pub ::cxx::RealVector<T>);
+ pub struct Vector<T>(pub ::cxx::CxxVector<T>);
impl<T: cxx::private::VectorTarget<T>> Vector<T> {
pub fn size(&self) -> usize {
self.0.size()
@@ -46,7 +46,7 @@
}
impl<'a, T: cxx::private::VectorTarget<T>> IntoIterator for &'a Vector<T> {
type Item = &'a T;
- type IntoIter = <&'a ::cxx::RealVector<T> as IntoIterator>::IntoIter;
+ type IntoIter = <&'a ::cxx::CxxVector<T> as IntoIterator>::IntoIter;
fn into_iter(self) -> Self::IntoIter {
self.0.into_iter()
@@ -112,7 +112,7 @@
} else if let Type::Vector(ptr) = ty {
if let Type::Ident(ident) = &ptr.inner {
if Atom::from(ident).is_none() {
- // Generate code for Vector<T> if T is not an atom
+ // Generate code for CxxVector<T> if T is not an atom
// Code for atoms is already generated
expanded.extend(expand_vector(namespace, &ptr.inner));
}
@@ -688,29 +688,29 @@
quote! {
impl ::cxx::private::VectorTarget<#inner> for #inner {
- fn get_unchecked(v: &::cxx::RealVector<#inner>, pos: usize) -> &#inner {
+ fn get_unchecked(v: &::cxx::CxxVector<#inner>, pos: usize) -> &#inner {
extern "C" {
#[link_name = #link_get_unchecked]
- fn __get_unchecked(_: &::cxx::RealVector<#inner>, _: usize) -> &#inner;
+ fn __get_unchecked(_: &::cxx::CxxVector<#inner>, _: usize) -> &#inner;
}
unsafe {
__get_unchecked(v, pos)
}
}
- fn vector_length(v: &::cxx::RealVector<#inner>) -> usize {
+ fn vector_length(v: &::cxx::CxxVector<#inner>) -> usize {
unsafe {
extern "C" {
#[link_name = #link_length]
- fn __vector_length(_: &::cxx::RealVector<#inner>) -> usize;
+ fn __vector_length(_: &::cxx::CxxVector<#inner>) -> usize;
}
__vector_length(v)
}
}
- fn push_back(v: &::cxx::RealVector<#inner>, item: &#inner) {
+ fn push_back(v: &::cxx::CxxVector<#inner>, item: &#inner) {
unsafe {
extern "C" {
#[link_name = #link_push_back]
- fn __push_back(_: &::cxx::RealVector<#inner>, _: &#inner) -> usize;
+ fn __push_back(_: &::cxx::CxxVector<#inner>, _: &#inner) -> usize;
}
__push_back(v, item);
}
@@ -731,29 +731,29 @@
quote! {
impl VectorTarget<#inner> for #inner {
- fn get_unchecked(v: &RealVector<#inner>, pos: usize) -> &#inner {
+ fn get_unchecked(v: &CxxVector<#inner>, pos: usize) -> &#inner {
extern "C" {
#[link_name = #link_get_unchecked]
- fn __get_unchecked(_: &RealVector<#inner>, _: usize) -> &#inner;
+ fn __get_unchecked(_: &CxxVector<#inner>, _: usize) -> &#inner;
}
unsafe {
__get_unchecked(v, pos)
}
}
- fn vector_length(v: &RealVector<#inner>) -> usize {
+ fn vector_length(v: &CxxVector<#inner>) -> usize {
unsafe {
extern "C" {
#[link_name = #link_length]
- fn __vector_length(_: &RealVector<#inner>) -> usize;
+ fn __vector_length(_: &CxxVector<#inner>) -> usize;
}
__vector_length(v)
}
}
- fn push_back(v: &RealVector<#inner>, item: &#inner) {
+ fn push_back(v: &CxxVector<#inner>, item: &#inner) {
unsafe {
extern "C" {
#[link_name = #link_push_back]
- fn __push_back(_: &RealVector<#inner>, _: &#inner) -> usize;
+ fn __push_back(_: &CxxVector<#inner>, _: &#inner) -> usize;
}
__push_back(v, item);
}
diff --git a/src/vector.rs b/src/cxx_vector.rs
similarity index 83%
rename from src/vector.rs
rename to src/cxx_vector.rs
index 1436165..feb2e29 100644
--- a/src/vector.rs
+++ b/src/cxx_vector.rs
@@ -1,16 +1,16 @@
pub trait VectorTarget<T> {
- fn get_unchecked(v: &RealVector<T>, pos: usize) -> &T
+ fn get_unchecked(v: &CxxVector<T>, pos: usize) -> &T
where
Self: Sized;
- fn vector_length(v: &RealVector<T>) -> usize
+ fn vector_length(v: &CxxVector<T>) -> usize
where
Self: Sized;
- fn push_back(v: &RealVector<T>, item: &T)
+ fn push_back(v: &CxxVector<T>, item: &T)
where
Self: Sized;
}
-/// Binding to C++ `std::vector`.
+/// Binding to C++ `std::vector<T>`.
///
/// # Invariants
///
@@ -21,11 +21,11 @@
/// look at a Vector through a reference or smart pointer, as in `&Vector`
/// or `UniquePtr<Vector>`.
#[repr(C)]
-pub struct RealVector<T> {
+pub struct CxxVector<T> {
_private: [T; 0],
}
-impl<T: VectorTarget<T>> RealVector<T> {
+impl<T: VectorTarget<T>> CxxVector<T> {
/// Returns the length of the vector in bytes.
pub fn size(&self) -> usize {
T::vector_length(self)
@@ -53,14 +53,14 @@
}
}
-unsafe impl<T> Send for RealVector<T> where T: Send + VectorTarget<T> {}
+unsafe impl<T> Send for CxxVector<T> where T: Send + VectorTarget<T> {}
pub struct VectorIntoIterator<'a, T> {
- v: &'a RealVector<T>,
+ v: &'a CxxVector<T>,
index: usize,
}
-impl<'a, T: VectorTarget<T>> IntoIterator for &'a RealVector<T> {
+impl<'a, T: VectorTarget<T>> IntoIterator for &'a CxxVector<T> {
type Item = &'a T;
type IntoIter = VectorIntoIterator<'a, T>;
diff --git a/src/lib.rs b/src/lib.rs
index a8ce904..a25f83d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -360,6 +360,7 @@
mod assert;
mod cxx_string;
+mod cxx_vector;
mod error;
mod exception;
mod function;
@@ -374,18 +375,17 @@
mod syntax;
mod unique_ptr;
mod unwind;
-mod vector;
pub use crate::cxx_string::CxxString;
+pub use crate::cxx_vector::CxxVector;
pub use crate::exception::Exception;
pub use crate::unique_ptr::UniquePtr;
-pub use crate::vector::RealVector;
-pub use crate::vector::VectorIntoIterator;
pub use cxxbridge_macro::bridge;
// Not public API.
#[doc(hidden)]
pub mod private {
+ pub use crate::cxx_vector::VectorTarget;
pub use crate::function::FatFunction;
pub use crate::opaque::Opaque;
pub use crate::result::{r#try, Result};
@@ -395,7 +395,6 @@
pub use crate::rust_vec::RustVec;
pub use crate::unique_ptr::UniquePtrTarget;
pub use crate::unwind::catch_unwind;
- pub use crate::vector::VectorTarget;
}
use crate::error::Result;
diff --git a/src/rust_vec.rs b/src/rust_vec.rs
index b4eed3b..671d8f7 100644
--- a/src/rust_vec.rs
+++ b/src/rust_vec.rs
@@ -1,4 +1,4 @@
-use crate::vector::VectorTarget;
+use crate::cxx_vector::VectorTarget;
#[repr(C)]
pub struct RustVec<T: VectorTarget<T>> {