Change `FuncParam` to be a struct, per IRL conversations.
This is 1/n CLs to do this for most of the complex types in ir.h.
PiperOrigin-RevId: 396808764
diff --git a/rs_bindings_from_cc/ast_visitor.cc b/rs_bindings_from_cc/ast_visitor.cc
index 2d28819..7bc1886 100644
--- a/rs_bindings_from_cc/ast_visitor.cc
+++ b/rs_bindings_from_cc/ast_visitor.cc
@@ -65,8 +65,7 @@
// TODO(hlopko): Fail when exceptions enabled?
std::vector<FuncParam> params;
for (const clang::ParmVarDecl* param : function_decl->parameters()) {
- params.emplace_back(ConvertType(param->getType()),
- GetTranslatedName(param));
+ params.push_back({ConvertType(param->getType()), GetTranslatedName(param)});
}
ir_.Functions().emplace_back(GetTranslatedName(function_decl),
diff --git a/rs_bindings_from_cc/ast_visitor_test.cc b/rs_bindings_from_cc/ast_visitor_test.cc
index ddd2b53..73d8a69 100644
--- a/rs_bindings_from_cc/ast_visitor_test.cc
+++ b/rs_bindings_from_cc/ast_visitor_test.cc
@@ -139,10 +139,10 @@
EXPECT_EQ(func.ReturnType().RsName(), "i32");
EXPECT_THAT(func.Params(), SizeIs(2));
- EXPECT_EQ(func.Params()[0].ParamType().RsName(), "i32");
- EXPECT_EQ(func.Params()[0].Ident().Ident(), "a");
- EXPECT_EQ(func.Params()[1].ParamType().RsName(), "i32");
- EXPECT_EQ(func.Params()[1].Ident().Ident(), "b");
+ EXPECT_EQ(func.Params()[0].type.RsName(), "i32");
+ EXPECT_EQ(func.Params()[0].identifier.Ident(), "a");
+ EXPECT_EQ(func.Params()[1].type.RsName(), "i32");
+ EXPECT_EQ(func.Params()[1].identifier.Ident(), "b");
}
} // namespace
diff --git a/rs_bindings_from_cc/ir.cc b/rs_bindings_from_cc/ir.cc
index ce94531..2a8ea54 100644
--- a/rs_bindings_from_cc/ir.cc
+++ b/rs_bindings_from_cc/ir.cc
@@ -33,8 +33,8 @@
nlohmann::json FuncParam::ToJson() const {
nlohmann::json result;
- result["type"] = type_.ToJson();
- result["identifier"] = identifier_.ToJson();
+ result["type"] = type.ToJson();
+ result["identifier"] = identifier.ToJson();
return result;
}
diff --git a/rs_bindings_from_cc/ir.h b/rs_bindings_from_cc/ir.h
index 3098055..48d33e4 100644
--- a/rs_bindings_from_cc/ir.h
+++ b/rs_bindings_from_cc/ir.h
@@ -90,20 +90,12 @@
//
// Examples:
// FuncParam of a C++ function `void Foo(int32_t a);` will be
-// `FuncParam(Type("i32"), Identifier("foo"))`.
-class FuncParam {
- public:
- explicit FuncParam(Type type, Identifier identifier)
- : type_(std::move(type)), identifier_(std::move(identifier)) {}
-
- const Type& ParamType() const { return type_; }
- const Identifier& Ident() const { return identifier_; }
-
+// `FuncParam{.type=Type("i32", "int32_t"), .identifier=Identifier("foo"))`.
+struct FuncParam {
nlohmann::json ToJson() const;
- private:
- Type type_;
- Identifier identifier_;
+ Type type;
+ Identifier identifier;
};
// A function involved in the bindings.
diff --git a/rs_bindings_from_cc/ir_test.cc b/rs_bindings_from_cc/ir_test.cc
index 424b478..fae84b2 100644
--- a/rs_bindings_from_cc/ir_test.cc
+++ b/rs_bindings_from_cc/ir_test.cc
@@ -40,8 +40,8 @@
{Func(Identifier(std::string("hello_world")),
std::string("#$mangled_name$#"),
Type(std::string("i32"), std::string("int")),
- {FuncParam(Type(std::string("i32"), std::string("int")),
- Identifier(std::string("arg")))},
+ {FuncParam{Type(std::string("i32"), std::string("int")),
+ Identifier(std::string("arg"))}},
/* is_inline= */ false)})
.ToJson(),
expected);
diff --git a/rs_bindings_from_cc/src_code_gen_test.cc b/rs_bindings_from_cc/src_code_gen_test.cc
index 97be5b2..345af3f 100644
--- a/rs_bindings_from_cc/src_code_gen_test.cc
+++ b/rs_bindings_from_cc/src_code_gen_test.cc
@@ -21,8 +21,8 @@
{Func(Identifier(std::string("hello_world")),
std::string("$$mangled_name$$"),
Type(std::string("i32"), std::string("int")),
- {FuncParam(Type(std::string("i32"), std::string("int")),
- Identifier(std::string("arg")))},
+ {FuncParam{Type(std::string("i32"), std::string("int")),
+ Identifier(std::string("arg"))}},
/* is_inline= */ true)});
Bindings bindings = GenerateBindings(ir);
EXPECT_THAT(