X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/5a28571a4cd669a302259b9e41e5c14deca5a953..bd5734cc00d2257272e8f7702f9e9b6f64858907:/Internal.hpp diff --git a/Internal.hpp b/Internal.hpp index 9bd4012..87ff055 100644 --- a/Internal.hpp +++ b/Internal.hpp @@ -1,5 +1,5 @@ /* Cycript - Optimizing JavaScript Compiler/Runtime - * Copyright (C) 2009-2014 Jay Freeman (saurik) + * Copyright (C) 2009-2015 Jay Freeman (saurik) */ /* GNU Affero General Public License, Version 3 {{{ */ @@ -35,7 +35,6 @@ JSGlobalContextRef CYGetJSContext(JSContextRef context); void Structor_(CYPool &pool, sig::Type *&type); -JSObjectRef CYMakeType(JSContextRef context, const char *type); JSObjectRef CYMakeType(JSContextRef context, sig::Type *type); extern JSClassRef Functor_; @@ -61,6 +60,15 @@ struct Type_privateData : type_ = signature.elements[0].type; } + Type_privateData(sig::Primitive primitive) : + ffi_(NULL) + { + sig::Type type; + memset(&type, 0, sizeof(type)); + type.primitive = primitive; + Set(&type); + } + Type_privateData(sig::Type *type) : ffi_(NULL) { @@ -189,11 +197,13 @@ struct Closure_privateData : { JSGlobalContextRef context_; JSObjectRef function_; + JSValueRef (*adapter_)(JSContextRef, size_t, JSValueRef[], JSObjectRef); - Closure_privateData(JSContextRef context, JSObjectRef function, const sig::Signature &signature) : + Closure_privateData(JSContextRef context, JSObjectRef function, JSValueRef (*adapter)(JSContextRef, size_t, JSValueRef[], JSObjectRef), const sig::Signature &signature) : cy::Functor(signature, NULL), context_(CYGetJSContext(context)), - function_(function) + function_(function), + adapter_(adapter) { //XXX:JSGlobalContextRetain(context_); JSValueProtect(context_, function_); @@ -205,7 +215,7 @@ struct Closure_privateData : } }; -Closure_privateData *CYMakeFunctor_(JSContextRef context, JSObjectRef function, const sig::Signature &signature, void (*callback)(ffi_cif *, void *, void **, void *)); +Closure_privateData *CYMakeFunctor_(JSContextRef context, JSObjectRef function, const sig::Signature &signature, JSValueRef (*adapter)(JSContextRef, size_t, JSValueRef[], JSObjectRef)); void CYExecuteClosure(ffi_cif *cif, void *result, void **arguments, void *arg, JSValueRef (*adapter)(JSContextRef, size_t, JSValueRef[], JSObjectRef)); #endif/*CYCRIPT_INTERNAL_HPP*/