From 414888b71659ae4d175295e47ad76b57fd4d63b0 Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Mon, 6 Oct 2025 11:42:41 -0700 Subject: [PATCH] Mark some `mjData` fields as mutable. PiperOrigin-RevId: 815819490 Change-Id: I1a62fda556b4197aec451f2747c69f34bab13220 --- doc/includes/references.h | 8 ++++---- include/mujoco/mjdata.h | 8 ++++---- python/mujoco/introspect/structs.py | 8 ++++---- python/mujoco/introspect/structs_test.py | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/doc/includes/references.h b/doc/includes/references.h index 7f7f4be6..4524bf23 100644 --- a/doc/includes/references.h +++ b/doc/includes/references.h @@ -156,14 +156,14 @@ struct mjData_ { int nplugin; // number of plugin instances // stack pointer - size_t pstack; // first available byte in stack - size_t pbase; // value of pstack when mj_markStack was last called + size_t pstack; // first available byte in stack (mutable) + size_t pbase; // value of pstack when mj_markStack was last called (mutable) // arena pointer size_t parena; // first available byte in arena // memory utilization statistics - mjtSize maxuse_stack; // maximum stack allocation in bytes + mjtSize maxuse_stack; // maximum stack allocation in bytes (mutable) mjtSize maxuse_threadstack[mjMAXTHREAD]; // maximum stack allocation per thread in bytes mjtSize maxuse_arena; // maximum arena allocation in bytes int maxuse_con; // maximum number of contacts @@ -176,7 +176,7 @@ struct mjData_ { mjtNum solver_fwdinv[2]; // forward-inverse comparison: qfrc, efc // diagnostics - mjWarningStat warning[mjNWARNING]; // warning statistics + mjWarningStat warning[mjNWARNING]; // warning statistics (mutable) mjTimerStat timer[mjNTIMER]; // timer statistics // variable sizes diff --git a/include/mujoco/mjdata.h b/include/mujoco/mjdata.h index 13ddf7a8..08642535 100644 --- a/include/mujoco/mjdata.h +++ b/include/mujoco/mjdata.h @@ -188,14 +188,14 @@ struct mjData_ { int nplugin; // number of plugin instances // stack pointer - size_t pstack; // first available byte in stack - size_t pbase; // value of pstack when mj_markStack was last called + size_t pstack; // first available byte in stack (mutable) + size_t pbase; // value of pstack when mj_markStack was last called (mutable) // arena pointer size_t parena; // first available byte in arena // memory utilization statistics - mjtSize maxuse_stack; // maximum stack allocation in bytes + mjtSize maxuse_stack; // maximum stack allocation in bytes (mutable) mjtSize maxuse_threadstack[mjMAXTHREAD]; // maximum stack allocation per thread in bytes mjtSize maxuse_arena; // maximum arena allocation in bytes int maxuse_con; // maximum number of contacts @@ -208,7 +208,7 @@ struct mjData_ { mjtNum solver_fwdinv[2]; // forward-inverse comparison: qfrc, efc // diagnostics - mjWarningStat warning[mjNWARNING]; // warning statistics + mjWarningStat warning[mjNWARNING]; // warning statistics (mutable) mjTimerStat timer[mjNTIMER]; // timer statistics // variable sizes diff --git a/python/mujoco/introspect/structs.py b/python/mujoco/introspect/structs.py index c866e7aa..8d90a7c8 100644 --- a/python/mujoco/introspect/structs.py +++ b/python/mujoco/introspect/structs.py @@ -5003,12 +5003,12 @@ STRUCTS: Mapping[str, StructDecl] = dict([ StructFieldDecl( name='pstack', type=ValueType(name='size_t'), - doc='first available byte in stack', + doc='first available byte in stack (mutable)', ), StructFieldDecl( name='pbase', type=ValueType(name='size_t'), - doc='value of pstack when mj_markStack was last called', + doc='value of pstack when mj_markStack was last called (mutable)', # pylint: disable=line-too-long ), StructFieldDecl( name='parena', @@ -5018,7 +5018,7 @@ STRUCTS: Mapping[str, StructDecl] = dict([ StructFieldDecl( name='maxuse_stack', type=ValueType(name='mjtSize'), - doc='maximum stack allocation in bytes', + doc='maximum stack allocation in bytes (mutable)', ), StructFieldDecl( name='maxuse_threadstack', @@ -5081,7 +5081,7 @@ STRUCTS: Mapping[str, StructDecl] = dict([ inner_type=ValueType(name='mjWarningStat'), extents=(8,), ), - doc='warning statistics', + doc='warning statistics (mutable)', ), StructFieldDecl( name='timer', diff --git a/python/mujoco/introspect/structs_test.py b/python/mujoco/introspect/structs_test.py index eb64f4b5..0bec9a8b 100644 --- a/python/mujoco/introspect/structs_test.py +++ b/python/mujoco/introspect/structs_test.py @@ -37,7 +37,7 @@ class StructsTest(absltest.TestCase): if field.name == 'warning': self.assertEqual(field.type, type_parsing.parse_type('mjWarningStat[8]')) - self.assertEqual(field.doc, 'warning statistics') + self.assertEqual(field.doc, 'warning statistics (mutable)') elif field.name == 'qpos': self.assertEqual(field.type, type_parsing.parse_type('mjtNum*')) self.assertEqual(field.doc, 'position')