Add const to mjsDefault when used as function argument.
Fixes #2197. PiperOrigin-RevId: 692346264 Change-Id: Iddb9be1377a7d59c86911802d8c5563f6bf6b043
This commit is contained in:
committed by
Copybara-Service
parent
47ebb0614e
commit
ebe60b9ad5
+14
-14
@@ -3567,22 +3567,22 @@ mjsFrame* mjs_attachFrame(mjsBody* parent, const mjsFrame* child,
|
|||||||
mjsBody* mjs_attachToSite(mjsSite* parent, const mjsBody* child,
|
mjsBody* mjs_attachToSite(mjsSite* parent, const mjsBody* child,
|
||||||
const char* prefix, const char* suffix);
|
const char* prefix, const char* suffix);
|
||||||
int mjs_detachBody(mjSpec* s, mjsBody* b);
|
int mjs_detachBody(mjSpec* s, mjsBody* b);
|
||||||
mjsBody* mjs_addBody(mjsBody* body, mjsDefault* def);
|
mjsBody* mjs_addBody(mjsBody* body, const mjsDefault* def);
|
||||||
mjsSite* mjs_addSite(mjsBody* body, mjsDefault* def);
|
mjsSite* mjs_addSite(mjsBody* body, const mjsDefault* def);
|
||||||
mjsJoint* mjs_addJoint(mjsBody* body, mjsDefault* def);
|
mjsJoint* mjs_addJoint(mjsBody* body, const mjsDefault* def);
|
||||||
mjsJoint* mjs_addFreeJoint(mjsBody* body);
|
mjsJoint* mjs_addFreeJoint(mjsBody* body);
|
||||||
mjsGeom* mjs_addGeom(mjsBody* body, mjsDefault* def);
|
mjsGeom* mjs_addGeom(mjsBody* body, const mjsDefault* def);
|
||||||
mjsCamera* mjs_addCamera(mjsBody* body, mjsDefault* def);
|
mjsCamera* mjs_addCamera(mjsBody* body, const mjsDefault* def);
|
||||||
mjsLight* mjs_addLight(mjsBody* body, mjsDefault* def);
|
mjsLight* mjs_addLight(mjsBody* body, const mjsDefault* def);
|
||||||
mjsFrame* mjs_addFrame(mjsBody* body, mjsFrame* parentframe);
|
mjsFrame* mjs_addFrame(mjsBody* body, mjsFrame* parentframe);
|
||||||
void mjs_delete(mjsElement* element);
|
void mjs_delete(mjsElement* element);
|
||||||
mjsActuator* mjs_addActuator(mjSpec* s, mjsDefault* def);
|
mjsActuator* mjs_addActuator(mjSpec* s, const mjsDefault* def);
|
||||||
mjsSensor* mjs_addSensor(mjSpec* s);
|
mjsSensor* mjs_addSensor(mjSpec* s);
|
||||||
mjsFlex* mjs_addFlex(mjSpec* s);
|
mjsFlex* mjs_addFlex(mjSpec* s);
|
||||||
mjsPair* mjs_addPair(mjSpec* s, mjsDefault* def);
|
mjsPair* mjs_addPair(mjSpec* s, const mjsDefault* def);
|
||||||
mjsExclude* mjs_addExclude(mjSpec* s);
|
mjsExclude* mjs_addExclude(mjSpec* s);
|
||||||
mjsEquality* mjs_addEquality(mjSpec* s, mjsDefault* def);
|
mjsEquality* mjs_addEquality(mjSpec* s, const mjsDefault* def);
|
||||||
mjsTendon* mjs_addTendon(mjSpec* s, mjsDefault* def);
|
mjsTendon* mjs_addTendon(mjSpec* s, const mjsDefault* def);
|
||||||
mjsWrap* mjs_wrapSite(mjsTendon* tendon, const char* name);
|
mjsWrap* mjs_wrapSite(mjsTendon* tendon, const char* name);
|
||||||
mjsWrap* mjs_wrapGeom(mjsTendon* tendon, const char* name, const char* sidesite);
|
mjsWrap* mjs_wrapGeom(mjsTendon* tendon, const char* name, const char* sidesite);
|
||||||
mjsWrap* mjs_wrapJoint(mjsTendon* tendon, const char* name, double coef);
|
mjsWrap* mjs_wrapJoint(mjsTendon* tendon, const char* name, double coef);
|
||||||
@@ -3593,11 +3593,11 @@ mjsTuple* mjs_addTuple(mjSpec* s);
|
|||||||
mjsKey* mjs_addKey(mjSpec* s);
|
mjsKey* mjs_addKey(mjSpec* s);
|
||||||
mjsPlugin* mjs_addPlugin(mjSpec* s);
|
mjsPlugin* mjs_addPlugin(mjSpec* s);
|
||||||
mjsDefault* mjs_addDefault(mjSpec* s, const char* classname, const mjsDefault* parent);
|
mjsDefault* mjs_addDefault(mjSpec* s, const char* classname, const mjsDefault* parent);
|
||||||
mjsMesh* mjs_addMesh(mjSpec* s, mjsDefault* def);
|
mjsMesh* mjs_addMesh(mjSpec* s, const mjsDefault* def);
|
||||||
mjsHField* mjs_addHField(mjSpec* s);
|
mjsHField* mjs_addHField(mjSpec* s);
|
||||||
mjsSkin* mjs_addSkin(mjSpec* s);
|
mjsSkin* mjs_addSkin(mjSpec* s);
|
||||||
mjsTexture* mjs_addTexture(mjSpec* s);
|
mjsTexture* mjs_addTexture(mjSpec* s);
|
||||||
mjsMaterial* mjs_addMaterial(mjSpec* s, mjsDefault* def);
|
mjsMaterial* mjs_addMaterial(mjSpec* s, const mjsDefault* def);
|
||||||
mjSpec* mjs_getSpec(mjsElement* element);
|
mjSpec* mjs_getSpec(mjsElement* element);
|
||||||
mjSpec* mjs_findSpec(mjSpec* spec, const char* name);
|
mjSpec* mjs_findSpec(mjSpec* spec, const char* name);
|
||||||
mjsBody* mjs_findBody(mjSpec* s, const char* name);
|
mjsBody* mjs_findBody(mjSpec* s, const char* name);
|
||||||
@@ -3605,7 +3605,7 @@ mjsElement* mjs_findElement(mjSpec* s, mjtObj type, const char* name);
|
|||||||
mjsBody* mjs_findChild(mjsBody* body, const char* name);
|
mjsBody* mjs_findChild(mjsBody* body, const char* name);
|
||||||
mjsFrame* mjs_findFrame(mjSpec* s, const char* name);
|
mjsFrame* mjs_findFrame(mjSpec* s, const char* name);
|
||||||
mjsDefault* mjs_getDefault(mjsElement* element);
|
mjsDefault* mjs_getDefault(mjsElement* element);
|
||||||
mjsDefault* mjs_findDefault(mjSpec* s, const char* classname);
|
const mjsDefault* mjs_findDefault(mjSpec* s, const char* classname);
|
||||||
mjsDefault* mjs_getSpecDefault(mjSpec* s);
|
mjsDefault* mjs_getSpecDefault(mjSpec* s);
|
||||||
int mjs_getId(mjsElement* element);
|
int mjs_getId(mjsElement* element);
|
||||||
mjsElement* mjs_firstChild(mjsBody* body, mjtObj type, int recurse);
|
mjsElement* mjs_firstChild(mjsBody* body, mjtObj type, int recurse);
|
||||||
@@ -3625,7 +3625,7 @@ void mjs_setDouble(mjDoubleVec* dest, const double* array, int size);
|
|||||||
void mjs_setPluginAttributes(mjsPlugin* plugin, void* attributes);
|
void mjs_setPluginAttributes(mjsPlugin* plugin, void* attributes);
|
||||||
const char* mjs_getString(const mjString* source);
|
const char* mjs_getString(const mjString* source);
|
||||||
const double* mjs_getDouble(const mjDoubleVec* source, int* size);
|
const double* mjs_getDouble(const mjDoubleVec* source, int* size);
|
||||||
void mjs_setDefault(mjsElement* element, mjsDefault* def);
|
void mjs_setDefault(mjsElement* element, const mjsDefault* def);
|
||||||
void mjs_setFrame(mjsElement* dest, mjsFrame* frame);
|
void mjs_setFrame(mjsElement* dest, mjsFrame* frame);
|
||||||
const char* mjs_resolveOrientation(double quat[4], mjtByte degree, const char* sequence,
|
const char* mjs_resolveOrientation(double quat[4], mjtByte degree, const char* sequence,
|
||||||
const mjsOrientation* orientation);
|
const mjsOrientation* orientation);
|
||||||
|
|||||||
+14
-14
@@ -1421,25 +1421,25 @@ MJAPI int mjs_detachBody(mjSpec* s, mjsBody* b);
|
|||||||
//---------------------------------- Tree elements -------------------------------------------------
|
//---------------------------------- Tree elements -------------------------------------------------
|
||||||
|
|
||||||
// Add child body to body, return child.
|
// Add child body to body, return child.
|
||||||
MJAPI mjsBody* mjs_addBody(mjsBody* body, mjsDefault* def);
|
MJAPI mjsBody* mjs_addBody(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add site to body, return site spec.
|
// Add site to body, return site spec.
|
||||||
MJAPI mjsSite* mjs_addSite(mjsBody* body, mjsDefault* def);
|
MJAPI mjsSite* mjs_addSite(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add joint to body.
|
// Add joint to body.
|
||||||
MJAPI mjsJoint* mjs_addJoint(mjsBody* body, mjsDefault* def);
|
MJAPI mjsJoint* mjs_addJoint(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add freejoint to body.
|
// Add freejoint to body.
|
||||||
MJAPI mjsJoint* mjs_addFreeJoint(mjsBody* body);
|
MJAPI mjsJoint* mjs_addFreeJoint(mjsBody* body);
|
||||||
|
|
||||||
// Add geom to body.
|
// Add geom to body.
|
||||||
MJAPI mjsGeom* mjs_addGeom(mjsBody* body, mjsDefault* def);
|
MJAPI mjsGeom* mjs_addGeom(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add camera to body.
|
// Add camera to body.
|
||||||
MJAPI mjsCamera* mjs_addCamera(mjsBody* body, mjsDefault* def);
|
MJAPI mjsCamera* mjs_addCamera(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add light to body.
|
// Add light to body.
|
||||||
MJAPI mjsLight* mjs_addLight(mjsBody* body, mjsDefault* def);
|
MJAPI mjsLight* mjs_addLight(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add frame to body.
|
// Add frame to body.
|
||||||
MJAPI mjsFrame* mjs_addFrame(mjsBody* body, mjsFrame* parentframe);
|
MJAPI mjsFrame* mjs_addFrame(mjsBody* body, mjsFrame* parentframe);
|
||||||
@@ -1451,7 +1451,7 @@ MJAPI void mjs_delete(mjsElement* element);
|
|||||||
//---------------------------------- Non-tree elements ---------------------------------------------
|
//---------------------------------- Non-tree elements ---------------------------------------------
|
||||||
|
|
||||||
// Add actuator.
|
// Add actuator.
|
||||||
MJAPI mjsActuator* mjs_addActuator(mjSpec* s, mjsDefault* def);
|
MJAPI mjsActuator* mjs_addActuator(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
// Add sensor.
|
// Add sensor.
|
||||||
MJAPI mjsSensor* mjs_addSensor(mjSpec* s);
|
MJAPI mjsSensor* mjs_addSensor(mjSpec* s);
|
||||||
@@ -1460,16 +1460,16 @@ MJAPI mjsSensor* mjs_addSensor(mjSpec* s);
|
|||||||
MJAPI mjsFlex* mjs_addFlex(mjSpec* s);
|
MJAPI mjsFlex* mjs_addFlex(mjSpec* s);
|
||||||
|
|
||||||
// Add contact pair.
|
// Add contact pair.
|
||||||
MJAPI mjsPair* mjs_addPair(mjSpec* s, mjsDefault* def);
|
MJAPI mjsPair* mjs_addPair(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
// Add excluded body pair.
|
// Add excluded body pair.
|
||||||
MJAPI mjsExclude* mjs_addExclude(mjSpec* s);
|
MJAPI mjsExclude* mjs_addExclude(mjSpec* s);
|
||||||
|
|
||||||
// Add equality.
|
// Add equality.
|
||||||
MJAPI mjsEquality* mjs_addEquality(mjSpec* s, mjsDefault* def);
|
MJAPI mjsEquality* mjs_addEquality(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
// Add tendon.
|
// Add tendon.
|
||||||
MJAPI mjsTendon* mjs_addTendon(mjSpec* s, mjsDefault* def);
|
MJAPI mjsTendon* mjs_addTendon(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
// Wrap site using tendon.
|
// Wrap site using tendon.
|
||||||
MJAPI mjsWrap* mjs_wrapSite(mjsTendon* tendon, const char* name);
|
MJAPI mjsWrap* mjs_wrapSite(mjsTendon* tendon, const char* name);
|
||||||
@@ -1505,7 +1505,7 @@ MJAPI mjsDefault* mjs_addDefault(mjSpec* s, const char* classname, const mjsDefa
|
|||||||
//---------------------------------- Assets --------------------------------------------------------
|
//---------------------------------- Assets --------------------------------------------------------
|
||||||
|
|
||||||
// Add mesh.
|
// Add mesh.
|
||||||
MJAPI mjsMesh* mjs_addMesh(mjSpec* s, mjsDefault* def);
|
MJAPI mjsMesh* mjs_addMesh(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
// Add height field.
|
// Add height field.
|
||||||
MJAPI mjsHField* mjs_addHField(mjSpec* s);
|
MJAPI mjsHField* mjs_addHField(mjSpec* s);
|
||||||
@@ -1517,7 +1517,7 @@ MJAPI mjsSkin* mjs_addSkin(mjSpec* s);
|
|||||||
MJAPI mjsTexture* mjs_addTexture(mjSpec* s);
|
MJAPI mjsTexture* mjs_addTexture(mjSpec* s);
|
||||||
|
|
||||||
// Add material.
|
// Add material.
|
||||||
MJAPI mjsMaterial* mjs_addMaterial(mjSpec* s, mjsDefault* def);
|
MJAPI mjsMaterial* mjs_addMaterial(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------- Find and get utilities ----------------------------------------
|
//---------------------------------- Find and get utilities ----------------------------------------
|
||||||
@@ -1544,7 +1544,7 @@ MJAPI mjsFrame* mjs_findFrame(mjSpec* s, const char* name);
|
|||||||
MJAPI mjsDefault* mjs_getDefault(mjsElement* element);
|
MJAPI mjsDefault* mjs_getDefault(mjsElement* element);
|
||||||
|
|
||||||
// Find default in model by class name.
|
// Find default in model by class name.
|
||||||
MJAPI mjsDefault* mjs_findDefault(mjSpec* s, const char* classname);
|
MJAPI const mjsDefault* mjs_findDefault(mjSpec* s, const char* classname);
|
||||||
|
|
||||||
// Get global default from model.
|
// Get global default from model.
|
||||||
MJAPI mjsDefault* mjs_getSpecDefault(mjSpec* s);
|
MJAPI mjsDefault* mjs_getSpecDefault(mjSpec* s);
|
||||||
@@ -1614,7 +1614,7 @@ MJAPI const double* mjs_getDouble(const mjDoubleVec* source, int* size);
|
|||||||
//---------------------------------- Spec utilities ------------------------------------------------
|
//---------------------------------- Spec utilities ------------------------------------------------
|
||||||
|
|
||||||
// Set element's default.
|
// Set element's default.
|
||||||
MJAPI void mjs_setDefault(mjsElement* element, mjsDefault* def);
|
MJAPI void mjs_setDefault(mjsElement* element, const mjsDefault* def);
|
||||||
|
|
||||||
// Set element's enclosing frame.
|
// Set element's enclosing frame.
|
||||||
MJAPI void mjs_setFrame(mjsElement* dest, mjsFrame* frame);
|
MJAPI void mjs_setFrame(mjsElement* dest, mjsFrame* frame);
|
||||||
|
|||||||
+14
-14
@@ -9072,7 +9072,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9094,7 +9094,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9116,7 +9116,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9154,7 +9154,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9176,7 +9176,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9198,7 +9198,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9256,7 +9256,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9310,7 +9310,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9348,7 +9348,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9370,7 +9370,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9596,7 +9596,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9666,7 +9666,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -9822,7 +9822,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionDecl(
|
FunctionDecl(
|
||||||
name='mjs_findDefault',
|
name='mjs_findDefault',
|
||||||
return_type=PointerType(
|
return_type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
parameters=(
|
parameters=(
|
||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
@@ -10262,7 +10262,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
|||||||
FunctionParameterDecl(
|
FunctionParameterDecl(
|
||||||
name='def',
|
name='def',
|
||||||
type=PointerType(
|
type=PointerType(
|
||||||
inner_type=ValueType(name='mjsDefault'),
|
inner_type=ValueType(name='mjsDefault', is_const=True),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -346,7 +346,7 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def(
|
mjSpec.def(
|
||||||
"find_default",
|
"find_default",
|
||||||
[](MjSpec& self, std::string& classname) -> raw::MjsDefault* {
|
[](MjSpec& self, std::string& classname) -> const raw::MjsDefault* {
|
||||||
return mjs_findDefault(self.ptr, classname.c_str());
|
return mjs_findDefault(self.ptr, classname.c_str());
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
|
|||||||
+14
-14
@@ -263,7 +263,7 @@ void mjs_delete(mjsElement* element) {
|
|||||||
|
|
||||||
|
|
||||||
// add child body to body, return child spec
|
// add child body to body, return child spec
|
||||||
mjsBody* mjs_addBody(mjsBody* bodyspec, mjsDefault* defspec) {
|
mjsBody* mjs_addBody(mjsBody* bodyspec, const mjsDefault* defspec) {
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCBody* body = static_cast<mjCBody*>(bodyspec->element)->AddBody(def);
|
mjCBody* body = static_cast<mjCBody*>(bodyspec->element)->AddBody(def);
|
||||||
return &body->spec;
|
return &body->spec;
|
||||||
@@ -272,7 +272,7 @@ mjsBody* mjs_addBody(mjsBody* bodyspec, mjsDefault* defspec) {
|
|||||||
|
|
||||||
|
|
||||||
// add site to body, return site spec
|
// add site to body, return site spec
|
||||||
mjsSite* mjs_addSite(mjsBody* bodyspec, mjsDefault* defspec) {
|
mjsSite* mjs_addSite(mjsBody* bodyspec, const mjsDefault* defspec) {
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCBody* body = static_cast<mjCBody*>(bodyspec->element);
|
mjCBody* body = static_cast<mjCBody*>(bodyspec->element);
|
||||||
mjCSite* site = body->AddSite(def);
|
mjCSite* site = body->AddSite(def);
|
||||||
@@ -282,7 +282,7 @@ mjsSite* mjs_addSite(mjsBody* bodyspec, mjsDefault* defspec) {
|
|||||||
|
|
||||||
|
|
||||||
// add joint to body
|
// add joint to body
|
||||||
mjsJoint* mjs_addJoint(mjsBody* bodyspec, mjsDefault* defspec) {
|
mjsJoint* mjs_addJoint(mjsBody* bodyspec, const mjsDefault* defspec) {
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCBody* body = static_cast<mjCBody*>(bodyspec->element);
|
mjCBody* body = static_cast<mjCBody*>(bodyspec->element);
|
||||||
mjCJoint* joint = body->AddJoint(def);
|
mjCJoint* joint = body->AddJoint(def);
|
||||||
@@ -301,7 +301,7 @@ mjsJoint* mjs_addFreeJoint(mjsBody* bodyspec) {
|
|||||||
|
|
||||||
|
|
||||||
// add geom to body
|
// add geom to body
|
||||||
mjsGeom* mjs_addGeom(mjsBody* bodyspec, mjsDefault* defspec) {
|
mjsGeom* mjs_addGeom(mjsBody* bodyspec, const mjsDefault* defspec) {
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCBody* body = static_cast<mjCBody*>(bodyspec->element);
|
mjCBody* body = static_cast<mjCBody*>(bodyspec->element);
|
||||||
mjCGeom* geom = body->AddGeom(def);
|
mjCGeom* geom = body->AddGeom(def);
|
||||||
@@ -311,7 +311,7 @@ mjsGeom* mjs_addGeom(mjsBody* bodyspec, mjsDefault* defspec) {
|
|||||||
|
|
||||||
|
|
||||||
// add camera to body
|
// add camera to body
|
||||||
mjsCamera* mjs_addCamera(mjsBody* bodyspec, mjsDefault* defspec) {
|
mjsCamera* mjs_addCamera(mjsBody* bodyspec, const mjsDefault* defspec) {
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCBody* body = static_cast<mjCBody*>(bodyspec->element);
|
mjCBody* body = static_cast<mjCBody*>(bodyspec->element);
|
||||||
mjCCamera* camera = body->AddCamera(def);
|
mjCCamera* camera = body->AddCamera(def);
|
||||||
@@ -321,7 +321,7 @@ mjsCamera* mjs_addCamera(mjsBody* bodyspec, mjsDefault* defspec) {
|
|||||||
|
|
||||||
|
|
||||||
// add light to body
|
// add light to body
|
||||||
mjsLight* mjs_addLight(mjsBody* bodyspec, mjsDefault* defspec) {
|
mjsLight* mjs_addLight(mjsBody* bodyspec, const mjsDefault* defspec) {
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCBody* body = static_cast<mjCBody*>(bodyspec->element);
|
mjCBody* body = static_cast<mjCBody*>(bodyspec->element);
|
||||||
mjCLight* light = body->AddLight(def);
|
mjCLight* light = body->AddLight(def);
|
||||||
@@ -354,7 +354,7 @@ mjsFrame* mjs_addFrame(mjsBody* bodyspec, mjsFrame* parentframe) {
|
|||||||
|
|
||||||
|
|
||||||
// add mesh to model
|
// add mesh to model
|
||||||
mjsMesh* mjs_addMesh(mjSpec* s, mjsDefault* defspec) {
|
mjsMesh* mjs_addMesh(mjSpec* s, const mjsDefault* defspec) {
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
||||||
mjCMesh* mesh = modelC->AddMesh(def);
|
mjCMesh* mesh = modelC->AddMesh(def);
|
||||||
@@ -391,7 +391,7 @@ mjsTexture* mjs_addTexture(mjSpec* s) {
|
|||||||
|
|
||||||
|
|
||||||
// add material to model
|
// add material to model
|
||||||
mjsMaterial* mjs_addMaterial(mjSpec* s, mjsDefault* defspec) {
|
mjsMaterial* mjs_addMaterial(mjSpec* s, const mjsDefault* defspec) {
|
||||||
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCMaterial* material = modelC->AddMaterial(def);
|
mjCMaterial* material = modelC->AddMaterial(def);
|
||||||
@@ -401,7 +401,7 @@ mjsMaterial* mjs_addMaterial(mjSpec* s, mjsDefault* defspec) {
|
|||||||
|
|
||||||
|
|
||||||
// add pair to model
|
// add pair to model
|
||||||
mjsPair* mjs_addPair(mjSpec* s, mjsDefault* defspec) {
|
mjsPair* mjs_addPair(mjSpec* s, const mjsDefault* defspec) {
|
||||||
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCPair* pair = modelC->AddPair(def);
|
mjCPair* pair = modelC->AddPair(def);
|
||||||
@@ -420,7 +420,7 @@ mjsExclude* mjs_addExclude(mjSpec* s) {
|
|||||||
|
|
||||||
|
|
||||||
// add equality to model
|
// add equality to model
|
||||||
mjsEquality* mjs_addEquality(mjSpec* s, mjsDefault* defspec) {
|
mjsEquality* mjs_addEquality(mjSpec* s, const mjsDefault* defspec) {
|
||||||
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCEquality* equality = modelC->AddEquality(def);
|
mjCEquality* equality = modelC->AddEquality(def);
|
||||||
@@ -430,7 +430,7 @@ mjsEquality* mjs_addEquality(mjSpec* s, mjsDefault* defspec) {
|
|||||||
|
|
||||||
|
|
||||||
// add tendon to model
|
// add tendon to model
|
||||||
mjsTendon* mjs_addTendon(mjSpec* s, mjsDefault* defspec) {
|
mjsTendon* mjs_addTendon(mjSpec* s, const mjsDefault* defspec) {
|
||||||
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCTendon* tendon = modelC->AddTendon(def);
|
mjCTendon* tendon = modelC->AddTendon(def);
|
||||||
@@ -476,7 +476,7 @@ mjsWrap* mjs_wrapPulley(mjsTendon* tendonspec, double divisor) {
|
|||||||
|
|
||||||
|
|
||||||
// add actuator to model
|
// add actuator to model
|
||||||
mjsActuator* mjs_addActuator(mjSpec* s, mjsDefault* defspec) {
|
mjsActuator* mjs_addActuator(mjSpec* s, const mjsDefault* defspec) {
|
||||||
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
||||||
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
mjCDef* def = defspec ? static_cast<mjCDef*>(defspec->element) : 0;
|
||||||
mjCActuator* actuator = modelC->AddActuator(def);
|
mjCActuator* actuator = modelC->AddActuator(def);
|
||||||
@@ -580,7 +580,7 @@ mjsDefault* mjs_getDefault(mjsElement* element) {
|
|||||||
|
|
||||||
|
|
||||||
// Find default with given name in model.
|
// Find default with given name in model.
|
||||||
mjsDefault* mjs_findDefault(mjSpec* s, const char* classname) {
|
const mjsDefault* mjs_findDefault(mjSpec* s, const char* classname) {
|
||||||
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
||||||
mjCDef* cdef = modelC->FindDefault(classname);
|
mjCDef* cdef = modelC->FindDefault(classname);
|
||||||
if (!cdef) {
|
if (!cdef) {
|
||||||
@@ -692,7 +692,7 @@ int mjs_getId(mjsElement* element) {
|
|||||||
|
|
||||||
|
|
||||||
// set default
|
// set default
|
||||||
void mjs_setDefault(mjsElement* element, mjsDefault* defspec) {
|
void mjs_setDefault(mjsElement* element, const mjsDefault* defspec) {
|
||||||
mjCBase* baseC = static_cast<mjCBase*>(element);
|
mjCBase* baseC = static_cast<mjCBase*>(element);
|
||||||
baseC->classname = static_cast<mjCDef*>(defspec->element)->name;
|
baseC->classname = static_cast<mjCDef*>(defspec->element)->name;
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-14
@@ -85,25 +85,25 @@ MJAPI int mjs_detachBody(mjSpec* s, mjsBody* b);
|
|||||||
//---------------------------------- Add tree elements ---------------------------------------------
|
//---------------------------------- Add tree elements ---------------------------------------------
|
||||||
|
|
||||||
// Add child body to body, return child.
|
// Add child body to body, return child.
|
||||||
MJAPI mjsBody* mjs_addBody(mjsBody* body, mjsDefault* def);
|
MJAPI mjsBody* mjs_addBody(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add site to body, return site spec.
|
// Add site to body, return site spec.
|
||||||
MJAPI mjsSite* mjs_addSite(mjsBody* body, mjsDefault* def);
|
MJAPI mjsSite* mjs_addSite(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add joint to body.
|
// Add joint to body.
|
||||||
MJAPI mjsJoint* mjs_addJoint(mjsBody* body, mjsDefault* def);
|
MJAPI mjsJoint* mjs_addJoint(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add freejoint to body.
|
// Add freejoint to body.
|
||||||
MJAPI mjsJoint* mjs_addFreeJoint(mjsBody* body);
|
MJAPI mjsJoint* mjs_addFreeJoint(mjsBody* body);
|
||||||
|
|
||||||
// Add geom to body.
|
// Add geom to body.
|
||||||
MJAPI mjsGeom* mjs_addGeom(mjsBody* body, mjsDefault* def);
|
MJAPI mjsGeom* mjs_addGeom(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add camera to body.
|
// Add camera to body.
|
||||||
MJAPI mjsCamera* mjs_addCamera(mjsBody* body, mjsDefault* def);
|
MJAPI mjsCamera* mjs_addCamera(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add light to body.
|
// Add light to body.
|
||||||
MJAPI mjsLight* mjs_addLight(mjsBody* body, mjsDefault* def);
|
MJAPI mjsLight* mjs_addLight(mjsBody* body, const mjsDefault* def);
|
||||||
|
|
||||||
// Add frame to body.
|
// Add frame to body.
|
||||||
MJAPI mjsFrame* mjs_addFrame(mjsBody* body, mjsFrame* parentframe);
|
MJAPI mjsFrame* mjs_addFrame(mjsBody* body, mjsFrame* parentframe);
|
||||||
@@ -115,7 +115,7 @@ MJAPI void mjs_delete(mjsElement* element);
|
|||||||
//---------------------------------- Add non-tree elements -----------------------------------------
|
//---------------------------------- Add non-tree elements -----------------------------------------
|
||||||
|
|
||||||
// Add actuator.
|
// Add actuator.
|
||||||
MJAPI mjsActuator* mjs_addActuator(mjSpec* s, mjsDefault* def);
|
MJAPI mjsActuator* mjs_addActuator(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
// Add sensor.
|
// Add sensor.
|
||||||
MJAPI mjsSensor* mjs_addSensor(mjSpec* s);
|
MJAPI mjsSensor* mjs_addSensor(mjSpec* s);
|
||||||
@@ -124,16 +124,16 @@ MJAPI mjsSensor* mjs_addSensor(mjSpec* s);
|
|||||||
MJAPI mjsFlex* mjs_addFlex(mjSpec* s);
|
MJAPI mjsFlex* mjs_addFlex(mjSpec* s);
|
||||||
|
|
||||||
// Add contact pair.
|
// Add contact pair.
|
||||||
MJAPI mjsPair* mjs_addPair(mjSpec* s, mjsDefault* def);
|
MJAPI mjsPair* mjs_addPair(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
// Add excluded body pair.
|
// Add excluded body pair.
|
||||||
MJAPI mjsExclude* mjs_addExclude(mjSpec* s);
|
MJAPI mjsExclude* mjs_addExclude(mjSpec* s);
|
||||||
|
|
||||||
// Add equality.
|
// Add equality.
|
||||||
MJAPI mjsEquality* mjs_addEquality(mjSpec* s, mjsDefault* def);
|
MJAPI mjsEquality* mjs_addEquality(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
// Add tendon.
|
// Add tendon.
|
||||||
MJAPI mjsTendon* mjs_addTendon(mjSpec* s, mjsDefault* def);
|
MJAPI mjsTendon* mjs_addTendon(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
// Wrap site using tendon.
|
// Wrap site using tendon.
|
||||||
MJAPI mjsWrap* mjs_wrapSite(mjsTendon* tendon, const char* name);
|
MJAPI mjsWrap* mjs_wrapSite(mjsTendon* tendon, const char* name);
|
||||||
@@ -169,7 +169,7 @@ MJAPI mjsDefault* mjs_addDefault(mjSpec* s, const char* classname, const mjsDefa
|
|||||||
//---------------------------------- Add assets ----------------------------------------------------
|
//---------------------------------- Add assets ----------------------------------------------------
|
||||||
|
|
||||||
// Add mesh.
|
// Add mesh.
|
||||||
MJAPI mjsMesh* mjs_addMesh(mjSpec* s, mjsDefault* def);
|
MJAPI mjsMesh* mjs_addMesh(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
// Add height field.
|
// Add height field.
|
||||||
MJAPI mjsHField* mjs_addHField(mjSpec* s);
|
MJAPI mjsHField* mjs_addHField(mjSpec* s);
|
||||||
@@ -181,7 +181,7 @@ MJAPI mjsSkin* mjs_addSkin(mjSpec* s);
|
|||||||
MJAPI mjsTexture* mjs_addTexture(mjSpec* s);
|
MJAPI mjsTexture* mjs_addTexture(mjSpec* s);
|
||||||
|
|
||||||
// Add material.
|
// Add material.
|
||||||
MJAPI mjsMaterial* mjs_addMaterial(mjSpec* s, mjsDefault* def);
|
MJAPI mjsMaterial* mjs_addMaterial(mjSpec* s, const mjsDefault* def);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------- Find/get utilities --------------------------------------------
|
//---------------------------------- Find/get utilities --------------------------------------------
|
||||||
@@ -208,7 +208,7 @@ MJAPI mjsFrame* mjs_findFrame(mjSpec* s, const char* name);
|
|||||||
MJAPI mjsDefault* mjs_getDefault(mjsElement* element);
|
MJAPI mjsDefault* mjs_getDefault(mjsElement* element);
|
||||||
|
|
||||||
// Find default in model by class name.
|
// Find default in model by class name.
|
||||||
MJAPI mjsDefault* mjs_findDefault(mjSpec* s, const char* classname);
|
MJAPI const mjsDefault* mjs_findDefault(mjSpec* s, const char* classname);
|
||||||
|
|
||||||
// Get global default from model.
|
// Get global default from model.
|
||||||
MJAPI mjsDefault* mjs_getSpecDefault(mjSpec* s);
|
MJAPI mjsDefault* mjs_getSpecDefault(mjSpec* s);
|
||||||
@@ -353,7 +353,7 @@ MJAPI const double* mjs_getDouble(const mjDoubleVec* source, int* size);
|
|||||||
//---------------------------------- Other utilities -----------------------------------------------
|
//---------------------------------- Other utilities -----------------------------------------------
|
||||||
|
|
||||||
// Set element's default.
|
// Set element's default.
|
||||||
MJAPI void mjs_setDefault(mjsElement* element, mjsDefault* def);
|
MJAPI void mjs_setDefault(mjsElement* element, const mjsDefault* def);
|
||||||
|
|
||||||
// Set element's enlcosing frame.
|
// Set element's enlcosing frame.
|
||||||
MJAPI void mjs_setFrame(mjsElement* dest, mjsFrame* frame);
|
MJAPI void mjs_setFrame(mjsElement* dest, mjsFrame* frame);
|
||||||
|
|||||||
@@ -2383,7 +2383,7 @@ void mjXReader::OneActuator(XMLElement* elem, mjsActuator* actuator) {
|
|||||||
|
|
||||||
|
|
||||||
// make composite
|
// make composite
|
||||||
void mjXReader::OneComposite(XMLElement* elem, mjsBody* body, mjsDefault* def) {
|
void mjXReader::OneComposite(XMLElement* elem, mjsBody* body, const mjsDefault* def) {
|
||||||
string text;
|
string text;
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
@@ -3188,7 +3188,7 @@ void mjXReader::Asset(XMLElement* section, const mjVFS* vfs) {
|
|||||||
name = elem->Value();
|
name = elem->Value();
|
||||||
|
|
||||||
// get class if specified, otherwise use default0
|
// get class if specified, otherwise use default0
|
||||||
mjsDefault* def = GetClass(elem);
|
const mjsDefault* def = GetClass(elem);
|
||||||
if (!def) {
|
if (!def) {
|
||||||
def = mjs_getSpecDefault(spec);
|
def = mjs_getSpecDefault(spec);
|
||||||
}
|
}
|
||||||
@@ -3408,7 +3408,7 @@ void mjXReader::Body(XMLElement* section, mjsBody* body, mjsFrame* frame,
|
|||||||
name = elem->Value();
|
name = elem->Value();
|
||||||
|
|
||||||
// get class if specified, otherwise use body
|
// get class if specified, otherwise use body
|
||||||
mjsDefault* def = GetClass(elem);
|
const mjsDefault* def = GetClass(elem);
|
||||||
if (!def) {
|
if (!def) {
|
||||||
def = mjs_getDefault(frame ? frame->element : body->element);
|
def = mjs_getDefault(frame ? frame->element : body->element);
|
||||||
}
|
}
|
||||||
@@ -3519,13 +3519,10 @@ void mjXReader::Body(XMLElement* section, mjsBody* body, mjsFrame* frame,
|
|||||||
// frame sub-element
|
// frame sub-element
|
||||||
else if (name=="frame") {
|
else if (name=="frame") {
|
||||||
// read childdef
|
// read childdef
|
||||||
mjsDefault* childdef = 0;
|
bool has_childclass = ReadAttrTxt(elem, "childclass", text);
|
||||||
if (ReadAttrTxt(elem, "childclass", text)) {
|
const mjsDefault* childdef = has_childclass ? mjs_findDefault(spec, text.c_str()) : nullptr;
|
||||||
childdef = mjs_findDefault(spec, text.c_str());
|
if (has_childclass && !childdef) {
|
||||||
mjs_findDefault(spec, text.c_str());
|
throw mjXError(elem, "unknown default childclass");
|
||||||
if (!childdef) {
|
|
||||||
throw mjXError(elem, "unknown default childclass");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// create frame
|
// create frame
|
||||||
@@ -3568,13 +3565,10 @@ void mjXReader::Body(XMLElement* section, mjsBody* body, mjsFrame* frame,
|
|||||||
mjs_resolveOrientation(rotation, spec->compiler.degree, spec->compiler.eulerseq, &alt);
|
mjs_resolveOrientation(rotation, spec->compiler.degree, spec->compiler.eulerseq, &alt);
|
||||||
|
|
||||||
// read childdef
|
// read childdef
|
||||||
mjsDefault* childdef = 0;
|
bool has_childclass = ReadAttrTxt(elem, "childclass", text);
|
||||||
if (ReadAttrTxt(elem, "childclass", text)) {
|
const mjsDefault* childdef = has_childclass ? mjs_findDefault(spec, text.c_str()) : nullptr;
|
||||||
childdef = mjs_findDefault(spec, text.c_str());
|
if (has_childclass && !childdef) {
|
||||||
mjs_findDefault(spec, text.c_str());
|
throw mjXError(elem, "unknown default childclass");
|
||||||
if (!childdef) {
|
|
||||||
throw mjXError(elem, "unknown default childclass");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// create subtree
|
// create subtree
|
||||||
@@ -3622,13 +3616,10 @@ void mjXReader::Body(XMLElement* section, mjsBody* body, mjsFrame* frame,
|
|||||||
// body sub-element
|
// body sub-element
|
||||||
else if (name=="body") {
|
else if (name=="body") {
|
||||||
// read childdef
|
// read childdef
|
||||||
mjsDefault* childdef = 0;
|
bool has_childclass = ReadAttrTxt(elem, "childclass", text);
|
||||||
if (ReadAttrTxt(elem, "childclass", text)) {
|
const mjsDefault* childdef = has_childclass ? mjs_findDefault(spec, text.c_str()) : nullptr;
|
||||||
childdef = mjs_findDefault(spec, text.c_str());
|
if (has_childclass && !childdef) {
|
||||||
mjs_findDefault(spec, text.c_str());
|
throw mjXError(elem, "unknown default childclass");
|
||||||
if (!childdef) {
|
|
||||||
throw mjXError(elem, "unknown default childclass");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// create child body
|
// create child body
|
||||||
@@ -3720,7 +3711,7 @@ void mjXReader::Contact(XMLElement* section) {
|
|||||||
name = elem->Value();
|
name = elem->Value();
|
||||||
|
|
||||||
// get class if specified, otherwise use default0
|
// get class if specified, otherwise use default0
|
||||||
mjsDefault* def = GetClass(elem);
|
const mjsDefault* def = GetClass(elem);
|
||||||
if (!def) {
|
if (!def) {
|
||||||
def = mjs_getSpecDefault(spec);
|
def = mjs_getSpecDefault(spec);
|
||||||
}
|
}
|
||||||
@@ -3765,7 +3756,7 @@ void mjXReader::Equality(XMLElement* section) {
|
|||||||
elem = FirstChildElement(section);
|
elem = FirstChildElement(section);
|
||||||
while (elem) {
|
while (elem) {
|
||||||
// get class if specified, otherwise use default0
|
// get class if specified, otherwise use default0
|
||||||
mjsDefault* def = GetClass(elem);
|
const mjsDefault* def = GetClass(elem);
|
||||||
if (!def) {
|
if (!def) {
|
||||||
def = mjs_getSpecDefault(spec);
|
def = mjs_getSpecDefault(spec);
|
||||||
}
|
}
|
||||||
@@ -3793,7 +3784,7 @@ void mjXReader::Deformable(XMLElement* section, const mjVFS* vfs) {
|
|||||||
name = elem->Value();
|
name = elem->Value();
|
||||||
|
|
||||||
// get class if specified, otherwise use default0
|
// get class if specified, otherwise use default0
|
||||||
mjsDefault* def = GetClass(elem);
|
const mjsDefault* def = GetClass(elem);
|
||||||
if (!def) {
|
if (!def) {
|
||||||
def = mjs_getSpecDefault(spec);
|
def = mjs_getSpecDefault(spec);
|
||||||
}
|
}
|
||||||
@@ -3829,7 +3820,7 @@ void mjXReader::Tendon(XMLElement* section) {
|
|||||||
elem = FirstChildElement(section);
|
elem = FirstChildElement(section);
|
||||||
while (elem) {
|
while (elem) {
|
||||||
// get class if specified, otherwise use default0
|
// get class if specified, otherwise use default0
|
||||||
mjsDefault* def = GetClass(elem);
|
const mjsDefault* def = GetClass(elem);
|
||||||
if (!def) {
|
if (!def) {
|
||||||
def = mjs_getSpecDefault(spec);
|
def = mjs_getSpecDefault(spec);
|
||||||
}
|
}
|
||||||
@@ -3895,7 +3886,7 @@ void mjXReader::Actuator(XMLElement* section) {
|
|||||||
elem = FirstChildElement(section);
|
elem = FirstChildElement(section);
|
||||||
while (elem) {
|
while (elem) {
|
||||||
// get class if specified, otherwise use default0
|
// get class if specified, otherwise use default0
|
||||||
mjsDefault* def = GetClass(elem);
|
const mjsDefault* def = GetClass(elem);
|
||||||
if (!def) {
|
if (!def) {
|
||||||
def = mjs_getSpecDefault(spec);
|
def = mjs_getSpecDefault(spec);
|
||||||
}
|
}
|
||||||
@@ -4306,19 +4297,19 @@ void mjXReader::Keyframe(XMLElement* section) {
|
|||||||
|
|
||||||
|
|
||||||
// get defaults class
|
// get defaults class
|
||||||
mjsDefault* mjXReader::GetClass(XMLElement* section) {
|
const mjsDefault* mjXReader::GetClass(XMLElement* section) {
|
||||||
string text;
|
string text;
|
||||||
mjsDefault* def = nullptr;
|
|
||||||
|
|
||||||
if (ReadAttrTxt(section, "class", text)) {
|
if (!ReadAttrTxt(section, "class", text)) {
|
||||||
def = mjs_findDefault(spec, text.c_str());
|
return nullptr;
|
||||||
if (!def) {
|
|
||||||
throw mjXError(
|
|
||||||
section,
|
|
||||||
string("unknown default class name '" + text + "'").c_str());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const mjsDefault* def = mjs_findDefault(spec, text.c_str());
|
||||||
|
if (!def) {
|
||||||
|
throw mjXError(
|
||||||
|
section,
|
||||||
|
string("unknown default class name '" + text + "'").c_str());
|
||||||
|
}
|
||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -80,12 +80,12 @@ class mjXReader : public mjXBase {
|
|||||||
void OneEquality(tinyxml2::XMLElement* elem, mjsEquality* pequality);
|
void OneEquality(tinyxml2::XMLElement* elem, mjsEquality* pequality);
|
||||||
void OneTendon(tinyxml2::XMLElement* elem, mjsTendon* ptendon);
|
void OneTendon(tinyxml2::XMLElement* elem, mjsTendon* ptendon);
|
||||||
void OneActuator(tinyxml2::XMLElement* elem, mjsActuator* pactuator);
|
void OneActuator(tinyxml2::XMLElement* elem, mjsActuator* pactuator);
|
||||||
void OneComposite(tinyxml2::XMLElement* elem, mjsBody* pbody, mjsDefault* def);
|
void OneComposite(tinyxml2::XMLElement* elem, mjsBody* pbody, const mjsDefault* def);
|
||||||
void OneFlexcomp(tinyxml2::XMLElement* elem, mjsBody* pbody, const mjVFS* vfs);
|
void OneFlexcomp(tinyxml2::XMLElement* elem, mjsBody* pbody, const mjVFS* vfs);
|
||||||
void OnePlugin(tinyxml2::XMLElement* elem, mjsPlugin* plugin);
|
void OnePlugin(tinyxml2::XMLElement* elem, mjsPlugin* plugin);
|
||||||
|
|
||||||
mjXSchema schema; // schema used for validation
|
mjXSchema schema; // schema used for validation
|
||||||
mjsDefault* GetClass(tinyxml2::XMLElement* section); // get default class name
|
const mjsDefault* GetClass(tinyxml2::XMLElement* section); // get default class name
|
||||||
|
|
||||||
bool readingdefaults; // true while reading defaults
|
bool readingdefaults; // true while reading defaults
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user