On Fri, Jan 8, 2010 at 4:02 AM, dominiek <[email protected]> wrote: > Is there any hack you can think of that allows me to do it anyway? > Providing callbacks to non-static member functions is essential for > writing scripting language extensions. >
A callback to a non-static member function always requires an instance of that class. Aside from that, binding a member function is very similar to binding a non-member function (with the additional step of decoding the native "this" object before calling the native member function). The v8-juice project provides support for binding any of the following C++ constructs to v8: - free functions - member functions (if the class containing the member is also wrapped) - member variables, either via the Accessor interceptors or by binding functions to them, such that the functions are called in place of the get/set operations. - static variables, whether member or free. You might find it useful for your project. The main project page: http://code.google.com/p/v8-juice/ Some useful wiki pages: How the type conversions work: http://code.google.com/p/v8-juice/wiki/ConvertingTypes (that part is central to the whole binding mechanism) Binding free functions: http://code.google.com/p/v8-juice/wiki/BindingFunctions Binding classes (including member funcs/variables): http://code.google.com/p/v8-juice/wiki/ClassWrap > P.S. My C++ is a bit rusty, but I've been digging > into this problem for quite some hours now. Given that: be aware that generic binding mechanisms require either code generators (i'm not aware of any for v8, unless one counts macros) or rather intricate templates-based mechanisms. Thus you may want to brush up on your C++ before undertaking any significant JS/C++ binding projects. Simple (or "brute force") bindings can be done without too much C++ know-how, but generic solutions to the problem require a fairly good understanding of C++ templates (or a hypothetical code generator). -- ----- stephan beal http://wanderinghorse.net/home/stephan/
-- v8-users mailing list [email protected] http://groups.google.com/group/v8-users
