From b38998eff26098f9d940cda44719da81bc4d42d3 Mon Sep 17 00:00:00 2001 From: Alessio Quaglino Date: Fri, 31 May 2024 09:23:59 -0700 Subject: [PATCH] Replace mjs_deleteBody with mjs_delete. PiperOrigin-RevId: 639058333 Change-Id: I9ac9ca8c6b8c0219f0130cd65dc83602f1829684 --- src/user/user_api.cc | 10 +++++----- src/user/user_api.h | 4 ++-- src/user/user_objects.h | 3 ++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/user/user_api.cc b/src/user/user_api.cc index d818f778..0bf072f1 100644 --- a/src/user/user_api.cc +++ b/src/user/user_api.cc @@ -118,7 +118,7 @@ int mjs_detachBody(mjSpec* s, mjsBody* b) { mjCModel* model = static_cast(s->element); mjCBody* body = static_cast(b->element); *model -= *body; - mjs_deleteBody(b); + mjs_delete(b->element); return 0; } @@ -140,10 +140,10 @@ void mjs_deleteSpec(mjSpec* s) { -// delete body -void mjs_deleteBody(mjsBody* b) { - mjCBody* body = static_cast(b->element); - delete body; +// delete object, it will call the appropriate destructor since ~mjCBase is virtual +void mjs_delete(mjElement* element) { + mjCBase* object = static_cast(element); + delete object; } diff --git a/src/user/user_api.h b/src/user/user_api.h index e69c7602..400325c4 100644 --- a/src/user/user_api.h +++ b/src/user/user_api.h @@ -810,8 +810,8 @@ MJAPI mjsLight* mjs_addLight(mjsBody* body, mjsDefault* def); // Add frame to body. MJAPI mjsFrame* mjs_addFrame(mjsBody* body, mjsFrame* parentframe); -// Delete body. TODO: make this a general mjs_deleteElement function -MJAPI void mjs_deleteBody(mjsBody* b); +// Delete object corresponding to the given element. +MJAPI void mjs_delete(mjElement* element); //---------------------------------- Add non-tree elements ----------------------------------------- diff --git a/src/user/user_objects.h b/src/user/user_objects.h index b173d1e0..0ed56b4e 100644 --- a/src/user/user_objects.h +++ b/src/user/user_objects.h @@ -208,10 +208,11 @@ class mjCBase : public mjCBase_ { mjCFrame* frame; // pointer to frame transformation mjCModel* model; // pointer to model that created object + virtual ~mjCBase() = default; // destructor + protected: mjCBase(); // constructor mjCBase(const mjCBase& other); // copy constructor - virtual ~mjCBase() = default; // destructor };