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;
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user