本文整理汇总了C++中v8::Handle::IsInt32方法的典型用法代码示例。如果您正苦于以下问题:C++ Handle::IsInt32方法的具体用法?C++ Handle::IsInt32怎么用?C++ Handle::IsInt32使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类v8::Handle
的用法示例。
在下文中一共展示了Handle::IsInt32方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: enforceRange
int32_t toInt32(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
{
// Fast case. The value is already a 32-bit integer.
if (value->IsInt32())
return value->Int32Value();
// Can the value be converted to a number?
V8TRYCATCH_EXCEPTION_RETURN(v8::Local<v8::Number>, numberObject, value->ToNumber(), exceptionState, 0);
if (numberObject.IsEmpty()) {
exceptionState.throwTypeError("Not convertible to a number value (of type 'long'.)");
return 0;
}
if (configuration == EnforceRange)
return enforceRange(numberObject->Value(), kMinInt32, kMaxInt32, "long", exceptionState);
// Does the value convert to nan or to an infinity?
double numberValue = numberObject->Value();
if (std::isnan(numberValue) || std::isinf(numberValue))
return 0;
if (configuration == Clamp)
return clampTo<int32_t>(numberObject->Value());
V8TRYCATCH_EXCEPTION_RETURN(int32_t, result, numberObject->Int32Value(), exceptionState, 0);
return result;
}
示例2: enforceRange
int64_t toInt64(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, bool& ok)
{
ok = true;
// Fast case. The value is a 32-bit integer.
if (value->IsInt32())
return value->Int32Value();
// Can the value be converted to a number?
v8::Local<v8::Number> numberObject = value->ToNumber();
if (numberObject.IsEmpty()) {
ok = false;
return 0;
}
double x = numberObject->Value();
if (configuration == EnforceRange)
return enforceRange(x, -kJSMaxInteger, kJSMaxInteger, ok);
// NaNs and +/-Infinity should be 0, otherwise modulo 2^64.
unsigned long long integer;
doubleToInteger(x, integer);
return integer;
}
示例3: enforceRange
uint8_t toUInt8(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, bool& ok)
{
ok = true;
// Fast case. The value is a 32-bit signed integer - possibly positive?
if (value->IsInt32()) {
int32_t result = value->Int32Value();
if (result >= 0 && result <= kMaxUInt8)
return static_cast<uint8_t>(result);
if (configuration == EnforceRange) {
ok = false;
return 0;
}
// Converting to uint8_t will cause the resulting value to be the value modulo 2^8.
return static_cast<uint8_t>(result);
}
// Can the value be converted to a number?
v8::Local<v8::Number> numberObject = value->ToNumber();
if (numberObject.IsEmpty()) {
ok = false;
return 0;
}
if (configuration == EnforceRange)
return enforceRange(numberObject->Value(), 0, kMaxUInt8, ok);
// Does the value convert to nan or to an infinity?
double numberValue = numberObject->Value();
if (std::isnan(numberValue) || std::isinf(numberValue) || !numberValue)
return 0;
numberValue = numberValue < 0 ? -floor(abs(numberValue)) : floor(abs(numberValue));
return static_cast<uint8_t>(fmod(numberValue, 256)); // 2^8.
}
示例4: 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);
}
示例5: 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;
}
示例6: toInt32
int toInt32(v8::Handle<v8::Value> value, bool& ok)
{
ok = true;
// Fast case. The value is already a 32-bit integer.
if (value->IsInt32())
return value->Int32Value();
// Can the value be converted to a number?
v8::Local<v8::Number> numberObject = value->ToNumber();
if (numberObject.IsEmpty()) {
ok = false;
return 0;
}
// Does the value convert to nan or to an infinity?
double numberValue = numberObject->Value();
if (isnan(numberValue) || isinf(numberValue)) {
ok = false;
return 0;
}
// Can the value be converted to a 32-bit integer?
v8::Local<v8::Int32> intValue = value->ToInt32();
if (intValue.IsEmpty()) {
ok = false;
return 0;
}
// Return the result of the int32 conversion.
return intValue->Value();
}
示例7: 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;
}
示例8: v8NonStringValueToWebCoreString
String v8NonStringValueToWebCoreString(v8::Handle<v8::Value> object)
{
ASSERT(!object->IsString());
if (object->IsInt32())
return int32ToWebCoreString(object->Int32Value());
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);
}
示例9:
uint32_t toUInt32(v8::Handle<v8::Value> value, bool& ok)
{
ok = true;
// FIXME: there is currently no Value::IsUint32(). This code does
// some contortions to avoid silently converting out-of-range
// values to uint32_t.
// Fast case. The value is already a 32-bit positive integer.
if (value->IsInt32()) {
int32_t result = value->Int32Value();
if (result >= 0)
return result;
}
// Can the value be converted to a number?
v8::Local<v8::Number> numberObject = value->ToNumber();
if (numberObject.IsEmpty()) {
ok = false;
return 0;
}
// Does the value convert to nan or to an infinity?
double numberValue = numberObject->Value();
if (isnan(numberValue) || isinf(numberValue)) {
ok = false;
return 0;
}
// Can the value be converted to a 32-bit unsigned integer?
v8::Local<v8::Uint32> uintValue = value->ToUint32();
if (uintValue.IsEmpty()) {
ok = false;
return 0;
}
// FIXME: v8::Uint32::Value is not defined!
// http://code.google.com/p/v8/issues/detail?id=624
v8::Local<v8::Int32> intValue = value->ToInt32();
if (intValue.IsEmpty()) {
ok = false;
return 0;
}
return static_cast<uint32_t>(intValue->Value());
}
示例10: wrapJSObject
jobject wrapJSObject(JNIEnv *pEnv, v8::Handle<v8::Value> value)
{
v8::HandleScope handle_scope;
if (value.IsEmpty() || value->IsNull() || value->IsUndefined()) return NULL;
if (value->IsTrue()) return NewBoolean(pEnv, JNI_TRUE);
if (value->IsFalse()) return NewBoolean(pEnv, JNI_FALSE);
if (value->IsInt32()) return NewInt(pEnv, value->Int32Value());
if (value->IsUint32()) return NewLong(pEnv, value->IntegerValue());
if (value->IsString()) return NewString(pEnv, v8::Handle<v8::String>::Cast(value));
if (value->IsDate()) return NewDate(pEnv, v8::Handle<v8::Date>::Cast(value));
if (value->IsNumber()) return NewDouble(pEnv, value->NumberValue());
// return wrap(value->ToObject());
return NULL;
}
示例11: if
Object^ V8Interop::FromV8(v8::Handle<v8::Value> value)
{
if (value->IsString())
{
return FromV8String(value);
}
else if (value->IsBoolean())
{
return FromV8Boolean(value);
}
else if (value->IsInt32())
{
return FromV8Int32(value);
}
else if (value->IsArray())
{
return FromV8Array(value);
}
else if (value->IsDate())
{
return FromV8Date(value);
}
else if (value->IsNumber())
{
return FromV8Double(value);
}
else if (value->IsFunction())
{
return FromV8Function(value);
}
else if (value->IsExternal())
{
return FromV8External(value);
}
else if (value->IsObject())
{
return FromV8Object(value);
}
else if (value->IsUndefined() || value->IsNull())
{
return nullptr;
}
return nullptr;
}
示例12: Value
static Value v8ValueToValue(v8::Handle<v8::Value> v8Value)
{
v8::HandleScope scope;
if (v8Value->IsArray()) {
List<Value> value;
const v8::Handle<v8::Array> v8Array = v8::Handle<v8::Array>::Cast(v8Value);
const uint32_t size = v8Array->Length();
for (uint32_t i = 0; i < size; ++i) {
if (v8Array->Has(i))
value.append(v8ValueToValue(v8Array->Get(i)));
else
value.append(Value());
}
return Value(value);
} else if (v8Value->IsObject()) {
Map<String, Value> value;
const v8::Handle<v8::Object> v8Object = v8Value->ToObject();
const v8::Handle<v8::Array> props = v8Object->GetPropertyNames();
const uint32_t size = props->Length();
for (uint32_t i = 0; i < size; ++i) {
assert(props->Has(i));
const v8::Handle<v8::Value> name = props->Get(i);
value[String(*v8::String::Utf8Value(name))] = v8ValueToValue(v8Object->Get(name));
}
return Value(value);
} else if (v8Value->IsBoolean()) {
return Value(v8Value->BooleanValue());
} else if (v8Value->IsInt32() || v8Value->IsUint32()) {
return Value(v8Value->Int32Value());
} else if (v8Value->IsNumber()) {
return Value(v8Value->NumberValue());
} else if (v8Value->IsString()) {
return Value(String(*v8::String::Utf8Value(v8Value)));
} else {
error() << "Unexpected v8 value type in JSONParser";
}
// undefined or null?
return Value();
}
示例13: empty
static String v8NonStringValueToWebCoreString(v8::Handle<v8::Value> object)
{
ASSERT(!object->IsString());
if (object->IsInt32())
return int32ToWebCoreString(object->Int32Value());
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();
}
// This path is unexpected. However there is hypothesis that it
// might be combination of v8 and v8 bindings bugs. For now
// just bailout as we'll crash if attempt to convert empty handle into a string.
if (v8String.IsEmpty()) {
ASSERT_NOT_REACHED();
return StringImpl::empty();
}
return v8StringToWebCoreString<String>(v8String, DoNotExternalize);
}
示例14: CanConvert
bool CJavaFunction::CanConvert(jclass clazz, v8::Handle<v8::Value> value)
{
jni::V8Env env(m_pEnv);
if (value->IsTrue() || value->IsFalse() || value->IsBoolean())
{
return env.IsAssignableFrom(env.buildins.java.lang.Boolean, clazz);
}
else if (value->IsInt32() || value->IsUint32())
{
return env.IsAssignableFrom(env.buildins.java.lang.Long, clazz) ||
env.IsAssignableFrom(env.buildins.java.lang.Integer, clazz) ||
env.IsAssignableFrom(env.buildins.java.lang.Short, clazz) ||
env.IsAssignableFrom(env.buildins.java.lang.Byte, clazz);
}
else if (value->IsNumber())
{
return env.IsAssignableFrom(env.buildins.java.lang.Double, clazz) ||
env.IsAssignableFrom(env.buildins.java.lang.Float, clazz);
}
else if (value->IsString())
{
return env.IsAssignableFrom(env.buildins.java.lang.String, clazz);
}
else if (value->IsDate())
{
return env.IsAssignableFrom(env.buildins.java.util.Date, clazz);
}
else if (value->IsArray())
{
return env.IsAssignableFrom(env.buildins.lu.flier.script.V8Array, clazz);
}
else if (value.IsEmpty() || value->IsNull() || value->IsUndefined() || value->IsObject())
{
return true;
}
return false;
}
示例15: Value
inline Value InterpreterData::v8ValueToValue(const v8::Handle<v8::Value>& value)
{
if (value.IsEmpty() || value->IsNull() || value->IsUndefined())
return Value();
else if (value->IsTrue())
return Value(true);
else if (value->IsFalse())
return Value(false);
else if (value->IsInt32())
return Value(value->ToInt32()->Value());
else if (value->IsNumber())
return Value(value->ToNumber()->Value());
else if (value->IsString()) {
const v8::String::Utf8Value str(value);
return Value(ToCString(str));
} else if (value->IsObject()) {
const v8::String::Utf8Value str(toJSON(value));
return Value::fromJSON(ToCString(str));
} else {
error() << "Unknown v8 value in Interpreter::v8ValueToValue";
}
return Value();
}