8 #ifndef PXR_BASE_TF_EXCEPTION_H
9 #define PXR_BASE_TF_EXCEPTION_H
73 out = std::move(_throwStack);
80 virtual const char *
what() const noexcept override;
94 int skipNCallerFrames);
107 Exception exc(std::forward<Args>(args)...);
108 auto thrower = [&exc]() {
throw std::move(exc); };
109 TfBaseException::_ThrowImpl(cc, exc, thrower, skipFrames.numToSkip);
113 template <
class Exception,
class ... Args>
126 #define TF_THROW(Exception, Exception-ctor-args...)
127 #define TF_THROW(Exception, TfSkipCallerFrames, Exception-ctor-args...)
131 #define TF_THROW(Exception, ...) \
132 Tf_Throw<Exception>(TF_CALL_CONTEXT, __VA_ARGS__)
138 #endif // PXR_BASE_TF_EXCEPTION_H
GLuint GLsizei const GLchar * message
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the and then *wait for them to all complete We provide a helper class
class OCIOEXPORT Exception
TfCallContext const & GetThrowContext() const
virtual TF_API const char * what() const noexceptoverride
virtual TF_API ~TfBaseException()
std::vector< uintptr_t > const & GetThrowStack() const
TF_API TfBaseException(std::string const &message)
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE
**If you just want to fire and args
friend void Tf_Throw(TfCallContext const &cc, TfSkipCallerFrames skipFrames, Args &&...args)
TfSkipCallerFrames(int n=0)
void MoveThrowStackTo(std::vector< uintptr_t > &out)