On Tue, Jun 1, 2010 at 9:34 PM, vlad vladbph <[email protected]> wrote:
> Thanks Anton, that was stupid of me.... :)
> ...another question related to that. Is there anyway to get v8::Function
> from args[0]? to make the same call from c++.
>
First use arg->IsFunction() to ensure it's a function, then use
Function::Cast() to convert the arg to a function.
here are some random functions which use Function::Cast():
typedef v8::Handle<v8::Function> FuncHnd;
/**
Installs the handler for a given callback routine. If
!func->IsFunction() it throws a JS-side exception.
*/
void setHandler( char const * n, v8::Handle<v8::Value> func )
{
if( func.IsEmpty() || !func->IsFunction() )
{
cv::StringBuffer msg;
msg << v8::juice::cw::ClassName<ExpatJS>::Value() << '.' <<
n
<< " must be-a Function!";
TOSSV(msg);
return;
}
this->jself->Set( JSTR(n), FuncHnd( v8::Function::Cast(*func) )
);
}
/**
Gets the handler callback function associated with n, or an
empty handle if n is not set or is not-a Function.
*/
FuncHnd getHandler( char const * n )
{
ValHnd const h = this->jself->Get( JSTR(n) );
return (!h.IsEmpty() && h->IsFunction() )
? FuncHnd( v8::Function::Cast(*h) )
: FuncHnd();
}
--
----- stephan beal
http://wanderinghorse.net/home/stephan/
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users