-/* Cycript - Error.hppution Server and Disassembler
+/* Cycript - Inlining/Optimizing JavaScript Compiler
* Copyright (C) 2009 Jay Freeman (saurik)
*/
#ifndef CYCRIPT_EXCEPTION_HPP
#define CYCRIPT_EXCEPTION_HPP
+#ifdef CY_EXECUTE
#include <JavaScriptCore/JSBase.h>
+#endif
#include <apr_pools.h>
#include "Standard.hpp"
struct CYException {
+ virtual ~CYException() {
+ }
+
virtual const char *PoolCString(apr_pool_t *pool) const = 0;
+#ifdef CY_EXECUTE
virtual JSValueRef CastJSValue(JSContextRef context) const = 0;
+#endif
};
void CYThrow(const char *format, ...) _noreturn;
+
+#ifdef CY_EXECUTE
void CYThrow(JSContextRef context, JSValueRef value);
+#endif
#define CYTry \
try
return NULL; \
}
+// XXX: fix this: _ is not safe; this is /not/ Menes ;P
+#undef _assert
#define _assert(test, args...) do { \
if (!(test)) \
CYThrow("*** _assert(%s):%s(%u):%s [errno=%d]", #test, __FILE__, __LINE__, __FUNCTION__, errno); \