Allow model holder to release ownership of mujoco structs.
PiperOrigin-RevId: 872242489 Change-Id: I055f54f4e111cc78c489c12d9ae5c02cfb57169d
This commit is contained in:
committed by
Copybara-Service
parent
ccd282b036
commit
ab80bd0916
@@ -137,4 +137,22 @@ void ModelHolder::SetLoadError(std::string_view error) {
|
|||||||
error_[sizeof(error_) - 1] = 0;
|
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
|
} // namespace mujoco::platform
|
||||||
|
|||||||
@@ -56,6 +56,13 @@ class ModelHolder {
|
|||||||
// Returns the error message if the model failed to load.
|
// Returns the error message if the model failed to load.
|
||||||
std::string_view error() const { return error_; }
|
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:
|
private:
|
||||||
ModelHolder() = default;
|
ModelHolder() = default;
|
||||||
void InitFromSpec(mjSpec* spec);
|
void InitFromSpec(mjSpec* spec);
|
||||||
|
|||||||
Reference in New Issue
Block a user