Remove copy_back from Python bindings and mj_copyBack from the C API.
PiperOrigin-RevId: 687377331 Change-Id: I355493d92857418b08b5aa90ea38cebe5c475314
This commit is contained in:
committed by
Copybara-Service
parent
62c0ef4262
commit
dcf2816543
@@ -87,15 +87,6 @@ mj_freeLastXML
|
||||
|
||||
Free last XML model if loaded. Called internally at each load.
|
||||
|
||||
.. _mj_copyBack:
|
||||
|
||||
mj_copyBack
|
||||
~~~~~~~~~~~
|
||||
|
||||
.. mujoco-include:: mj_copyBack
|
||||
|
||||
Copy (possibly modified) model fields back into spec.
|
||||
|
||||
.. _mj_saveXMLString:
|
||||
|
||||
mj_saveXMLString
|
||||
|
||||
@@ -3133,7 +3133,6 @@ mjModel* mj_compile(mjSpec* s, const mjVFS* vfs);
|
||||
int mj_recompile(mjSpec* s, const mjVFS* vfs, mjModel* m, mjData* d);
|
||||
int mj_saveLastXML(const char* filename, const mjModel* m, char* error, int error_sz);
|
||||
void mj_freeLastXML(void);
|
||||
void mj_copyBack(mjSpec* s, const mjModel* m);
|
||||
int mj_saveXMLString(const mjSpec* s, char* xml, int xml_sz, char* error, int error_sz);
|
||||
int mj_saveXML(const mjSpec* s, const char* filename, char* error, int error_sz);
|
||||
void mj_step(const mjModel* m, mjData* d);
|
||||
|
||||
@@ -117,9 +117,6 @@ MJAPI int mj_saveLastXML(const char* filename, const mjModel* m, char* error, in
|
||||
// Free last XML model if loaded. Called internally at each load.
|
||||
MJAPI void mj_freeLastXML(void);
|
||||
|
||||
// Copy (possibly modified) model fields back into spec.
|
||||
MJAPI void mj_copyBack(mjSpec* s, const mjModel* m);
|
||||
|
||||
// Save spec to XML string, return 1 on success, 0 otherwise.
|
||||
MJAPI int mj_saveXMLString(const mjSpec* s, char* xml, int xml_sz, char* error, int error_sz);
|
||||
|
||||
|
||||
@@ -317,26 +317,6 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
||||
parameters=(),
|
||||
doc='Free last XML model if loaded. Called internally at each load.',
|
||||
)),
|
||||
('mj_copyBack',
|
||||
FunctionDecl(
|
||||
name='mj_copyBack',
|
||||
return_type=ValueType(name='void'),
|
||||
parameters=(
|
||||
FunctionParameterDecl(
|
||||
name='s',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjSpec'),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='m',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjModel', is_const=True),
|
||||
),
|
||||
),
|
||||
),
|
||||
doc='Copy (possibly modified) model fields back into spec.',
|
||||
)),
|
||||
('mj_saveXMLString',
|
||||
FunctionDecl(
|
||||
name='mj_saveXMLString',
|
||||
|
||||
@@ -335,12 +335,6 @@ PYBIND11_MODULE(_specs, m) {
|
||||
A dictionary of assets to be used by the spec. The keys are asset names
|
||||
and the values are asset contents.
|
||||
)mydelimiter");
|
||||
mjSpec.def(
|
||||
"copy_back",
|
||||
[](MjSpec& self, raw::MjModel& model) {
|
||||
return mj_copyBack(self.ptr, &model);
|
||||
},
|
||||
py::return_value_policy::reference_internal);
|
||||
mjSpec.def("to_xml", [](MjSpec& self) -> std::string {
|
||||
int size = mj_saveXMLString(self.ptr, nullptr, 0, nullptr, 0);
|
||||
std::unique_ptr<char[]> buf(new char[size + 1]);
|
||||
|
||||
@@ -75,14 +75,6 @@ mjSpec* mj_copySpec(const mjSpec* s) {
|
||||
|
||||
|
||||
|
||||
// copy back model
|
||||
void mj_copyBack(mjSpec* s, const mjModel* m) {
|
||||
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
||||
modelC->CopyBack(m);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// compile model
|
||||
mjModel* mj_compile(mjSpec* s, const mjVFS* vfs) {
|
||||
mjCModel* modelC = static_cast<mjCModel*>(s->element);
|
||||
|
||||
@@ -54,9 +54,6 @@ MJAPI const char* mjs_getError(mjSpec* s);
|
||||
// Return 1 if compiler error is a warning.
|
||||
MJAPI int mjs_isWarning(mjSpec* s);
|
||||
|
||||
// Copy model fields back into spec.
|
||||
MJAPI void mj_copyBack(mjSpec* s, const mjModel* m);
|
||||
|
||||
// Delete spec.
|
||||
MJAPI void mj_deleteSpec(mjSpec* s);
|
||||
|
||||
|
||||
+2
-2
@@ -395,7 +395,7 @@ mjSpec* ParseSpecFromString(std::string_view xml, char* error, int nerror) {
|
||||
}
|
||||
|
||||
// Main writer function - calls mjXWrite
|
||||
std::string WriteXML(const mjSpec* spec, char* error, int nerror) {
|
||||
std::string WriteXML(const mjModel* m, const mjSpec* spec, char* error, int nerror) {
|
||||
LocaleOverride locale_override;
|
||||
|
||||
// check for empty model
|
||||
@@ -405,7 +405,7 @@ std::string WriteXML(const mjSpec* spec, char* error, int nerror) {
|
||||
}
|
||||
|
||||
mjXWriter writer;
|
||||
writer.SetModel(spec);
|
||||
writer.SetModel(spec, m);
|
||||
|
||||
try {
|
||||
return writer.Write(error, nerror);
|
||||
|
||||
+1
-1
@@ -29,6 +29,6 @@ mjSpec* ParseXML(const char* filename, const mjVFS* vfs, char* error, int nerror
|
||||
mjSpec* ParseSpecFromString(std::string_view xml, char* error = nullptr, int nerror = 0);
|
||||
|
||||
// Main writer function
|
||||
std::string WriteXML(const mjSpec* spec, char* error, int nerror);
|
||||
std::string WriteXML(const mjModel* m, const mjSpec* spec, char* error, int nerror);
|
||||
|
||||
#endif // MUJOCO_SRC_XML_XML_H_
|
||||
|
||||
+3
-4
@@ -62,8 +62,7 @@ std::optional<std::string> GlobalModel::ToXML(const mjModel* m, char* error,
|
||||
mjCopyError(error, "No XML model loaded", error_sz);
|
||||
return std::nullopt;
|
||||
}
|
||||
mj_copyBack(spec_, m);
|
||||
std::string result = WriteXML(spec_, error, error_sz);
|
||||
std::string result = WriteXML(m, spec_, error, error_sz);
|
||||
if (result.empty()) {
|
||||
return std::nullopt;
|
||||
}
|
||||
@@ -229,7 +228,7 @@ mjSpec* mj_parseXMLString(const char* xml, const mjVFS* vfs, char* error, int er
|
||||
|
||||
// save spec to XML file, return 1 on success, 0 otherwise
|
||||
int mj_saveXML(const mjSpec* s, const char* filename, char* error, int error_sz) {
|
||||
std::string result = WriteXML(s, error, error_sz);
|
||||
std::string result = WriteXML(NULL, s, error, error_sz);
|
||||
if (result.empty()) {
|
||||
return 0;
|
||||
}
|
||||
@@ -245,7 +244,7 @@ int mj_saveXML(const mjSpec* s, const char* filename, char* error, int error_sz)
|
||||
|
||||
// save spec to string, return 1 on success, 0 otherwise
|
||||
int mj_saveXMLString(const mjSpec* s, char* xml, int xml_sz, char* error, int error_sz) {
|
||||
std::string result = WriteXML(s, error, error_sz);
|
||||
std::string result = WriteXML(NULL, s, error, error_sz);
|
||||
if (result.size() >= xml_sz) {
|
||||
std::string error_msg = "Output string too short, should be at least " +
|
||||
std::to_string(result.size()+1);
|
||||
|
||||
+2
-1
@@ -21,6 +21,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <mujoco/mjmodel.h>
|
||||
#include <mujoco/mjspec.h>
|
||||
#include "xml/xml_util.h"
|
||||
#include "tinyxml2.h"
|
||||
@@ -43,7 +44,7 @@ mjXBase::mjXBase() {
|
||||
|
||||
|
||||
// set model field
|
||||
void mjXBase::SetModel(const mjSpec* _model) {
|
||||
void mjXBase::SetModel(const mjSpec* _model, const mjModel* m) {
|
||||
spec = (mjSpec*)_model;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -88,7 +88,7 @@ class mjXBase : public mjXUtil {
|
||||
};
|
||||
|
||||
// set the model allocated externally
|
||||
virtual void SetModel(const mjSpec*);
|
||||
virtual void SetModel(const mjSpec*, const mjModel* = nullptr);
|
||||
|
||||
// read alternative orientation specification
|
||||
static int ReadAlternative(tinyxml2::XMLElement* elem, mjsOrientation& alt);
|
||||
|
||||
@@ -853,9 +853,12 @@ mjXWriter::mjXWriter(void) {
|
||||
|
||||
|
||||
// cast model
|
||||
void mjXWriter::SetModel(const mjSpec* spec) {
|
||||
if (spec) {
|
||||
model = (mjCModel*)spec->element;
|
||||
void mjXWriter::SetModel(const mjSpec* _spec, const mjModel* m) {
|
||||
if (_spec) {
|
||||
model = (mjCModel*)_spec->element;
|
||||
}
|
||||
if (m) {
|
||||
model->CopyBack(m);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
|
||||
#include <mujoco/mjmodel.h>
|
||||
#include <mujoco/mjspec.h>
|
||||
#include "user/user_objects.h"
|
||||
#include "xml/xml_base.h"
|
||||
@@ -28,7 +29,7 @@ class mjXWriter : public mjXBase {
|
||||
public:
|
||||
mjXWriter(); // constructor
|
||||
virtual ~mjXWriter() = default; // destructor
|
||||
void SetModel(const mjSpec* spec);
|
||||
void SetModel(const mjSpec* _spec, const mjModel* m = nullptr);
|
||||
|
||||
// write XML document to string
|
||||
std::string Write(char *error, std::size_t error_sz);
|
||||
|
||||
Reference in New Issue
Block a user