Skip to content

Commit b297dea

Browse files
committed
fix
1 parent b961b0f commit b297dea

4 files changed

Lines changed: 16 additions & 21 deletions

File tree

‎cpp2rust/converter/converter.cpp‎

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,7 @@ use std::rc::Rc;
6060
)");
6161
}
6262

63-
std::string Converter::EmitMethodsOnPtr() {
64-
std::string out;
63+
void Converter::EmitMethodsOnPtr(std::string &out) {
6564
for (const auto &[name, methods] : methods_on_ptr_) {
6665
out += methods.trait_header;
6766
out += " {\n";
@@ -72,35 +71,30 @@ std::string Converter::EmitMethodsOnPtr() {
7271
out += methods.impl_body;
7372
out += "}\n";
7473
}
75-
return out;
7674
}
7775

7876
std::string Converter::ForceGlobalInit(const clang::VarDecl *decl) {
7977
return std::format("std::cell::LazyCell::force(&*&raw const {});",
8078
GetNamedDeclAsString(decl));
8179
}
8280

83-
std::string Converter::EmitGlobalInits(Model model) {
84-
std::string out = model == Model::kUnsafe
85-
? "pub unsafe fn __cpp2rust_init_globals() {\n"
86-
: "pub fn __cpp2rust_init_globals() {\n";
81+
void Converter::EmitGlobalInits(Model model, string &out) {
82+
out += model == Model::kUnsafe ? "pub unsafe fn __cpp2rust_init_globals() {\n"
83+
: "pub fn __cpp2rust_init_globals() {\n";
8784
for (const auto &line : global_inits_) {
8885
out += line;
8986
out += '\n';
9087
}
9188
out += "}\n";
92-
return out;
9389
}
9490

95-
std::string Converter::EmitOpaqueRecords() {
96-
std::string out;
91+
void Converter::EmitOpaqueRecords(std::string &out) {
9792
record_decls_.ForEachUndefined([&](const std::string &name) {
9893
out += "#[derive(Clone, Copy, Default, ByteRepr)]";
9994
out += "pub struct ";
10095
out += name;
10196
out += ";\n";
10297
});
103-
return out;
10498
}
10599

106100
bool Converter::VisitRecoveryExpr(clang::RecoveryExpr *expr) {

‎cpp2rust/converter/converter.h‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
5252

5353
virtual void EmitFilePreamble();
5454

55-
static std::string EmitOpaqueRecords();
56-
static std::string EmitGlobalInits(Model model);
55+
static void EmitOpaqueRecords(std::string &out);
56+
static void EmitGlobalInits(Model model, std::string &out);
5757

58-
static std::string EmitMethodsOnPtr();
58+
static void EmitMethodsOnPtr(std::string &out);
5959

6060
virtual bool VisitBuiltinType(clang::BuiltinType *type);
6161

‎cpp2rust/converter/models/converter_refcount.cpp‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2449,7 +2449,8 @@ void ConverterRefCount::ConvertPointerSubscript(
24492449
}
24502450

24512451
std::string ConverterRefCount::ForceGlobalInit(const clang::VarDecl *decl) {
2452-
return std::format("let _ = {}.with(|_| ());", GetNamedDeclAsString(decl), clone);
2452+
return std::format("let _ = {}.with(|_| ());", GetNamedDeclAsString(decl),
2453+
clone);
24532454
}
24542455

24552456
void ConverterRefCount::ConvertFunctionMain(

‎cpp2rust/cpp2rust_lib.cpp‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ std::string TranspileSrc(std::string_view cc_code, Model model,
3030
rules_dir),
3131
cc_code, tool_args, std::filesystem::path(filename).filename().string(),
3232
filename.ends_with(".c") ? CLANG_C_COMPILER : CLANG_CXX_COMPILER);
33-
rs_code += Converter::EmitOpaqueRecords();
34-
rs_code += Converter::EmitMethodsOnPtr();
35-
rs_code += Converter::EmitGlobalInits(model);
33+
Converter::EmitOpaqueRecords(rs_code);
34+
Converter::EmitMethodsOnPtr(rs_code);
35+
Converter::EmitGlobalInits(model, rs_code);
3636
return rs_code;
3737
}
3838

@@ -72,9 +72,9 @@ std::string TranspileDir(std::string_view build_dir, Model model,
7272
std::string rs_code;
7373
FrontendActionFactory factory(rs_code, model, rules_dir);
7474
Tool.run(&factory);
75-
rs_code += Converter::EmitOpaqueRecords();
76-
rs_code += Converter::EmitMethodsOnPtr();
77-
rs_code += Converter::EmitGlobalInits(model);
75+
Converter::EmitOpaqueRecords(rs_code);
76+
Converter::EmitMethodsOnPtr(rs_code);
77+
Converter::EmitGlobalInits(model, rs_code);
7878
return rs_code;
7979
}
8080
} // namespace cpp2rust

0 commit comments

Comments
 (0)