25 #ifndef PXR_BASE_TF_EXCEPTION_H
26 #define PXR_BASE_TF_EXCEPTION_H
90 out = std::move(_throwStack);
97 virtual const char *
what() const noexcept override;
109 TfBaseException &exc,
111 int skipNCallerFrames);
115 std::
string _message;
124 Exception exc(std::forward<Args>(args)...);
125 auto thrower = [&exc]() {
throw std::move(exc); };
126 TfBaseException::_ThrowImpl(cc, exc, thrower, skipFrames.numToSkip);
130 template <
class Exception,
class ... Args>
143 #define TF_THROW(Exception, Exception-ctor-args...)
144 #define TF_THROW(Exception, TfSkipCallerFrames, Exception-ctor-args...)
148 #define TF_THROW(Exception, ...) \
149 Tf_Throw<Exception>(TF_CALL_CONTEXT, __VA_ARGS__)
155 #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
GLsizei const GLchar *const * string
fallback_uintptr uintptr_t
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)