Skip to content

Commit

Permalink
Bump namespace to 04
Browse files Browse the repository at this point in the history
  • Loading branch information
dtolnay committed Sep 2, 2020
1 parent 84f8cf9 commit 591dcb6
Show file tree
Hide file tree
Showing 17 changed files with 176 additions and 176 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name = "cxx"
version = "0.3.9" # remember to update html_root_url
authors = ["David Tolnay <dtolnay@gmail.com>"]
edition = "2018"
links = "cxxbridge03"
links = "cxxbridge04"
license = "MIT OR Apache-2.0"
description = "Safe interop between Rust and C++"
repository = "https://github.com/dtolnay/cxx"
Expand Down
2 changes: 1 addition & 1 deletion build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ fn main() {
.cpp(true)
.cpp_link_stdlib(None) // linked via link-cplusplus crate
.flag_if_supported(cxxbridge_flags::STD)
.compile("cxxbridge03");
.compile("cxxbridge04");
println!("cargo:rerun-if-changed=src/cxx.cc");
println!("cargo:rerun-if-changed=include/cxx.h");
println!("cargo:rustc-cfg=built_with_cargo");
Expand Down
4 changes: 2 additions & 2 deletions gen/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ fn test_cpp() {
let output = std::str::from_utf8(&output.implementation).unwrap();
// To avoid continual breakage we won't test every byte.
// Let's look for the major features.
assert!(output.contains("void cxxbridge03$do_cpp_thing(::rust::Str::Repr foo)"));
assert!(output.contains("void cxxbridge04$do_cpp_thing(::rust::Str::Repr foo)"));
}

#[test]
Expand All @@ -34,5 +34,5 @@ fn test_annotation() {
};
let output = generate_from_string(CPP_EXAMPLE, &opts).unwrap();
let output = std::str::from_utf8(&output.implementation).unwrap();
assert!(output.contains("ANNOTATION void cxxbridge03$do_cpp_thing(::rust::Str::Repr foo)"));
assert!(output.contains("ANNOTATION void cxxbridge04$do_cpp_thing(::rust::Str::Repr foo)"));
}
104 changes: 52 additions & 52 deletions gen/src/write.rs
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ fn write_include_cxxbridge(out: &mut OutFile, apis: &[Api], types: &Types) {
}

out.begin_block("namespace rust");
out.begin_block("inline namespace cxxbridge03");
out.begin_block("inline namespace cxxbridge04");

if needs_rust_string
|| needs_rust_str
Expand All @@ -253,15 +253,15 @@ fn write_include_cxxbridge(out: &mut OutFile, apis: &[Api], types: &Types) {
writeln!(out, "struct unsafe_bitcopy_t;");
}

include::write(out, needs_rust_string, "CXXBRIDGE03_RUST_STRING");
include::write(out, needs_rust_str, "CXXBRIDGE03_RUST_STR");
include::write(out, needs_rust_slice, "CXXBRIDGE03_RUST_SLICE");
include::write(out, needs_rust_box, "CXXBRIDGE03_RUST_BOX");
include::write(out, needs_rust_vec, "CXXBRIDGE03_RUST_VEC");
include::write(out, needs_rust_fn, "CXXBRIDGE03_RUST_FN");
include::write(out, needs_rust_error, "CXXBRIDGE03_RUST_ERROR");
include::write(out, needs_rust_isize, "CXXBRIDGE03_RUST_ISIZE");
include::write(out, needs_unsafe_bitcopy, "CXXBRIDGE03_RUST_BITCOPY");
include::write(out, needs_rust_string, "CXXBRIDGE04_RUST_STRING");
include::write(out, needs_rust_str, "CXXBRIDGE04_RUST_STR");
include::write(out, needs_rust_slice, "CXXBRIDGE04_RUST_SLICE");
include::write(out, needs_rust_box, "CXXBRIDGE04_RUST_BOX");
include::write(out, needs_rust_vec, "CXXBRIDGE04_RUST_VEC");
include::write(out, needs_rust_fn, "CXXBRIDGE04_RUST_FN");
include::write(out, needs_rust_error, "CXXBRIDGE04_RUST_ERROR");
include::write(out, needs_rust_isize, "CXXBRIDGE04_RUST_ISIZE");
include::write(out, needs_unsafe_bitcopy, "CXXBRIDGE04_RUST_BITCOPY");

