7 #ifndef PXR_BASE_TF_PY_INVOKE_H
8 #define PXR_BASE_TF_PY_INVOKE_H
22 #include "pxr/external/boost/python/dict.hpp"
23 #include "pxr/external/boost/python/extract.hpp"
24 #include "pxr/external/boost/python/list.hpp"
25 #include "pxr/external/boost/python/object.hpp"
30 #include <type_traits>
93 pxr_boost::python::dict *kwArgsOut);
97 template <
typename Arg,
typename... RestArgs>
99 pxr_boost::python::dict *kwArgsOut,
107 "Non-keyword args not allowed after keyword args");
111 template <
typename... RestArgs>
113 pxr_boost::python::dict *kwArgsOut,
118 (*kwArgsOut)[kwArg.
name] = kwArg.
value.Get();
126 pxr_boost::python::list *posArgsOut,
127 pxr_boost::python::dict *kwArgsOut);
130 template <
typename Arg,
typename... RestArgs>
132 pxr_boost::python::list *posArgsOut,
133 pxr_boost::python::dict *kwArgsOut,
146 template <
typename... RestArgs>
148 pxr_boost::python::list *posArgsOut,
149 pxr_boost::python::dict *kwArgsOut,
168 const std::string &moduleName,
169 const std::string &callableExpr,
170 const pxr_boost::python::list &posArgs,
171 const pxr_boost::python::dict &kwArgs,
175 template <
typename... Args>
177 const std::string &moduleName,
178 const std::string &callableExpr,
233 template <
typename Result,
typename... Args>
235 const std::string &moduleName,
236 const std::string &callableExpr,
251 moduleName, callableExpr, &resultObj,
args...)) {
256 pxr_boost::python::extract<Result> extractor(resultObj);
257 if (!extractor.check()) {
261 *resultOut = extractor();
270 template <
typename... Args>
272 const std::string &moduleName,
273 const std::string &callableExpr,
288 pxr_boost::python::list posArgs;
289 pxr_boost::python::dict kwArgs;
294 moduleName, callableExpr, posArgs, kwArgs, resultOut)) {
298 catch (pxr_boost::python::error_already_set
const &) {
311 template <
typename... Args>
313 const std::string &moduleName,
314 const std::string &callableExpr,
323 moduleName, callableExpr, &ignoredResult,
args...);
328 #endif // PXR_BASE_TF_PY_INVOKE_H
GLsizei const GLfloat * value
TF_API void Tf_BuildPyInvokeKwArgs(pxr_boost::python::dict *kwArgsOut)
TF_API void Tf_BuildPyInvokeArgs(pxr_boost::python::list *posArgsOut, pxr_boost::python::dict *kwArgsOut)
PXR_NAMESPACE_OPEN_SCOPE TF_API void TfPyInitialize()
auto arg(const Char *name, const T &arg) -> detail::named_arg< Char, T >
bool TfPyInvoke(const std::string &moduleName, const std::string &callableExpr, Args...args)
PXR_NAMESPACE_OPEN_SCOPE pxr_boost::python::object Tf_ArgToPy(const T &value)
TF_API bool Tf_PyInvokeImpl(const std::string &moduleName, const std::string &callableExpr, const pxr_boost::python::list &posArgs, const pxr_boost::python::dict &kwArgs, pxr_boost::python::object *resultObjOut)
TF_API void TfPyConvertPythonExceptionToTfErrors()
GLuint const GLchar * name
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
TfPyKwArg(const std::string &nameIn, const T &valueIn)
#define PXR_NAMESPACE_CLOSE_SCOPE
**If you just want to fire and args
GA_API const UT_StringHolder rest
bool TfPyInvokeAndReturn(const std::string &moduleName, const std::string &callableExpr, pxr_boost::python::object *resultOut, Args...args)
bool TfPyInvokeAndExtract(const std::string &moduleName, const std::string &callableExpr, Result *resultOut, Args...args)