Allow model holder to release ownership of mujoco structs.

PiperOrigin-RevId: 872242489
Change-Id: I055f54f4e111cc78c489c12d9ae5c02cfb57169d
This commit is contained in:
Haroon Qureshi
2026-02-19 00:05:21 -08:00
committed by Copybara-Service
parent ccd282b036
commit ab80bd0916
2 changed files with 25 additions and 0 deletions
+18
View File
@@ -137,4 +137,22 @@ void ModelHolder::SetLoadError(std::string_view error) {
error_[sizeof(error_) - 1] = 0;
}
mjSpec* ModelHolder::ReleaseSpec() {
mjSpec* spec = spec_;
spec_ = nullptr;
return spec;
}
mjData* ModelHolder::ReleaseData() {
mjData* data = data_;
data_ = nullptr;
return data;
}
mjModel* ModelHolder::ReleaseModel() {
mjModel* model = model_;
model_ = nullptr;
return model;
}
} // namespace mujoco::platform
+7
View File
@@ -56,6 +56,13 @@ class ModelHolder {
// Returns the error message if the model failed to load.
std::string_view error() const { return error_; }
// Releases ownership of the underlying MuJoCo structures. Callers are now
// responsible for calling the appropriate `mj_delete*` function on these
// objects.
mjSpec* ReleaseSpec();
mjData* ReleaseData();
mjModel* ReleaseModel();
private:
ModelHolder() = default;
void InitFromSpec(mjSpec* spec);