24 #ifndef PXR_BASE_TF_PY_ERROR_H 25 #define PXR_BASE_TF_PY_ERROR_H 32 #include "pxr/base/tf/api.h" 35 #include <boost/python/default_call_policies.hpp> 37 PXR_NAMESPACE_OPEN_SCOPE
43 bool TfPyConvertTfErrorsToPythonException(
TfErrorMark const &m);
49 void TfPyConvertPythonExceptionToTfErrors();
62 template <
typename Base = boost::python::default_call_policies>
76 template <
class BaseArgs>
77 struct ErrorMarkAndArgs {
78 ErrorMarkAndArgs(BaseArgs base_) : base(base_) {}
79 operator const BaseArgs &()
const {
return base; }
80 operator BaseArgs &() {
return base; }
84 typedef ErrorMarkAndArgs<typename Base::argument_package> argument_package;
91 bool precall(argument_package
const &a) {
return Base::precall(a); }
95 PyObject *postcall(argument_package
const &a, PyObject *result) {
96 result = Base::postcall(a, result);
97 if (result && TfPyConvertTfErrorsToPythonException(a.errorMark)) {
105 struct Tf_PyErrorClearer {
106 Tf_PyErrorClearer() : clearOnDestruction(true) {}
107 ~Tf_PyErrorClearer() {
108 if (clearOnDestruction)
111 void Dismiss() { clearOnDestruction =
false; }
113 bool clearOnDestruction;
116 PXR_NAMESPACE_CLOSE_SCOPE
118 #endif // PXR_BASE_TF_PY_ERROR_H A boost.python call policy class which, when applied to a wrapped function, will create an error mark...
Class used to record the end of the error-list.
TfPyRaiseOnError()
Default constructor.