本文整理汇总了C++中PropertyCallbackInfo类的典型用法代码示例。如果您正苦于以下问题:C++ PropertyCallbackInfo类的具体用法?C++ PropertyCallbackInfo怎么用?C++ PropertyCallbackInfo使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PropertyCallbackInfo类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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);
}
示例2: getProp
void Shape::getProp(Local<String> property,
const PropertyCallbackInfo<Value>& info)
{
HandleScope scope;
Shape* s = ObjectWrap::Unwrap<Shape>(info.Holder());
std::string name = TOSTR(property);
Handle<Value> value = Undefined();
if (name == "numvalues")
value = Integer::New(s->get()->numvalues);
else if (name == "numlines")
value = Integer::New(s->get()->numlines);
else if (name == "index")
value = Number::New(s->get()->index);
else if (name == "type")
value = Integer::New(s->get()->type);
else if (name == "tileindex")
value = Integer::New(s->get()->tileindex);
else if (name == "classindex")
value = Integer::New(s->get()->classindex);
else if (name == "text")
value = String::New(s->get()->text);
info.GetReturnValue().Set(value);
}
示例3: 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();
}
}
示例4: ArrayIndexedPropertySetterCallback
void MetadataNode::ArrayIndexedPropertySetterCallback(uint32_t index, Local<Value> value, const PropertyCallbackInfo<Value>& info)
{
try
{
auto node = GetNodeFromHandle(info.This());
NativeScriptRuntime::SetArrayElement(info.This(), index, node->m_name, value);
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();
}
}
示例5: 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() ) );
}
}
示例6: GetOpacity
void UiWindow::GetOpacity(Local<String> property, const PropertyCallbackInfo<Value>& info) {
Isolate* isolate = Isolate::GetCurrent();
HandleScope scope(isolate);
UiWindow* _this = Unwrap<UiWindow>(info.This());
double opacity = _this->GetOpacity();
info.GetReturnValue().Set(Number::New(isolate, opacity));
}
示例7: PackageGetterCallback
void MetadataNode::PackageGetterCallback(Local<String> property, const PropertyCallbackInfo<Value>& info)
{
string propName = ConvertToString(property);
if (propName.empty())
return;
auto isolate = Isolate::GetCurrent();
HandleScope handleScope(isolate);
auto thiz = info.This();
auto cachedItem = thiz->GetHiddenValue(property);
if (cachedItem.IsEmpty())
{
auto node = GetPackageMetadata(isolate, thiz);
uint8_t nodeType = s_metadataReader.GetNodeType(node->m_treeNode);
DEBUG_WRITE("MetadataNode::GetterCallback: prop '%s' for node '%s' called, nodeType=%d, hash=%d", propName.c_str(), node->m_treeNode->name.c_str(), nodeType, thiz.IsEmpty() ? -42 : thiz->GetIdentityHash());
auto child = GetChildMetadataForPackage(node, propName);
auto foundChild = child.treeNode != nullptr;
if (foundChild)
{
auto childNode = MetadataNode::GetOrCreateInternal(child.treeNode);
cachedItem = childNode->CreateWrapper(isolate);
thiz->SetHiddenValue(property, cachedItem);
}
}
info.GetReturnValue().Set(cachedItem);
}
示例8: GetState
void UiWindow::GetState(Local<String> property, const PropertyCallbackInfo<Value>& info) {
Isolate* isolate = Isolate::GetCurrent();
HandleScope scope(isolate);
UiWindow* _this = Unwrap<UiWindow>(info.This());
WINDOW_STATE state = _this->GetState();
info.GetReturnValue().Set(Int32::New(isolate, state));
}
示例9: GetTopmost
void UiWindow::GetTopmost(Local<String> property, const PropertyCallbackInfo<Value>& info) {
Isolate* isolate = Isolate::GetCurrent();
HandleScope scope(isolate);
UiWindow* _this = Unwrap<UiWindow>(info.This());
bool topmost = _this->GetTopmost();
info.GetReturnValue().Set(Boolean::New(isolate, topmost));
}
示例10: GetTop
void UiWindow::GetTop(Local<String> property, const PropertyCallbackInfo<Value>& info) {
Isolate* isolate = Isolate::GetCurrent();
HandleScope scope(isolate);
UiWindow* _this = Unwrap<UiWindow>(info.This());
WindowRect rect = _this->GetWindowRect();
info.GetReturnValue().Set(Int32::New(isolate, rect.Top));
}
示例11: 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);
}
}
示例12: 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);
}
示例13: FieldAccessorGetterCallback
void MetadataNode::FieldAccessorGetterCallback(Local<String> property, const PropertyCallbackInfo<Value>& info)
{
try
{
auto thiz = info.This();
auto fieldCallbackData = reinterpret_cast<FieldCallbackData*>(info.Data().As<External>()->Value());
if (!fieldCallbackData->isStatic && thiz->StrictEquals(info.Holder()))
{
info.GetReturnValue().SetUndefined();
return;
}
auto value = NativeScriptRuntime::GetJavaField(thiz, fieldCallbackData);
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();
}
}
示例14: ArrayIndexedPropertySetterCallback
void MetadataNode::ArrayIndexedPropertySetterCallback(uint32_t index, Local<Value> value, const PropertyCallbackInfo<Value>& info)
{
auto node = GetNodeFromHandle(info.This());
NativeScriptRuntime::SetArrayElement(info.This(), index, node->m_name, value);
info.GetReturnValue().Set(value);
}
示例15: GetTitle
void UiWindow::GetTitle(Local<String> property, const PropertyCallbackInfo<Value>& info) {
Isolate* isolate = Isolate::GetCurrent();
HandleScope scope(isolate);
UiWindow* _this = Unwrap<UiWindow>(info.This());
Utf8String* title = _this->GetTitle();
info.GetReturnValue().Set((const Handle<Value>)*title);
delete title;
}