Structify Field.
PiperOrigin-RevId: 396917589
diff --git a/rs_bindings_from_cc/ast_visitor.cc b/rs_bindings_from_cc/ast_visitor.cc
index f174dcd..0d79442 100644
--- a/rs_bindings_from_cc/ast_visitor.cc
+++ b/rs_bindings_from_cc/ast_visitor.cc
@@ -100,8 +100,8 @@
std::vector<Field> fields;
for (const clang::FieldDecl* field_decl : record_decl->fields()) {
- fields.emplace_back(GetTranslatedName(field_decl),
- ConvertType(field_decl->getType()));
+ fields.push_back({.identifier = GetTranslatedName(field_decl),
+ .type = ConvertType(field_decl->getType())});
}
ir_.Records().emplace_back(GetTranslatedName(record_decl), std::move(fields));
return true;
diff --git a/rs_bindings_from_cc/ast_visitor_test.cc b/rs_bindings_from_cc/ast_visitor_test.cc
index ced33ea..2236707 100644
--- a/rs_bindings_from_cc/ast_visitor_test.cc
+++ b/rs_bindings_from_cc/ast_visitor_test.cc
@@ -155,13 +155,13 @@
EXPECT_THAT(some_struct.Fields(), SizeIs(2));
EXPECT_EQ(some_struct.Ident().Ident(), "SomeStruct");
Field first = some_struct.Fields()[0];
- EXPECT_EQ(first.Ident().Ident(), "first_field");
- EXPECT_EQ(first.FieldType().cc_name, "int");
- EXPECT_EQ(first.FieldType().rs_name, "i32");
+ EXPECT_EQ(first.identifier.Ident(), "first_field");
+ EXPECT_EQ(first.type.cc_name, "int");
+ EXPECT_EQ(first.type.rs_name, "i32");
Field second = some_struct.Fields()[1];
- EXPECT_EQ(second.Ident().Ident(), "second_field");
- EXPECT_EQ(second.FieldType().cc_name, "int");
- EXPECT_EQ(second.FieldType().rs_name, "i32");
+ EXPECT_EQ(second.identifier.Ident(), "second_field");
+ EXPECT_EQ(second.type.cc_name, "int");
+ EXPECT_EQ(second.type.rs_name, "i32");
}
} // namespace
diff --git a/rs_bindings_from_cc/ir.cc b/rs_bindings_from_cc/ir.cc
index 74cbc1c..c044377 100644
--- a/rs_bindings_from_cc/ir.cc
+++ b/rs_bindings_from_cc/ir.cc
@@ -54,8 +54,8 @@
nlohmann::json Field::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 da3f026..55021df 100644
--- a/rs_bindings_from_cc/ir.h
+++ b/rs_bindings_from_cc/ir.h
@@ -101,18 +101,11 @@
};
// A field (non-static member variable) of a record.
-class Field {
- public:
- Field(Identifier identifier, Type type)
- : identifier_(std::move(identifier)), type_(std::move(type)) {}
-
- const Identifier& Ident() const { return identifier_; }
- const Type& FieldType() const { return type_; }
+struct Field {
nlohmann::json ToJson() const;
- private:
- Identifier identifier_;
- Type type_;
+ Identifier identifier;
+ Type type;
};
// A record (struct, class, union).
diff --git a/rs_bindings_from_cc/ir_test.cc b/rs_bindings_from_cc/ir_test.cc
index 77ac077..67a67d9 100644
--- a/rs_bindings_from_cc/ir_test.cc
+++ b/rs_bindings_from_cc/ir_test.cc
@@ -63,10 +63,10 @@
.is_inline = false}},
{Record(Identifier(std::string("SomeStruct")),
{
- Field(Identifier(std::string("first_field")),
- Type{std::string("i32"), std::string("int")}),
- Field(Identifier(std::string("second_field")),
- Type{std::string("i32"), std::string("int")}),
+ Field{.identifier = Identifier("first_field"),
+ .type = Type{"i32", "int"}},
+ Field{.identifier = Identifier("second_field"),
+ .type = Type{"i32", "int"}},
})})
.ToJson(),
expected);