mirror of
https://github.com/denoland/rusty_v8.git
synced 2025-03-09 13:38:51 -04:00
Add Uint32 / Int32 Value method bindings (#1030)
This commit is contained in:
parent
d2db387448
commit
d8480fc7ef
3 changed files with 24 additions and 0 deletions
|
@ -1418,6 +1418,10 @@ const v8::Integer* v8__Integer__NewFromUnsigned(v8::Isolate* isolate,
|
||||||
|
|
||||||
int64_t v8__Integer__Value(const v8::Integer& self) { return self.Value(); }
|
int64_t v8__Integer__Value(const v8::Integer& self) { return self.Value(); }
|
||||||
|
|
||||||
|
uint32_t v8__Uint32__Value(const v8::Uint32& self) { return self.Value(); }
|
||||||
|
|
||||||
|
int32_t v8__Int32__Value(const v8::Int32& self) { return self.Value(); }
|
||||||
|
|
||||||
const v8::BigInt* v8__BigInt__New(v8::Isolate* isolate, int64_t value) {
|
const v8::BigInt* v8__BigInt__New(v8::Isolate* isolate, int64_t value) {
|
||||||
return local_to_ptr(v8::BigInt::New(isolate, value));
|
return local_to_ptr(v8::BigInt::New(isolate, value));
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,12 @@ use std::alloc::Layout;
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
use crate::HandleScope;
|
use crate::HandleScope;
|
||||||
|
use crate::Int32;
|
||||||
use crate::Integer;
|
use crate::Integer;
|
||||||
use crate::Isolate;
|
use crate::Isolate;
|
||||||
use crate::Local;
|
use crate::Local;
|
||||||
use crate::Number;
|
use crate::Number;
|
||||||
|
use crate::Uint32;
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
fn v8__Number__New(isolate: *mut Isolate, value: f64) -> *const Number;
|
fn v8__Number__New(isolate: *mut Isolate, value: f64) -> *const Number;
|
||||||
|
@ -16,6 +18,8 @@ extern "C" {
|
||||||
value: u32,
|
value: u32,
|
||||||
) -> *const Integer;
|
) -> *const Integer;
|
||||||
fn v8__Integer__Value(this: *const Integer) -> i64;
|
fn v8__Integer__Value(this: *const Integer) -> i64;
|
||||||
|
fn v8__Uint32__Value(this: *const Uint32) -> u32;
|
||||||
|
fn v8__Int32__Value(this: *const Int32) -> i32;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Number {
|
impl Number {
|
||||||
|
@ -78,3 +82,15 @@ impl Integer {
|
||||||
zero_local
|
zero_local
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Uint32 {
|
||||||
|
pub fn value(&self) -> u32 {
|
||||||
|
unsafe { v8__Uint32__Value(self) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Int32 {
|
||||||
|
pub fn value(&self) -> i32 {
|
||||||
|
unsafe { v8__Int32__Value(self) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -71,9 +71,13 @@ fn handle_scope_numbers() {
|
||||||
{
|
{
|
||||||
let scope2 = &mut v8::HandleScope::new(scope1);
|
let scope2 = &mut v8::HandleScope::new(scope1);
|
||||||
let l3 = v8::Number::new(scope2, 78.9);
|
let l3 = v8::Number::new(scope2, 78.9);
|
||||||
|
let l4 = v8::Local::<v8::Int32>::try_from(l1).unwrap();
|
||||||
|
let l5 = v8::Local::<v8::Uint32>::try_from(l2).unwrap();
|
||||||
assert_eq!(l1.value(), -123);
|
assert_eq!(l1.value(), -123);
|
||||||
assert_eq!(l2.value(), 456);
|
assert_eq!(l2.value(), 456);
|
||||||
assert_eq!(l3.value(), 78.9);
|
assert_eq!(l3.value(), 78.9);
|
||||||
|
assert_eq!(l4.value(), -123);
|
||||||
|
assert_eq!(l5.value(), 456);
|
||||||
assert_eq!(v8::Number::value(&l1), -123f64);
|
assert_eq!(v8::Number::value(&l1), -123f64);
|
||||||
assert_eq!(v8::Number::value(&l2), 456f64);
|
assert_eq!(v8::Number::value(&l2), 456f64);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue