// 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 #include #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 \ 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 { MjcPhysicsSiteAPI_CanApplyResult(bool val, std::string const &msg) : TfPyAnnotatedBoolResult(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( "_CanApplyResult", "whyNot"); class_ > cls("SiteAPI"); cls.def(init(arg("prim"))) .def(init(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()) .staticmethod("GetSchemaAttributeNames") .def("_GetStaticTfType", (TfType const &(*)())TfType::Find, return_value_policy()) .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