Replace mjs_detachBody and mjs_detachDefault with mjs_detach.
In a follow-up, mjs_detach will be changed to only remove without deleting an element. PiperOrigin-RevId: 773637351 Change-Id: I9ee4d3584ba88ccc225591337cf036bab806e25c
This commit is contained in:
committed by
Copybara-Service
parent
4ce6293217
commit
0488d9f4eb
+2
-2
@@ -2000,7 +2000,7 @@
|
||||
"\n",
|
||||
"# Delete all key frames to avoid name conflicts\n",
|
||||
"while humanoid.keys:\n",
|
||||
" humanoid.keys[-1].delete()\n",
|
||||
" humanoid.delete(keys[-1])\n",
|
||||
"\n",
|
||||
"# Create a grid of humanoids by attaching humanoid to spec multiple times\n",
|
||||
"for i in range(4):\n",
|
||||
@@ -2335,7 +2335,7 @@
|
||||
"fly = mj.MjSpec.from_file(fly_file)\n",
|
||||
"# Remove lights from fly so they are not duplicated in line-up\n",
|
||||
"for light in fly.lights:\n",
|
||||
" light.delete()\n",
|
||||
" fly.delete(light)\n",
|
||||
"\n",
|
||||
"small_fly = scale_spec(fly, 1.25)\n",
|
||||
"large_fly = scale_spec(fly, 2)\n",
|
||||
|
||||
@@ -8987,45 +8987,25 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
||||
),
|
||||
doc='Attach child to a parent, return the attached element if success or NULL otherwise.', # pylint: disable=line-too-long
|
||||
)),
|
||||
('mjs_detachBody',
|
||||
('mjs_detach',
|
||||
FunctionDecl(
|
||||
name='mjs_detachBody',
|
||||
name='mjs_detach',
|
||||
return_type=ValueType(name='int'),
|
||||
parameters=(
|
||||
FunctionParameterDecl(
|
||||
name='s',
|
||||
name='spec',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjSpec'),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='b',
|
||||
name='element',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjsBody'),
|
||||
inner_type=ValueType(name='mjsElement'),
|
||||
),
|
||||
),
|
||||
),
|
||||
doc='Delete body and descendants from mjSpec, remove all references, return 0 on success.', # pylint: disable=line-too-long
|
||||
)),
|
||||
('mjs_detachDefault',
|
||||
FunctionDecl(
|
||||
name='mjs_detachDefault',
|
||||
return_type=ValueType(name='int'),
|
||||
parameters=(
|
||||
FunctionParameterDecl(
|
||||
name='s',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjSpec'),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='d',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjsDefault'),
|
||||
),
|
||||
),
|
||||
),
|
||||
doc='Delete default class and descendants from mjSpec, remove all references, return 0 on success.', # pylint: disable=line-too-long
|
||||
doc='Detach but not delete object corresponding to the given element, return 0 on success.', # pylint: disable=line-too-long
|
||||
)),
|
||||
('mjs_addBody',
|
||||
FunctionDecl(
|
||||
@@ -9202,6 +9182,12 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
||||
name='mjs_delete',
|
||||
return_type=ValueType(name='int'),
|
||||
parameters=(
|
||||
FunctionParameterDecl(
|
||||
name='spec',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjSpec'),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='element',
|
||||
type=PointerType(
|
||||
|
||||
+71
-36
@@ -397,7 +397,7 @@ PYBIND11_MODULE(_specs, m) {
|
||||
},
|
||||
py::return_value_policy::reference_internal);
|
||||
mjSpec.def("detach_default", [](MjSpec& self, raw::MjsDefault& def) {
|
||||
if (mjs_detachDefault(self.ptr, &def) != 0) {
|
||||
if (mjs_delete(self.ptr, def.element) != 0) {
|
||||
throw pybind11::value_error(mjs_getError(self.ptr));
|
||||
}
|
||||
});
|
||||
@@ -408,7 +408,7 @@ PYBIND11_MODULE(_specs, m) {
|
||||
},
|
||||
py::return_value_policy::reference_internal);
|
||||
mjSpec.def("detach_body", [](MjSpec& self, raw::MjsBody& body) {
|
||||
mjs_detachBody(self.ptr, &body);
|
||||
mjs_delete(self.ptr, body.element);
|
||||
});
|
||||
mjSpec.def(
|
||||
"attach",
|
||||
@@ -759,7 +759,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
|
||||
|
||||
// ============================= MJSFRAME ====================================
|
||||
mjsFrame.def("delete", [](raw::MjsFrame& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsFrame& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsFrame.def("set_frame", [](raw::MjsFrame& self, raw::MjsFrame& frame) {
|
||||
if (mjs_setFrame(self.element, &frame) != 0) {
|
||||
throw pybind11::value_error(mjs_getError(mjs_getSpec(self.element)));
|
||||
@@ -796,7 +798,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
py::return_value_policy::reference_internal);
|
||||
|
||||
// ============================= MJSGEOM =====================================
|
||||
mjsGeom.def("delete", [](raw::MjsGeom& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsGeom& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsGeom.def("set_frame", [](raw::MjsGeom& self, raw::MjsFrame& frame) {
|
||||
if (mjs_setFrame(self.element, &frame) != 0) {
|
||||
throw pybind11::value_error(mjs_getError(mjs_getSpec(self.element)));
|
||||
@@ -824,7 +828,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
py::return_value_policy::reference_internal);
|
||||
|
||||
// ============================= MJSJOINT ====================================
|
||||
mjsJoint.def("delete", [](raw::MjsJoint& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsJoint& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsJoint.def("set_frame", [](raw::MjsJoint& self, raw::MjsFrame& frame) {
|
||||
if (mjs_setFrame(self.element, &frame) != 0) {
|
||||
throw pybind11::value_error(mjs_getError(mjs_getSpec(self.element)));
|
||||
@@ -852,7 +858,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
py::return_value_policy::reference_internal);
|
||||
|
||||
// ============================= MJSSITE =====================================
|
||||
mjsSite.def("delete", [](raw::MjsSite& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsSite& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsSite.def("set_frame", [](raw::MjsSite& self, raw::MjsFrame& frame) {
|
||||
if (mjs_setFrame(self.element, &frame) != 0) {
|
||||
throw pybind11::value_error(mjs_getError(mjs_getSpec(self.element)));
|
||||
@@ -897,8 +905,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
py::return_value_policy::reference_internal);
|
||||
|
||||
// ============================= MJSCAMERA ===================================
|
||||
mjsCamera.def("delete",
|
||||
[](raw::MjsCamera& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsCamera& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsCamera.def("set_frame", [](raw::MjsCamera& self, raw::MjsFrame& frame) {
|
||||
if (mjs_setFrame(self.element, &frame) != 0) {
|
||||
throw pybind11::value_error(mjs_getError(mjs_getSpec(self.element)));
|
||||
@@ -926,7 +935,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
py::return_value_policy::reference_internal);
|
||||
|
||||
// ============================= MJSLIGHT ====================================
|
||||
mjsLight.def("delete", [](raw::MjsLight& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsLight& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsLight.def("set_frame", [](raw::MjsLight& self, raw::MjsFrame& frame) {
|
||||
if (mjs_setFrame(self.element, &frame) != 0) {
|
||||
throw pybind11::value_error(mjs_getError(mjs_getSpec(self.element)));
|
||||
@@ -954,8 +965,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
py::return_value_policy::reference_internal);
|
||||
|
||||
// ============================= MJSMATERIAL =================================
|
||||
mjsMaterial.def("delete",
|
||||
[](raw::MjsMaterial& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsMaterial& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsMaterial.def_property(
|
||||
"classname",
|
||||
[](raw::MjsMaterial& self) -> raw::MjsDefault* {
|
||||
@@ -966,7 +978,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
});
|
||||
|
||||
// ============================= MJSMESH =====================================
|
||||
mjsMesh.def("delete", [](raw::MjsMesh& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsMesh& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsMesh.def_property(
|
||||
"classname",
|
||||
[](raw::MjsMesh& self) -> raw::MjsDefault* {
|
||||
@@ -977,7 +991,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
});
|
||||
|
||||
// ============================= MJSPAIR =====================================
|
||||
mjsPair.def("delete", [](raw::MjsPair& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsPair& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsPair.def_property(
|
||||
"classname",
|
||||
[](raw::MjsPair& self) -> raw::MjsDefault* {
|
||||
@@ -988,8 +1004,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
});
|
||||
|
||||
// ============================= MJSEQUAL ====================================
|
||||
mjsEquality.def("delete",
|
||||
[](raw::MjsEquality& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsEquality& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsEquality.def_property(
|
||||
"classname",
|
||||
[](raw::MjsEquality& self) -> raw::MjsDefault* {
|
||||
@@ -1000,8 +1017,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
});
|
||||
|
||||
// ============================= MJSACTUATOR =================================
|
||||
mjsActuator.def("delete",
|
||||
[](raw::MjsActuator& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsActuator& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsActuator.def_property(
|
||||
"classname",
|
||||
[](raw::MjsActuator& self) -> raw::MjsDefault* {
|
||||
@@ -1101,8 +1119,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
py::arg("gain"));
|
||||
|
||||
// ============================= MJSTENDON ===================================
|
||||
mjsTendon.def("delete",
|
||||
[](raw::MjsTendon& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsTendon& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsTendon.def(
|
||||
"default",
|
||||
[](raw::MjsTendon& self) -> raw::MjsDefault* {
|
||||
@@ -1135,39 +1154,54 @@ PYBIND11_MODULE(_specs, m) {
|
||||
py::return_value_policy::reference_internal);
|
||||
|
||||
// ============================= MJSSENSOR ===================================
|
||||
mjsSensor.def("delete",
|
||||
[](raw::MjsSensor& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsSensor& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
|
||||
// ============================= MJSFLEX =====================================
|
||||
mjsFlex.def("delete", [](raw::MjsFlex& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsFlex& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
|
||||
// ============================= MJSHFIELD ===================================
|
||||
mjsHField.def("delete",
|
||||
[](raw::MjsHField& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsHField& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
|
||||
// ============================= MJSSKIN =====================================
|
||||
mjsSkin.def("delete", [](raw::MjsSkin& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsSkin& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
|
||||
// ============================= MJSTEXTURE ==================================
|
||||
mjsTexture.def("delete",
|
||||
[](raw::MjsTexture& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsTexture& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
|
||||
// ============================= MJSKEY ======================================
|
||||
mjsKey.def("delete", [](raw::MjsKey& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsKey& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
|
||||
// ============================= MJSTEXT =====================================
|
||||
mjsText.def("delete", [](raw::MjsText& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsText& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
|
||||
// ============================= MJSNUMERIC ==================================
|
||||
mjsNumeric.def("delete",
|
||||
[](raw::MjsNumeric& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsNumeric& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
|
||||
// ============================= MJSEXCLUDE ==================================
|
||||
mjsExclude.def("delete",
|
||||
[](raw::MjsExclude& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsExclude& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
|
||||
// ============================= MJSTUPLE ====================================
|
||||
mjsTuple.def("delete", [](raw::MjsTuple& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsTuple& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
|
||||
// ============================= MJSPLUGIN ===================================
|
||||
mjsPlugin.def_property(
|
||||
@@ -1176,8 +1210,9 @@ PYBIND11_MODULE(_specs, m) {
|
||||
[](raw::MjsPlugin& self, raw::MjsPlugin* other) {
|
||||
self.element = other->element;
|
||||
});
|
||||
mjsPlugin.def("delete",
|
||||
[](raw::MjsPlugin& self) { mjs_delete(self.element); });
|
||||
mjSpec.def("delete", [](MjSpec& self, raw::MjsPlugin& obj) {
|
||||
mjs_delete(self.ptr, obj.element);
|
||||
});
|
||||
mjsPlugin.def_property(
|
||||
"config",
|
||||
[](raw::MjsPlugin& self) -> py::dict {
|
||||
|
||||
@@ -838,9 +838,9 @@ class SpecsTest(absltest.TestCase):
|
||||
self.assertIsNotNone(site)
|
||||
self.assertEqual(site, spec.site('head'))
|
||||
|
||||
site.delete()
|
||||
spec.sensors[-1].delete()
|
||||
spec.sensors[-1].delete()
|
||||
spec.delete(site)
|
||||
spec.delete(spec.sensors[-1])
|
||||
spec.delete(spec.sensors[-1])
|
||||
|
||||
model = spec.compile()
|
||||
self.assertIsNotNone(model)
|
||||
@@ -930,7 +930,7 @@ class SpecsTest(absltest.TestCase):
|
||||
""")
|
||||
plugin = spec.plugins[0]
|
||||
self.assertIsNotNone(plugin)
|
||||
plugin.delete()
|
||||
spec.delete(plugin)
|
||||
|
||||
model = spec.compile()
|
||||
self.assertIsNotNone(model)
|
||||
|
||||
Reference in New Issue
Block a user