diff --git a/src/xml/xml_native_writer.cc b/src/xml/xml_native_writer.cc index c0f07e10..a51f1709 100644 --- a/src/xml/xml_native_writer.cc +++ b/src/xml/xml_native_writer.cc @@ -69,7 +69,45 @@ static string WriteDoc(XMLDocument& doc, char *error, size_t error_sz) { mjCopyError(error, doc.ErrorStr(), error_sz); return ""; } - return string(stream.CStr()); + std::string str = string(stream.CStr()); + + // top level sections + auto sections = {"", "name); + if (def->name != "main") { + WriteAttrTxt(section, "class", def->name); + } // mesh elem = InsertEnd(section, "mesh"); diff --git a/test/xml/xml_api_test.cc b/test/xml/xml_api_test.cc index 8c5041a2..9b5b241c 100644 --- a/test/xml/xml_api_test.cc +++ b/test/xml/xml_api_test.cc @@ -124,8 +124,8 @@ TEST_F(MujocoTest, SaveXmlShortString) { std::array out; EXPECT_THAT(mj_saveXMLString(spec, out.data(), out.size(), - error.data(), error.size()), 272); - EXPECT_STREQ(error.data(), "Output string too short, should be at least 273"); + error.data(), error.size()), 273); + EXPECT_STREQ(error.data(), "Output string too short, should be at least 274"); mj_deleteSpec(spec); mj_deleteModel(model); @@ -139,7 +139,7 @@ TEST_F(MujocoTest, SaveXml) { mjModel* model = mj_compile(spec, 0); EXPECT_THAT(model, NotNull()) << "Failed to compile model: " << error.data(); - std::array out; + std::array out; EXPECT_THAT(mj_saveXMLString(spec, out.data(), out.size(), error.data(), error.size()), 0) << error.data();