本文整理汇总了C++中v8::Handle::IsString方法的典型用法代码示例。如果您正苦于以下问题:C++ Handle::IsString方法的具体用法?C++ Handle::IsString怎么用?C++ Handle::IsString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类v8::Handle
的用法示例。
在下文中一共展示了Handle::IsString方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: v8NonStringValueToWebCoreString
String v8NonStringValueToWebCoreString(v8::Handle<v8::Value> object)
{
ASSERT(!object->IsString());
if (object->IsInt32()) {
int value = object->Int32Value();
// Most numbers used are <= 100. Even if they aren't used there's very little in using the space.
const int kLowNumbers = 100;
static AtomicString lowNumbers[kLowNumbers + 1];
String webCoreString;
if (0 <= value && value <= kLowNumbers) {
webCoreString = lowNumbers[value];
if (!webCoreString) {
AtomicString valueString = AtomicString(String::number(value));
lowNumbers[value] = valueString;
webCoreString = valueString;
}
} else
webCoreString = String::number(value);
return webCoreString;
}
v8::TryCatch block;
v8::Handle<v8::String> v8String = object->ToString();
// Handle the case where an exception is thrown as part of invoking toString on the object.
if (block.HasCaught()) {
throwError(block.Exception());
return StringImpl::empty();
}
return v8StringToWebCoreString<String>(v8String, DoNotExternalize);
}
示例2: createNumber
static PassRefPtr<IDBKey> createIDBKeyFromValue(v8::Handle<v8::Value> value, Vector<v8::Handle<v8::Array> >& stack, v8::Isolate* isolate)
{
if (value->IsNumber() && !std::isnan(value->NumberValue()))
return IDBKey::createNumber(value->NumberValue());
if (value->IsString())
return IDBKey::createString(toCoreString(value.As<v8::String>()));
if (value->IsDate() && !std::isnan(value->NumberValue()))
return IDBKey::createDate(value->NumberValue());
if (value->IsArray()) {
v8::Handle<v8::Array> array = v8::Handle<v8::Array>::Cast(value);
if (stack.contains(array))
return 0;
if (stack.size() >= maximumDepth)
return 0;
stack.append(array);
IDBKey::KeyArray subkeys;
uint32_t length = array->Length();
for (uint32_t i = 0; i < length; ++i) {
v8::Local<v8::Value> item = array->Get(v8::Int32::New(i, isolate));
RefPtr<IDBKey> subkey = createIDBKeyFromValue(item, stack, isolate);
if (!subkey)
subkeys.append(IDBKey::createInvalid());
else
subkeys.append(subkey);
}
stack.removeLast();
return IDBKey::createArray(subkeys);
}
return 0;
}
示例3: toString
static std::string toString(v8::Handle<v8::Value> str)
{
if (!str->IsString())
return "";
v8::String::Utf8Value value(str);
return *value;
}
示例4: v8ValueToAtomicWebCoreString
AtomicString v8ValueToAtomicWebCoreString(v8::Handle<v8::Value> v8Value)
{
if (v8Value->IsString())
return v8StringToAtomicWebCoreString(v8::Handle<v8::String>::Cast(v8Value));
String string = v8ValueToWebCoreString(v8Value);
return AtomicString(string);
}
示例5: isArgumentNull
bool Util::isArgumentNull(const v8::Handle<v8::Value> value) {
if (value->IsString() && value->ToString()->Length() > 0) {
return false;
} else {
return true;
}
}
示例6: go
std::string jsHistory::go(v8::Handle<v8::Value> pos)
{
string retval = "";
if (pos->IsInt32()) {
// process offset
int offs = pos->Int32Value();
offs += index;
if (offs > 0 && offs < (int)history.size()) {
index = offs;
retval = history[index];
if (window != NULL) {
window->load(retval);
}
}
} else if (pos->IsString()) {
// search for substring
string srch = value_to_string(Local<Value>::New(pos));
for( size_t i = 0 ; i < history.size(); ++i) {
if (history[i].find(srch) != string::npos) {
index = i;
retval = history[index];
if (window != NULL) {
window->load(retval);
}
break;
}
}
}
return retval;
}
示例7: ParseEncoding
enum encoding ParseEncoding(v8::Handle<v8::Value> encoding_v, enum encoding _default) {
v8::HandleScope scope;
if (!encoding_v->IsString()) return _default;
v8::String::Utf8Value encoding(encoding_v->ToString());
if (strcasecmp(*encoding, "utf8") == 0) {
return UTF8;
} else if (strcasecmp(*encoding, "utf-8") == 0) {
return UTF8;
} else if (strcasecmp(*encoding, "ascii") == 0) {
return ASCII;
} else if (strcasecmp(*encoding, "binary") == 0) {
return BINARY;
} else if (strcasecmp(*encoding, "raw") == 0) {
fprintf(stderr, "'raw' (array of integers) has been removed. "
"Use 'binary'.\n");
return BINARY;
} else if (strcasecmp(*encoding, "raws") == 0) {
fprintf(stderr, "'raws' encoding has been renamed to 'binary'. "
"Please update your code.\n");
return BINARY;
} else {
return _default;
}
}
示例8: jsvalToString
static std::string jsvalToString(const v8::Handle<v8::Value>& str)
{
if (!str->IsString())
return "";
v8::String::Utf8Value value(str);
return *value;
}
示例9: jsValToString
std::string SBController::jsValToString(const v8::Handle<v8::Value>& str)
{
if (!str->IsString())
return "";
v8::String::Utf8Value value(str);
return *value;
}
示例10: 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);
}
示例11: create
PassRefPtr<IDBKey> createIDBKeyFromValue(v8::Handle<v8::Value> value)
{
if (value->IsNull())
return IDBKey::create();
if (value->IsInt32())
return IDBKey::create(value->Int32Value());
if (value->IsString())
return IDBKey::create(v8ValueToWebCoreString(value));
// FIXME: Implement dates.
return 0;
}
示例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: 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;
}
示例14: create
static PassRefPtr<CanvasStyle> toCanvasStyle(v8::Handle<v8::Value> value)
{
if (value->IsString())
return CanvasStyle::create(toWebCoreString(value));
if (V8CanvasGradient::HasInstance(value))
return CanvasStyle::create(V8CanvasGradient::toNative(v8::Handle<v8::Object>::Cast(value)));
if (V8CanvasPattern::HasInstance(value))
return CanvasStyle::create(V8CanvasPattern::toNative(v8::Handle<v8::Object>::Cast(value)));
return 0;
}
示例15: create
static PassRefPtr<CanvasStyle> toCanvasStyle(v8::Handle<v8::Value> value)
{
if (value->IsString())
return CanvasStyle::create(toWebCoreString(value));
if (V8CanvasGradient::HasInstance(value))
return CanvasStyle::create(V8Proxy::DOMWrapperToNative<CanvasGradient>(value));
if (V8CanvasPattern::HasInstance(value))
return CanvasStyle::create(V8Proxy::DOMWrapperToNative<CanvasPattern>(value));
return 0;
}