本文整理汇总了C++中PropertyCallbackInfo::GetIsolate方法的典型用法代码示例。如果您正苦于以下问题:C++ PropertyCallbackInfo::GetIsolate方法的具体用法?C++ PropertyCallbackInfo::GetIsolate怎么用?C++ PropertyCallbackInfo::GetIsolate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PropertyCallbackInfo
的用法示例。
在下文中一共展示了PropertyCallbackInfo::GetIsolate方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: JSWRAPPER_BUILDPROPERTYDATA
void JSWRAPPER_BUILDPROPERTYDATA( JSWrapperData *data, const PropertyCallbackInfo<void>& info, Local<Value> *value )
{
v8::HandleScope handle_scope( info.GetIsolate() );
if ( (*value)->IsUndefined() )
{
data->setUndefined();
} else
if ( (*value)->IsNull() )
{
data->setNull();
} else
if ( (*value)->IsNumber() )
{
data->setNumber( (*value)->ToNumber()->Value() );
} else
if ( (*value)->IsString() )
{
String::Utf8Value utf8( (*value) );
data->setString( std::string( *utf8 ) );
} else
if ( (*value)->IsBoolean() )
{
data->setBoolean( (*value)->ToBoolean()->Value() );
} else
if ( (*value)->IsObject() )
{
data->setObject( new JSWrapperObject( info.GetIsolate(), (*value)->ToObject() ) );
}
}
示例2: ClassAccessorGetterCallback
void MetadataNode::ClassAccessorGetterCallback(Local<String> property, const PropertyCallbackInfo<Value>& info)
{
try
{
auto thiz = info.This();
auto isolate = info.GetIsolate();
auto data = GetTypeMetadata(isolate, thiz.As<Function>());
auto value = NativeScriptRuntime::FindClass(data->name);
info.GetReturnValue().Set(value);
}
catch (NativeScriptException& e)
{
e.ReThrowToV8();
}
catch (std::exception e) {
stringstream ss;
ss << "Error: c++ exception: " << e.what() << endl;
NativeScriptException nsEx(ss.str());
nsEx.ReThrowToV8();
}
catch (...) {
NativeScriptException nsEx(std::string("Error: c++ exception!"));
nsEx.ReThrowToV8();
}
}
示例3: SuperAccessorGetterCallback
void MetadataNode::SuperAccessorGetterCallback(Local<String> property, const PropertyCallbackInfo<Value>& info)
{
auto thiz = info.This();
auto isolate = info.GetIsolate();
auto k = ConvertToV8String("supervalue");
auto superValue = thiz->GetHiddenValue(k).As<Object>();
if (superValue.IsEmpty())
{
superValue = s_objectManager->GetEmptyObject(isolate);
bool d = superValue->Delete(ConvertToV8String("toString"));
d = superValue->Delete(ConvertToV8String("valueOf"));
superValue->SetInternalField(static_cast<int>(ObjectManager::MetadataNodeKeys::CallSuper), True(isolate));
superValue->SetPrototype(thiz->GetPrototype().As<Object>()->GetPrototype().As<Object>()->GetPrototype());
thiz->SetHiddenValue(k, superValue);
s_objectManager->CloneLink(thiz, superValue);
DEBUG_WRITE("superValue.GetPrototype=%d", superValue->GetPrototype().As<Object>()->GetIdentityHash());
auto node = GetInstanceMetadata(isolate, thiz);
SetInstanceMetadata(isolate, superValue, node);
thiz->SetHiddenValue(k, superValue);
}
info.GetReturnValue().Set(superValue);
}
示例4: InnerClassAccessorGetterCallback
void MetadataNode::InnerClassAccessorGetterCallback(Local<String> property, const PropertyCallbackInfo<Value>& info)
{
auto isolate = info.GetIsolate();
auto thiz = info.This();
auto node = reinterpret_cast<MetadataNode*>(info.Data().As<External>()->Value());
auto innerKey = ConvertToV8String("inner:" + node->m_treeNode->name);
auto innerTypeCtorFunc = thiz->GetHiddenValue(innerKey).As<Function>();
if (innerTypeCtorFunc.IsEmpty())
{
auto funcTemplate = node->GetConstructorFunctionTemplate(isolate, node->m_treeNode);
auto ctorFunc = funcTemplate->GetFunction();
auto innerClassData = External::New(isolate, new InnerClassData(new Persistent<Object>(isolate, thiz), node));
auto innerTypeCtorFuncTemplate = FunctionTemplate::New(isolate, InnerClassConstructorCallback, innerClassData);
innerTypeCtorFuncTemplate->InstanceTemplate()->SetInternalFieldCount(static_cast<int>(ObjectManager::MetadataNodeKeys::END));
innerTypeCtorFunc = innerTypeCtorFuncTemplate->GetFunction();
auto prototypeName = ConvertToV8String("prototype");
auto innerTypeCtorFuncPrototype = innerTypeCtorFunc->Get(prototypeName).As<Object>();
innerTypeCtorFuncPrototype->SetPrototype(ctorFunc->Get(prototypeName));
thiz->SetHiddenValue(innerKey, innerTypeCtorFunc);
}
info.GetReturnValue().Set(innerTypeCtorFunc);
}
示例5: localFrame
void JNIV8ClassInfo::v8JavaAccessorGetterCallback(Local<Name> property, const PropertyCallbackInfo<Value> &info) {
JNIEnv *env = JNIWrapper::getEnvironment();
JNILocalFrame localFrame(env, 1);
Isolate *isolate = info.GetIsolate();
HandleScope scope(isolate);
v8::Local<v8::External> ext;
ext = info.Data().As<v8::External>();
JNIV8ObjectJavaAccessorHolder* cb = static_cast<JNIV8ObjectJavaAccessorHolder*>(ext->Value());
if (cb->javaGetterId) {
jobject jobj = nullptr;
if (!cb->isStatic) {
ext = info.This()->GetInternalField(0).As<v8::External>();
JNIV8Object *v8Object = reinterpret_cast<JNIV8Object *>(ext->Value());
jobj = v8Object->getJObject();
}
v8::Local<v8::Value> value;
value = JNIV8Marshalling::callJavaMethod(env, cb->propertyType, cb->javaClass, cb->javaGetterId, jobj, nullptr);
// java method could have thrown an exception; if so forward it to v8
if(env->ExceptionCheck()) {
BGJSV8Engine::GetInstance(isolate)->forwardJNIExceptionToV8();
return;
}
info.GetReturnValue().Set(value);
}
}
示例6: ClassAccessorGetterCallback
void MetadataNode::ClassAccessorGetterCallback(Local<String> property, const PropertyCallbackInfo<Value>& info)
{
auto thiz = info.This();
auto isolate = info.GetIsolate();
auto data = GetTypeMetadata(isolate, thiz.As<Function>());
auto value = NativeScriptRuntime::FindClass(data->name);
info.GetReturnValue().Set(value);
}
示例7: GetHost
void JsHttpRequestProcessor::GetHost(Local<String> name,
const PropertyCallbackInfo<Value>& info) {
HttpRequest* request = UnwrapRequest(info.Holder());
const string& path = request->Host();
info.GetReturnValue().Set(
String::NewFromUtf8(info.GetIsolate(), path.c_str(),
NewStringType::kNormal,
static_cast<int>(path.length())).ToLocalChecked());
}
示例8: Setter
void BookWrap::Setter(uint32_t index, Local<Value> value, const PropertyCallbackInfo<Value>& info) {
Isolate* isolate = info.GetIsolate();
HandleScope scope(isolate);
BookWrap* bw = ObjectWrap::Unwrap<BookWrap>(info.This());
Book* b = bw->m_book;
if (value->IsArray()) {
if (index < b->size()) {
Local<v8::Array> arr = Local<v8::Array>::Cast(value);
if (arr->Length() == 3) {
const String::Utf8Value firstname(arr->Get(0)->ToString());
const String::Utf8Value lastname(arr->Get(1)->ToString());
const time_t birthday = time_t(0.001*(*arr->Get(2))->NumberValue());
Person *p = (*b)[index];
p->firstname(*firstname);
p->lastname(*lastname);
p->birthday(birthday);
}
else {
isolate->ThrowException(Exception::TypeError(String::NewFromUtf8(isolate, "Three elements expected")));
info.GetReturnValue().SetUndefined();
return;
}
}
if (index == b->size()) {
Local<v8::Array> arr = Local<v8::Array>::Cast(value);
if (arr->Length() == 3) {
const String::Utf8Value firstname(arr->Get(0)->ToString());
const String::Utf8Value lastname(arr->Get(1)->ToString());
const time_t birthday = time_t(0.001*(*arr->Get(2))->NumberValue());
Person *p = new Person();
p->firstname(*firstname);
p->lastname(*lastname);
p->birthday(birthday);
b->add(p);
}
else {
isolate->ThrowException(Exception::TypeError(String::NewFromUtf8(isolate, "Three elements expected")));
info.GetReturnValue().SetUndefined();
return;
}
}
else {
isolate->ThrowException(Exception::RangeError(String::NewFromUtf8(isolate, "Invalid index")));
info.GetReturnValue().SetUndefined();
return;
}
}
else {
isolate->ThrowException(Exception::TypeError(String::NewFromUtf8(isolate, "Object expected")));
info.GetReturnValue().SetUndefined();
return;
}
info.GetReturnValue().SetUndefined();
}
示例9: jsMyClassGetName
void jsMyClassGetName(
Local<String> property,
const PropertyCallbackInfo<Value>& info)
{
Local<Object> self = info.Holder();
ObjectWrap* pMyClass = ObjectWrap::Unwrap<ObjectWrap>(self);
const char* name = static_cast<MyClass*>(pMyClass)->getName();
Local<String> v8Str = String::NewFromUtf8(info.GetIsolate(), name);
info.GetReturnValue().Set(v8Str);
}
示例10: Enumerator
void BookWrap::Enumerator(const PropertyCallbackInfo<Array>& info) {
Isolate* isolate = info.GetIsolate();
HandleScope scope(isolate);
Book* b = ObjectWrap::Unwrap<BookWrap>(info.This())->m_book;
Handle<v8::Array> result = v8::Array::New(isolate, b->size());
for(size_t i=0; i<b->size(); ++i) {
result->Set(i, Integer::New(isolate, i));
}
info.GetReturnValue().Set(result);
}
示例11: handle_scope
/**
* TJSオブジェクト用のプロパティセッター
* @param args 引数
* @return 結果
*/
void
TJSInstance::tjsSetter(Local<String> property, Local<Value> value, const PropertyCallbackInfo<void>& info)
{
Isolate *isolate = info.GetIsolate();
HandleScope handle_scope(isolate);
tTJSVariant instance;
tTJSVariant method;
if (getVariant(isolate, instance, info.This()) && getVariant(isolate, method, info.Data()->ToObject())) {
PropSetter set(instance, method, value, info);
set.exec();
}
}
示例12: Deleter
void BookWrap::Deleter(uint32_t index, const PropertyCallbackInfo<Boolean>& info) {
Isolate* isolate = info.GetIsolate();
HandleScope scope(isolate);
Book* b = ObjectWrap::Unwrap<BookWrap>(info.This())->m_book;
try {
b->remove(index);
info.GetReturnValue().Set(Boolean::New(isolate, true));
}
catch (Exception e) {
info.GetReturnValue().Set(Boolean::New(isolate, false));
}
}
示例13: GetPath
void JsHttpRequestProcessor::GetPath(Local<String> name,
const PropertyCallbackInfo<Value>& info) {
// Extract the C++ request object from the JavaScript wrapper.
HttpRequest* request = UnwrapRequest(info.Holder());
// Fetch the path.
const string& path = request->Path();
// Wrap the result in a JavaScript string and return it.
info.GetReturnValue().Set(
String::NewFromUtf8(info.GetIsolate(), path.c_str(),
NewStringType::kNormal,
static_cast<int>(path.length())).ToLocalChecked());
}
示例14: Getter
void BookWrap::Getter(uint32_t index, const PropertyCallbackInfo<Value>& info) {
Isolate* isolate = info.GetIsolate();
HandleScope scope(isolate);
BookWrap* bw = ObjectWrap::Unwrap<BookWrap>(info.This());
Book* b = bw->m_book;
if (index >= b->size()) {
isolate->ThrowException(Exception::RangeError(String::NewFromUtf8(isolate, "invalid row index")));
info.GetReturnValue().SetUndefined();
}
else {
Handle<Object> result = PersonWrap::New(isolate, b, index);
info.GetReturnValue().Set(result);
}
}
示例15: GetCoeff
void WrappedPoly::GetCoeff(Local<String> property, const PropertyCallbackInfo<Value>& info) {
Isolate* isolate = info.GetIsolate();
WrappedPoly* obj = ObjectWrap::Unwrap<WrappedPoly>(info.This());
v8::String::Utf8Value s(property);
std::string str(*s);
if ( str == "a") {
info.GetReturnValue().Set(Number::New(isolate, obj->a_));
}
else if (str == "b") {
info.GetReturnValue().Set(Number::New(isolate, obj->b_));
}
else if (str == "c") {
info.GetReturnValue().Set(Number::New(isolate, obj->c_));
}
}