本文整理汇总了C++中v8::Handle::IsObject方法的典型用法代码示例。如果您正苦于以下问题:C++ Handle::IsObject方法的具体用法?C++ Handle::IsObject怎么用?C++ Handle::IsObject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类v8::Handle
的用法示例。
在下文中一共展示了Handle::IsObject方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: scope
static result_type from_v8(v8::Isolate* isolate, v8::Handle<v8::Value> value)
{
v8::HandleScope scope(isolate);
result_type result;
if (value->IsArray())
{
v8::Local<v8::Array> arr = value.As<v8::Array>();
v8::Local<v8::Value> x = arr->Get(0), y = arr->Get(1);
if (arr->Length() != 2 || !x->IsNumber() || !y->IsNumber())
{
throw std::invalid_argument("expected [x, y] array");
}
result.x = v8pp::from_v8<T>(isolate, x);
result.y = v8pp::from_v8<T>(isolate, y);
}
else if (value->IsObject())
{
v8::Local<v8::Object> obj = value.As<v8::Object>();
if (!get_option(isolate, obj, "x", result.x) || !get_option(isolate, obj, "y", result.y))
{
throw std::invalid_argument("expected {x, y} object");
}
}
else
{
throw std::invalid_argument("expected [x, y] array or {x, y} object");
}
return result;
}
示例2: PointJsFromC
//Twin
void PointJsFromC(v8::Handle<Value> value,cs::Twin* r){
HandleScope store;
if(!value->IsObject()) return;
Local<Object> vObj = value->ToObject();
vObj->Set(String::New("x"),Int32::New(r->x));
vObj->Set(String::New("y"),Int32::New(r->y));
}
示例3: toJsonValue
QJsonObject QV8JsonWrapper::toJsonObject(v8::Handle<v8::Value> value,
V8ObjectSet &visitedObjects)
{
QJsonObject result;
if (!value->IsObject() || value->IsArray() || value->IsFunction())
return result;
v8::Handle<v8::Object> v8object(value.As<v8::Object>());
if (visitedObjects.contains(v8object)) {
// Avoid recursion.
// For compatibility with QVariant{List,Map} conversion, we return an
// empty object (and no error is thrown).
return result;
}
visitedObjects.insert(v8object);
v8::Local<v8::Array> propertyNames = m_engine->getOwnPropertyNames(v8object);
uint32_t length = propertyNames->Length();
for (uint32_t i = 0; i < length; ++i) {
v8::Local<v8::Value> name = propertyNames->Get(i);
v8::Local<v8::Value> propertyValue = v8object->Get(name);
if (!propertyValue->IsFunction())
result.insert(QJSConverter::toString(name->ToString()),
toJsonValue(propertyValue, visitedObjects));
}
visitedObjects.remove(v8object);
return result;
}
示例4: if
// XPath-related utilities
RefPtr<XPathNSResolver> V8DOMWrapper::getXPathNSResolver(v8::Handle<v8::Value> value, V8Proxy* proxy)
{
RefPtr<XPathNSResolver> resolver;
if (V8XPathNSResolver::HasInstance(value))
resolver = V8XPathNSResolver::toNative(v8::Handle<v8::Object>::Cast(value));
else if (value->IsObject())
resolver = V8CustomXPathNSResolver::create(value->ToObject());
return resolver;
}
示例5: get
static bool get(v8::Handle<v8::Value>& object, const String& keyPathElement, v8::Handle<v8::Value>& result, v8::Isolate* isolate)
{
if (object->IsString() && keyPathElement == "length") {
int32_t length = v8::Handle<v8::String>::Cast(object)->Length();
result = v8::Number::New(isolate, length);
return true;
}
return object->IsObject() && getValueFrom(v8String(isolate, keyPathElement), result);
}
示例6: RectJsFromC
//.........这里部分代码省略.........
// "return":{
// "type":"void",
// "text":"函数没有返回值。"
// },
// "remark":[
// "输出窗口是一个用于显示日志消息的窗口,不能响应用户的输入,但是可以控制字体大小、字体颜色、背景颜色。日志窗口有自己的消息循环,与主城市是否是窗口程序无关。"
// ],
// "member":[
//{
// "type":"function",
// "name":"show([exit])",
// "text":"显示日志窗口。",
// "param":[
// {
// "type":"boolean",
// "name":"exit",
// "text":"当用户关闭日志窗口时,是否退出程序,缺省是 true。"
// }
// ],
// "return":{
// "type":"void",
// "text":"没有返回值。"
// }
//}
//,{
// "type":"function",
// "name":"close()",
// "text":"隐藏日志窗口,但是日志不会被清空。",
// "return":{
// "type":"void",
// "text":"这个函数没有返回值。"
// }
//}
//,{
// "type":"function",
// "name":"setMaxLine([count])",
// "text":"设置日志窗口最大的文本行数,如果日志达到这个行数,前面的日志会被舍弃。",
// "param":[
// {
// "type":"integer",
// "name":"[count]",
// "text":"可能的最大行数,缺省是 1000"
// }
// ],
// "return":{
// "type":"void",
// "text":"这个函数没有返回值。"
// }
//}
//,{
// "type":"function",
// "name":"setFontSize(size)",
// "text":"设置输出文本的字体大小,这个设置是会影响所有文本。",
// "param":[
// {
// "type":"integer",
// "name":"size",
// "text":"字体的尺寸,缺省是 16."
// }
// ],
// "return":{
// "type":"void",
// "text":"这个函数没有返回值。"
// }
//},
//{
// "type":"function",
// "name":"setBkColor(color)",
// "text":"设置输出窗口的背景色,缺省是黑色。",
// "param":[
// {
// "type":"integer",
// "name":"color",
// "text":"颜色值。"
// }
// ],
// "return":{
// "type":"void",
// "text":"这个函数没有返回值。"
// }
//},
//{
// "type":"function",
// "name":"clear()",
// "text":"清空所有日志。",
// "return":{
// "type":"void",
// "text":"这个函数没有返回值。"
// }
//}
//],"source":"D:\\SoftProject\\GitLib\\jsuser\\example\\logwnd.jsuser"}//*
void RectJsFromC(v8::Handle<Value> value,cs::Rect* r){
HandleScope store;
if(!value->IsObject()) return;
Local<Object> vObj = value->ToObject();
vObj->Set(String::New("left"),Int32::New(r->left));
vObj->Set(String::New("top"),Int32::New(r->top));
vObj->Set(String::New("right"),Int32::New(r->right));
vObj->Set(String::New("bottom"),Int32::New(r->bottom));
}
示例7: if
PassRefPtr<XPathNSResolver> toXPathNSResolver(v8::Handle<v8::Value> value)
{
RefPtr<XPathNSResolver> resolver;
if (V8XPathNSResolver::HasInstance(value))
resolver = V8XPathNSResolver::toNative(v8::Handle<v8::Object>::Cast(value));
else if (value->IsObject())
resolver = V8CustomXPathNSResolver::create(value->ToObject());
return resolver;
}
示例8:
v8::Handle<v8::Object> V8PerIsolateData::findInstanceInPrototypeChain(const WrapperTypeInfo* info, v8::Handle<v8::Value> value, DOMTemplateMap& domTemplateMap)
{
if (value.IsEmpty() || !value->IsObject())
return v8::Handle<v8::Object>();
DOMTemplateMap::iterator result = domTemplateMap.find(info);
if (result == domTemplateMap.end())
return v8::Handle<v8::Object>();
v8::Handle<v8::FunctionTemplate> templ = result->value.Get(m_isolate);
return v8::Handle<v8::Object>::Cast(value)->FindInstanceInPrototypeChain(templ);
}
示例9:
v8::Handle<v8::Value> JS_GetListValue(v8::Handle<v8::Value> pList, int index)
{
if(!pList.IsEmpty() && pList->IsObject())
{
v8::Local<v8::Object> obj = pList->ToObject();
return obj->Get(index);
}
return v8::Handle<v8::Value>();
}
示例10:
V8NodeFilterCondition::V8NodeFilterCondition(v8::Handle<v8::Value> filter, v8::Handle<v8::Object> owner, ScriptState* scriptState)
: m_scriptState(scriptState)
{
// ..acceptNode(..) will only dispatch m_filter if m_filter->IsObject().
// We'll make sure m_filter is either usable by acceptNode or empty.
// (See the fast/dom/node-filter-gc test for a case where 'empty' happens.)
if (!filter.IsEmpty() && filter->IsObject()) {
V8HiddenValue::setHiddenValue(scriptState->isolate(), owner, V8HiddenValue::condition(scriptState->isolate()), filter);
m_filter.set(scriptState->isolate(), filter);
m_filter.setWeak(this, &setWeakCallback);
}
}
示例11: PointJsToC
bool PointJsToC(v8::Handle<Value> value,cs::Twin* r){
HandleScope store;
if(!value->IsObject()) return false;
Local<Object> vObj = value->ToObject();
Local<Value> vx = vObj->Get(String::New("x"));
if(vx->IsUndefined()) return false;
Local<Value> vy = vObj->Get(String::New("y"));
if(vy->IsUndefined()) return false;
r->x = vx->Int32Value();
r->y = vy->Int32Value();
return true;
}
示例12: null
static PassRefPtr<JSONValue> v8ToJSONValue(v8::Handle<v8::Value> value, int maxDepth, v8::Isolate* isolate)
{
if (value.IsEmpty()) {
ASSERT_NOT_REACHED();
return 0;
}
if (!maxDepth)
return 0;
maxDepth--;
if (value->IsNull() || value->IsUndefined())
return JSONValue::null();
if (value->IsBoolean())
return JSONBasicValue::create(value->BooleanValue());
if (value->IsNumber())
return JSONBasicValue::create(value->NumberValue());
if (value->IsString())
return JSONString::create(toCoreString(value.As<v8::String>()));
if (value->IsArray()) {
v8::Handle<v8::Array> array = v8::Handle<v8::Array>::Cast(value);
RefPtr<JSONArray> inspectorArray = JSONArray::create();
uint32_t length = array->Length();
for (uint32_t i = 0; i < length; i++) {
v8::Local<v8::Value> value = array->Get(v8::Int32::New(isolate, i));
RefPtr<JSONValue> element = v8ToJSONValue(value, maxDepth, isolate);
if (!element)
return 0;
inspectorArray->pushValue(element);
}
return inspectorArray;
}
if (value->IsObject()) {
RefPtr<JSONObject> jsonObject = JSONObject::create();
v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(value);
v8::Local<v8::Array> propertyNames = object->GetPropertyNames();
uint32_t length = propertyNames->Length();
for (uint32_t i = 0; i < length; i++) {
v8::Local<v8::Value> name = propertyNames->Get(v8::Int32::New(isolate, i));
// FIXME(yurys): v8::Object should support GetOwnPropertyNames
if (name->IsString() && !object->HasRealNamedProperty(v8::Handle<v8::String>::Cast(name)))
continue;
RefPtr<JSONValue> propertyValue = v8ToJSONValue(object->Get(name), maxDepth, isolate);
if (!propertyValue)
return 0;
V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<WithNullCheck>, nameString, name, 0);
jsonObject->setValue(nameString, propertyValue);
}
return jsonObject;
}
ASSERT_NOT_REACHED();
return 0;
}
示例13:
v8::Handle<v8::Function> V8AdaptorFunction::wrap(v8::Handle<v8::Object> object, const AtomicString& name, v8::Isolate* isolate)
{
if (object.IsEmpty() || !object->IsObject())
return v8::Handle<v8::Function>();
v8::Handle<v8::Function> adaptor = v8::Handle<v8::Function>::Cast(getTemplate(isolate)->GetFunction());
if (adaptor.IsEmpty())
return v8::Handle<v8::Function>();
adaptor->SetName(v8String(name.string(), isolate));
adaptor->SetHiddenValue(V8HiddenPropertyName::adaptorFunctionPeer(), object);
object->SetHiddenValue(V8HiddenPropertyName::adaptorFunctionPeer(), adaptor);
return adaptor;
}
示例14: internalPrint
// The callback that is invoked by v8 whenever the JavaScript 'print'
// function is called. Prints its arguments on stdout separated by
// spaces and ending with a newline.
void internalPrint(const v8::Handle<v8::Value> arg) {
v8::HandleScope handle_scope;
std::string cstr;
if (arg->IsObject()) {
v8::String::Utf8Value str(toJson(arg->ToObject(), true));
cstr = ToCString(str);
} else {
v8::String::Utf8Value str(arg);
cstr = ToCString(str);
}
printf("%s", cstr.c_str());
}
示例15: null
static PassRefPtr<InspectorValue> v8ToInspectorValue(v8::Handle<v8::Value> value, int maxDepth)
{
if (value.IsEmpty()) {
ASSERT_NOT_REACHED();
return 0;
}
if (!maxDepth)
return 0;
maxDepth--;
if (value->IsNull() || value->IsUndefined())
return InspectorValue::null();
if (value->IsBoolean())
return InspectorBasicValue::create(value->BooleanValue());
if (value->IsNumber())
return InspectorBasicValue::create(value->NumberValue());
if (value->IsString())
return InspectorString::create(toWebCoreString(value));
if (value->IsArray()) {
v8::Handle<v8::Array> array = v8::Handle<v8::Array>::Cast(value);
RefPtr<InspectorArray> inspectorArray = InspectorArray::create();
uint32_t length = array->Length();
for (uint32_t i = 0; i < length; i++) {
v8::Local<v8::Value> value = array->Get(v8::Int32::New(i));
RefPtr<InspectorValue> element = v8ToInspectorValue(value, maxDepth);
if (!element)
return 0;
inspectorArray->pushValue(element);
}
return inspectorArray;
}
if (value->IsObject()) {
RefPtr<InspectorObject> inspectorObject = InspectorObject::create();
v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(value);
v8::Local<v8::Array> propertyNames = object->GetPropertyNames();
uint32_t length = propertyNames->Length();
for (uint32_t i = 0; i < length; i++) {
v8::Local<v8::Value> name = propertyNames->Get(v8::Int32::New(i));
// FIXME(yurys): v8::Object should support GetOwnPropertyNames
if (name->IsString() && !object->HasRealNamedProperty(v8::Handle<v8::String>::Cast(name)))
continue;
RefPtr<InspectorValue> propertyValue = v8ToInspectorValue(object->Get(name), maxDepth);
if (!propertyValue)
return 0;
inspectorObject->setValue(toWebCoreStringWithNullCheck(name), propertyValue);
}
return inspectorObject;
}
ASSERT_NOT_REACHED();
return 0;
}