X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/0cbeddf886b3e6d732c96a8f6a578a755e7ddf66..f1b5a47ffa92e12d17571d350a567e2035d75039:/Exception.hpp diff --git a/Exception.hpp b/Exception.hpp index 9f6a81a..0410fd1 100644 --- a/Exception.hpp +++ b/Exception.hpp @@ -103,4 +103,28 @@ void CYThrow(JSContextRef context, JSValueRef value); _value; \ }) +struct CYJSException { + JSContextRef context_; + JSValueRef value_; + + CYJSException(JSContextRef context) : + context_(context), + value_(NULL) + { + } + + ~CYJSException() { + CYThrow(context_, value_); + } + + operator JSValueRef *() { + return &value_; + } +}; + +#define _jsccall(code, args...) ({ \ + CYJSException _error(context); \ + (code)(args, _error); \ +}) + #endif/*CYCRIPT_ERROR_HPP*/