Files
Mujoco_WASM/src/experimental/usd/mjcPhysics/wrapSiteAPI.cpp
T
Sam Haves 09bf5409ab Add code generated files for mjcPhysics schema.
PiperOrigin-RevId: 757784741
Change-Id: Iacef6ef78c8e95ce51c5546562ad5b679f460deb
2025-05-12 09:00:45 -07:00

121 lines
3.5 KiB
C++

// Copyright 2025 DeepMind Technologies Limited
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <boost/python.hpp>
#include <string>
#include "./siteAPI.h"
#include "pxr/base/tf/pyAnnotatedBoolResult.h"
#include "pxr/base/tf/pyContainerConversions.h"
#include "pxr/base/tf/pyResultConversions.h"
#include "pxr/base/tf/pyUtils.h"
#include "pxr/base/tf/wrapTypeHelpers.h"
#include "pxr/usd/sdf/primSpec.h"
#include "pxr/usd/usd/pyConversions.h"
#include "pxr/usd/usd/schemaBase.h"
using namespace boost::python;
PXR_NAMESPACE_USING_DIRECTIVE
namespace {
#define WRAP_CUSTOM \
template <class Cls> \
static void _CustomWrapCode(Cls &_class)
// fwd decl.
WRAP_CUSTOM;
static std::string _Repr(const MjcPhysicsSiteAPI &self) {
std::string primRepr = TfPyRepr(self.GetPrim());
return TfStringPrintf("MjcPhysics.SiteAPI(%s)", primRepr.c_str());
}
struct MjcPhysicsSiteAPI_CanApplyResult
: public TfPyAnnotatedBoolResult<std::string> {
MjcPhysicsSiteAPI_CanApplyResult(bool val, std::string const &msg)
: TfPyAnnotatedBoolResult<std::string>(val, msg) {}
};
static MjcPhysicsSiteAPI_CanApplyResult _WrapCanApply(const UsdPrim &prim) {
std::string whyNot;
bool result = MjcPhysicsSiteAPI::CanApply(prim, &whyNot);
return MjcPhysicsSiteAPI_CanApplyResult(result, whyNot);
}
} // anonymous namespace
void wrapMjcPhysicsSiteAPI() {
typedef MjcPhysicsSiteAPI This;
MjcPhysicsSiteAPI_CanApplyResult::Wrap<MjcPhysicsSiteAPI_CanApplyResult>(
"_CanApplyResult", "whyNot");
class_<This, bases<UsdAPISchemaBase> > cls("SiteAPI");
cls.def(init<UsdPrim>(arg("prim")))
.def(init<UsdSchemaBase const &>(arg("schemaObj")))
.def(TfTypePythonClass())
.def("Get", &This::Get, (arg("stage"), arg("path")))
.staticmethod("Get")
.def("CanApply", &_WrapCanApply, (arg("prim")))
.staticmethod("CanApply")
.def("Apply", &This::Apply, (arg("prim")))
.staticmethod("Apply")
.def("GetSchemaAttributeNames", &This::GetSchemaAttributeNames,
arg("includeInherited") = true,
return_value_policy<TfPySequenceToList>())
.staticmethod("GetSchemaAttributeNames")
.def("_GetStaticTfType", (TfType const &(*)())TfType::Find<This>,
return_value_policy<return_by_value>())
.staticmethod("_GetStaticTfType")
.def(!self)
.def("__repr__", ::_Repr);
_CustomWrapCode(cls);
}
// ===================================================================== //
// Feel free to add custom code below this line, it will be preserved by
// the code generator. The entry point for your custom code should look
// minimally like the following:
//
// WRAP_CUSTOM {
// _class
// .def("MyCustomMethod", ...)
// ;
// }
//
// Of course any other ancillary or support code may be provided.
//
// Just remember to wrap code in the appropriate delimiters:
// 'namespace {', '}'.
//
// ===================================================================== //
// --(BEGIN CUSTOM CODE)--
namespace {
WRAP_CUSTOM {}
} // namespace