if needs_manually_drop {
out.next_section();
Expand All @@ -287,7 +287,7 @@ fn write_include_cxxbridge(out: &mut OutFile, apis: &[Api], types: &Types) {
writeln!(out, "}};");
}

out.end_block("namespace cxxbridge03");
out.end_block("namespace cxxbridge04");

if needs_trycatch {
out.begin_block("namespace behavior");
Expand Down Expand Up @@ -316,7 +316,7 @@ fn write_include_cxxbridge(out: &mut OutFile, apis: &[Api], types: &Types) {
}

fn write_struct(out: &mut OutFile, strct: &Struct) {
let guard = format!("CXXBRIDGE03_STRUCT_{}{}", out.namespace, strct.ident);
let guard = format!("CXXBRIDGE04_STRUCT_{}{}", out.namespace, strct.ident);
writeln!(out, "#ifndef {}", guard);
writeln!(out, "#define {}", guard);
for line in strct.doc.to_string().lines() {
Expand All @@ -341,7 +341,7 @@ fn write_struct_using(out: &mut OutFile, ident: &Ident) {
}

fn write_struct_with_methods(out: &mut OutFile, ety: &ExternType, methods: &[&ExternFn]) {
let guard = format!("CXXBRIDGE03_STRUCT_{}{}", out.namespace, ety.ident);
let guard = format!("CXXBRIDGE04_STRUCT_{}{}", out.namespace, ety.ident);
writeln!(out, "#ifndef {}", guard);
writeln!(out, "#define {}", guard);
for line in ety.doc.to_string().lines() {
Expand All @@ -362,7 +362,7 @@ fn write_struct_with_methods(out: &mut OutFile, ety: &ExternType, methods: &[&Ex
}

fn write_enum(out: &mut OutFile, enm: &Enum) {
let guard = format!("CXXBRIDGE03_ENUM_{}{}", out.namespace, enm.ident);
let guard = format!("CXXBRIDGE04_ENUM_{}{}", out.namespace, enm.ident);
writeln!(out, "#ifndef {}", guard);
writeln!(out, "#define {}", guard);
for line in enm.doc.to_string().lines() {
Expand Down Expand Up @@ -408,7 +408,7 @@ fn write_exception_glue(out: &mut OutFile, apis: &[Api]) {
out.next_section();
writeln!(
out,
"const char *cxxbridge03$exception(const char *, size_t);",
"const char *cxxbridge04$exception(const char *, size_t);",
);
}
}
Expand Down Expand Up @@ -553,7 +553,7 @@ fn write_cxx_function_shim(
writeln!(out, " throw$.len = ::std::strlen(catch$);");
writeln!(
out,
" throw$.ptr = cxxbridge03$exception(catch$, throw$.len);",
" throw$.ptr = cxxbridge04$exception(catch$, throw$.len);",
);
writeln!(out, " }});");
writeln!(out, " return throw$;");
Expand Down Expand Up @@ -1026,7 +1026,7 @@ fn write_generic_instantiations(out: &mut OutFile, types: &Types) {
out.end_block("extern \"C\"");

out.begin_block("namespace rust");
out.begin_block("inline namespace cxxbridge03");
out.begin_block("inline namespace cxxbridge04");
for ty in types {
if let Type::RustBox(ty) = ty {
if let Type::Ident(inner) = &ty.inner {
Expand All @@ -1040,7 +1040,7 @@ fn write_generic_instantiations(out: &mut OutFile, types: &Types) {
}
}
}
out.end_block("namespace cxxbridge03");
out.end_block("namespace cxxbridge04");
out.end_block("namespace rust");
}

Expand All @@ -1053,54 +1053,54 @@ fn write_rust_box_extern(out: &mut OutFile, ident: &Ident) {
inner += &ident.to_string();
let instance = inner.replace("::", "$");

writeln!(out, "#ifndef CXXBRIDGE03_RUST_BOX_{}", instance);
writeln!(out, "#define CXXBRIDGE03_RUST_BOX_{}", instance);
writeln!(out, "#ifndef CXXBRIDGE04_RUST_BOX_{}", instance);
writeln!(out, "#define CXXBRIDGE04_RUST_BOX_{}", instance);
writeln!(
out,
"void cxxbridge03$box${}$uninit(::rust::Box<{}> *ptr) noexcept;",
"void cxxbridge04$box${}$uninit(::rust::Box<{}> *ptr) noexcept;",
instance, inner,
);
writeln!(
out,
"void cxxbridge03$box${}$drop(::rust::Box<{}> *ptr) noexcept;",
"void cxxbridge04$box${}$drop(::rust::Box<{}> *ptr) noexcept;",
instance, inner,
);
writeln!(out, "#endif // CXXBRIDGE03_RUST_BOX_{}", instance);
writeln!(out, "#endif // CXXBRIDGE04_RUST_BOX_{}", instance);
}

fn write_rust_vec_extern(out: &mut OutFile, element: &Ident) {
let element = Type::Ident(element.clone());
let inner = to_typename(&out.namespace, &element);
let instance = to_mangled(&out.namespace, &element);

writeln!(out, "#ifndef CXXBRIDGE03_RUST_VEC_{}", instance);
writeln!(out, "#define CXXBRIDGE03_RUST_VEC_{}", instance);
writeln!(out, "#ifndef CXXBRIDGE04_RUST_VEC_{}", instance);
writeln!(out, "#define CXXBRIDGE04_RUST_VEC_{}", instance);
writeln!(
out,
"void cxxbridge03$rust_vec${}$new(const ::rust::Vec<{}> *ptr) noexcept;",
"void cxxbridge04$rust_vec${}$new(const ::rust::Vec<{}> *ptr) noexcept;",
instance, inner,
);
writeln!(
out,
"void cxxbridge03$rust_vec${}$drop(::rust::Vec<{}> *ptr) noexcept;",
"void cxxbridge04$rust_vec${}$drop(::rust::Vec<{}> *ptr) noexcept;",
instance, inner,
);
writeln!(
out,
"size_t cxxbridge03$rust_vec${}$len(const ::rust::Vec<{}> *ptr) noexcept;",
"size_t cxxbridge04$rust_vec${}$len(const ::rust::Vec<{}> *ptr) noexcept;",
instance, inner,
);
writeln!(
out,
"const {} *cxxbridge03$rust_vec${}$data(const ::rust::Vec<{0}> *ptr) noexcept;",
"const {} *cxxbridge04$rust_vec${}$data(const ::rust::Vec<{0}> *ptr) noexcept;",
inner, instance,
);
writeln!(
out,
"size_t cxxbridge03$rust_vec${}$stride() noexcept;",
"size_t cxxbridge04$rust_vec${}$stride() noexcept;",
instance,
);
writeln!(out, "#endif // CXXBRIDGE03_RUST_VEC_{}", instance);
writeln!(out, "#endif // CXXBRIDGE04_RUST_VEC_{}", instance);
}

fn write_rust_box_impl(out: &mut OutFile, ident: &Ident) {
Expand All @@ -1114,12 +1114,12 @@ fn write_rust_box_impl(out: &mut OutFile, ident: &Ident) {

writeln!(out, "template <>");
writeln!(out, "void Box<{}>::uninit() noexcept {{", inner);
writeln!(out, " cxxbridge03$box${}$uninit(this);", instance);
writeln!(out, " cxxbridge04$box${}$uninit(this);", instance);
writeln!(out, "}}");

writeln!(out, "template <>");
writeln!(out, "void Box<{}>::drop() noexcept {{", inner);
writeln!(out, " cxxbridge03$box${}$drop(this);", instance);
writeln!(out, " cxxbridge04$box${}$drop(this);", instance);
writeln!(out, "}}");
}

Expand All @@ -1130,48 +1130,48 @@ fn write_rust_vec_impl(out: &mut OutFile, element: &Ident) {

writeln!(out, "template <>");
writeln!(out, "Vec<{}>::Vec() noexcept {{", inner);
writeln!(out, " cxxbridge03$rust_vec${}$new(this);", instance);
writeln!(out, " cxxbridge04$rust_vec${}$new(this);", instance);
writeln!(out, "}}");

writeln!(out, "template <>");
writeln!(out, "void Vec<{}>::drop() noexcept {{", inner);
writeln!(
out,
" return cxxbridge03$rust_vec${}$drop(this);",
" return cxxbridge04$rust_vec${}$drop(this);",
instance,
);
writeln!(out, "}}");

writeln!(out, "template <>");
writeln!(out, "size_t Vec<{}>::size() const noexcept {{", inner);
writeln!(out, " return cxxbridge03$rust_vec${}$len(this);", instance);
writeln!(out, " return cxxbridge04$rust_vec${}$len(this);", instance);
writeln!(out, "}}");

writeln!(out, "template <>");
writeln!(out, "const {} *Vec<{0}>::data() const noexcept {{", inner);
writeln!(
out,
" return cxxbridge03$rust_vec${}$data(this);",
" return cxxbridge04$rust_vec${}$data(this);",
instance,
);
writeln!(out, "}}");

writeln!(out, "template <>");
writeln!(out, "size_t Vec<{}>::stride() noexcept {{", inner);
writeln!(out, " return cxxbridge03$rust_vec${}$stride();", instance);
writeln!(out, " return cxxbridge04$rust_vec${}$stride();", instance);
writeln!(out, "}}");
}

fn write_unique_ptr(out: &mut OutFile, ident: &Ident, types: &Types) {
let ty = Type::Ident(ident.clone());
let instance = to_mangled(&out.namespace, &ty);

writeln!(out, "#ifndef CXXBRIDGE03_UNIQUE_PTR_{}", instance);
writeln!(out, "#define CXXBRIDGE03_UNIQUE_PTR_{}", instance);
writeln!(out, "#ifndef CXXBRIDGE04_UNIQUE_PTR_{}", instance);
writeln!(out, "#define CXXBRIDGE04_UNIQUE_PTR_{}", instance);

write_unique_ptr_common(out, &ty, types);

writeln!(out, "#endif // CXXBRIDGE03_UNIQUE_PTR_{}", instance);
writeln!(out, "#endif // CXXBRIDGE04_UNIQUE_PTR_{}", instance);
}

// Shared by UniquePtr<T> and UniquePtr<CxxVector<T>>.
Expand All @@ -1198,15 +1198,15 @@ fn write_unique_ptr_common(out: &mut OutFile, ty: &Type, types: &Types) {
);
writeln!(
out,
"void cxxbridge03$unique_ptr${}$null(::std::unique_ptr<{}> *ptr) noexcept {{",
"void cxxbridge04$unique_ptr${}$null(::std::unique_ptr<{}> *ptr) noexcept {{",
instance, inner,
);
writeln!(out, " new (ptr) ::std::unique_ptr<{}>();", inner);
writeln!(out, "}}");
if can_construct_from_value {
writeln!(
out,
"void cxxbridge03$unique_ptr${}$new(::std::unique_ptr<{}> *ptr, {} *value) noexcept {{",
"void cxxbridge04$unique_ptr${}$new(::std::unique_ptr<{}> *ptr, {} *value) noexcept {{",
instance, inner, inner,
);
writeln!(
Expand All @@ -1218,28 +1218,28 @@ fn write_unique_ptr_common(out: &mut OutFile, ty: &Type, types: &Types) {
}
writeln!(
out,
"void cxxbridge03$unique_ptr${}$raw(::std::unique_ptr<{}> *ptr, {} *raw) noexcept {{",
"void cxxbridge04$unique_ptr${}$raw(::std::unique_ptr<{}> *ptr, {} *raw) noexcept {{",
instance, inner, inner,
);
writeln!(out, " new (ptr) ::std::unique_ptr<{}>(raw);", inner);
writeln!(out, "}}");
writeln!(
out,
"const {} *cxxbridge03$unique_ptr${}$get(const ::std::unique_ptr<{}>& ptr) noexcept {{",
"const {} *cxxbridge04$unique_ptr${}$get(const ::std::unique_ptr<{}>& ptr) noexcept {{",
inner, instance, inner,
);
writeln!(out, " return ptr.get();");
writeln!(out, "}}");
writeln!(
out,
"{} *cxxbridge03$unique_ptr${}$release(::std::unique_ptr<{}>& ptr) noexcept {{",
"{} *cxxbridge04$unique_ptr${}$release(::std::unique_ptr<{}>& ptr) noexcept {{",
inner, instance, inner,
);
writeln!(out, " return ptr.release();");
writeln!(out, "}}");
writeln!(
out,
"void cxxbridge03$unique_ptr${}$drop(::std::unique_ptr<{}> *ptr) noexcept {{",
"void cxxbridge04$unique_ptr${}$drop(::std::unique_ptr<{}> *ptr) noexcept {{",
instance, inner,
);
writeln!(out, " ptr->~unique_ptr();");
Expand All @@ -1251,24 +1251,24 @@ fn write_cxx_vector(out: &mut OutFile, vector_ty: &Type, element: &Ident, types:
let inner = to_typename(&out.namespace, &element);
let instance = to_mangled(&out.namespace, &element);

writeln!(out, "#ifndef CXXBRIDGE03_VECTOR_{}", instance);
writeln!(out, "#define CXXBRIDGE03_VECTOR_{}", instance);
writeln!(out, "#ifndef CXXBRIDGE04_VECTOR_{}", instance);
writeln!(out, "#define CXXBRIDGE04_VECTOR_{}", instance);
writeln!(
out,
"size_t cxxbridge03$std$vector${}$size(const ::std::vector<{}> &s) noexcept {{",
"size_t cxxbridge04$std$vector${}$size(const ::std::vector<{}> &s) noexcept {{",
instance, inner,
);
writeln!(out, " return s.size();");
writeln!(out, "}}");
writeln!(
out,
"const {} *cxxbridge03$std$vector${}$get_unchecked(const ::std::vector<{}> &s, size_t pos) noexcept {{",
"const {} *cxxbridge04$std$vector${}$get_unchecked(const ::std::vector<{}> &s, size_t pos) noexcept {{",
inner, instance, inner,
);
writeln!(out, " return &s[pos];");
writeln!(out, "}}");

write_unique_ptr_common(out, vector_ty, types);

writeln!(out, "#endif // CXXBRIDGE03_VECTOR_{}", instance);
writeln!(out, "#endif // CXXBRIDGE04_VECTOR_{}", instance);
}
Loading

0 comments on commit 591dcb6

Please sign in to comment.