Sort and generate optional struct bindings in WASM.

PiperOrigin-RevId: 836273537
Change-Id: I2af2401969a4780f593df86dc9336adcc285fd1b
This commit is contained in:
Google DeepMind
2025-11-24 10:17:14 -08:00
committed by Copybara-Service
parent 217317ccba
commit 711a388b3d
3 changed files with 43 additions and 55 deletions
+29 -27
View File
@@ -12776,34 +12776,36 @@ EMSCRIPTEN_BINDINGS(mujoco_functions) {
register_type<NumberArray>("number[]");
register_type<String>("string");
register_vector<uint8_t>("mjByteVec");
register_optional<MjsElement>();
register_optional<MjsBody>();
register_optional<MjsSite>();
register_optional<MjsJoint>();
register_optional<MjsGeom>();
register_optional<MjsCamera>();
register_optional<MjsLight>();
register_optional<MjsFrame>();
register_optional<MjsActuator>();
register_optional<MjsSensor>();
register_optional<MjsFlex>();
register_optional<MjsPair>();
register_optional<MjsExclude>();
register_optional<MjsEquality>();
register_optional<MjsTendon>();
register_optional<MjsWrap>();
register_optional<MjsNumeric>();
register_optional<MjsText>();
register_optional<MjsTuple>();
register_optional<MjsKey>();
register_optional<MjsPlugin>();
register_optional<MjsDefault>();
register_optional<MjsMesh>();
register_optional<MjsHField>();
register_optional<MjsSkin>();
register_optional<MjsTexture>();
register_optional<MjsMaterial>();
register_optional<MjSpec>();
register_optional<MjsActuator>();
register_optional<MjsBody>();
register_optional<MjsCamera>();
register_optional<MjsCompiler>();
register_optional<MjsDefault>();
register_optional<MjsElement>();
register_optional<MjsEquality>();
register_optional<MjsExclude>();
register_optional<MjsFlex>();
register_optional<MjsFrame>();
register_optional<MjsGeom>();
register_optional<MjsHField>();
register_optional<MjsJoint>();
register_optional<MjsKey>();
register_optional<MjsLight>();
register_optional<MjsMaterial>();
register_optional<MjsMesh>();
register_optional<MjsNumeric>();
register_optional<MjsOrientation>();
register_optional<MjsPair>();
register_optional<MjsPlugin>();
register_optional<MjsSensor>();
register_optional<MjsSite>();
register_optional<MjsSkin>();
register_optional<MjsTendon>();
register_optional<MjsText>();
register_optional<MjsTexture>();
register_optional<MjsTuple>();
register_optional<MjsWrap>();
}
} // namespace mujoco::wasm
+13
View File
@@ -776,4 +776,17 @@ def generate(struct_to_bind: List[str]) -> list[tuple[str, list[str]]]:
"// {{ AUTOGENNED_STRUCTS_BINDINGS }}",
autogenned_struct_bindings,
))
# Generate optional bindings
optional_bindings = []
for s_name in sorted(struct_to_bind):
w_name = common.capitalize(s_name)
if w_name.startswith("Mjs") or w_name == "MjSpec":
optional_bindings.append(f"register_optional<{w_name}>();")
markers_and_content.append((
"// {{ OPTIONAL_STRUCT_BINDINGS }}",
optional_bindings,
))
return markers_and_content
+1 -28
View File
@@ -516,34 +516,7 @@ EMSCRIPTEN_BINDINGS(mujoco_functions) {
register_type<NumberArray>("number[]");
register_type<String>("string");
register_vector<uint8_t>("mjByteVec");
register_optional<MjsElement>();
register_optional<MjsBody>();
register_optional<MjsSite>();
register_optional<MjsJoint>();
register_optional<MjsGeom>();
register_optional<MjsCamera>();
register_optional<MjsLight>();
register_optional<MjsFrame>();
register_optional<MjsActuator>();
register_optional<MjsSensor>();
register_optional<MjsFlex>();
register_optional<MjsPair>();
register_optional<MjsExclude>();
register_optional<MjsEquality>();
register_optional<MjsTendon>();
register_optional<MjsWrap>();
register_optional<MjsNumeric>();
register_optional<MjsText>();
register_optional<MjsTuple>();
register_optional<MjsKey>();
register_optional<MjsPlugin>();
register_optional<MjsDefault>();
register_optional<MjsMesh>();
register_optional<MjsHField>();
register_optional<MjsSkin>();
register_optional<MjsTexture>();
register_optional<MjsMaterial>();
register_optional<MjSpec>();
// {{ OPTIONAL_STRUCT_BINDINGS }}
}
} // namespace mujoco::wasm