Add pluggable resource writing to MuJoCo

Extend mjpResourceProvider with an optional write callback (write)
so that mj_encode, mj_saveXML, and mj_saveModel can write to any
registered provider.

PiperOrigin-RevId: 945202741
Change-Id: I37903425260932e555f4a8c2392c4ff8c2e6cc06
This commit is contained in:
Sam Haves
2026-07-09 10:47:01 -07:00
committed by Copybara-Service
parent bdeb7e7c4d
commit dc7581acfa
18 changed files with 324 additions and 83 deletions
+7 -4
View File
@@ -186,10 +186,13 @@ int mj_saveXML(const mjSpec* s, const char* filename, char* error, int error_sz)
return -1;
}
std::ofstream file;
file.open(filename);
file << result;
file.close();
mjtSize written = mju_writeResource(filename, result.data(), result.size(), NULL, error, error_sz);
if (written != result.size()) {
if (error && error_sz > 0 && error[0] == '\0') {
std::snprintf(error, error_sz, "Error writing XML file '%s'", filename);
}
return -1;
}
return 0;
}