mirror of
https://github.com/icewind1991/ivory.git
synced 2026-06-03 10:44:09 +02:00
more literal type casting
This commit is contained in:
parent
42f3a76e07
commit
938558c87a
2 changed files with 66 additions and 3 deletions
|
|
@ -12,8 +12,8 @@ fn hello_world() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[ivory_export]
|
#[ivory_export]
|
||||||
fn add1(input: i64) -> i64 {
|
fn is_positive(input: i64) -> bool {
|
||||||
input + 1
|
input >= 0
|
||||||
}
|
}
|
||||||
|
|
||||||
#[ivory_export]
|
#[ivory_export]
|
||||||
|
|
|
||||||
|
|
@ -321,14 +321,77 @@ impl<K: Into<ArrayKey> + Hash + Eq + Ord, T: Into<PhpVal>> From<HashMap<K, T>> f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<ZValType> for _zval_struct__bindgen_ty_1 {
|
||||||
|
fn from(ty: ZValType) -> Self {
|
||||||
|
match ty {
|
||||||
|
ZValType::Long => _zval_struct__bindgen_ty_1 {
|
||||||
|
v: _zval_struct__bindgen_ty_1__bindgen_ty_1 {
|
||||||
|
type_: ZValType::Long as zend_uchar,
|
||||||
|
type_flags: 0,
|
||||||
|
u: _zval_struct__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { extra: 0 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ZValType::Double => _zval_struct__bindgen_ty_1 {
|
||||||
|
v: _zval_struct__bindgen_ty_1__bindgen_ty_1 {
|
||||||
|
type_: ZValType::Double as zend_uchar,
|
||||||
|
type_flags: 0,
|
||||||
|
u: _zval_struct__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { extra: 0 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ZValType::Undef => _zval_struct__bindgen_ty_1 {
|
||||||
|
v: _zval_struct__bindgen_ty_1__bindgen_ty_1 {
|
||||||
|
type_: ZValType::Undef as zend_uchar,
|
||||||
|
type_flags: 0,
|
||||||
|
u: _zval_struct__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { extra: 0 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ZValType::Null => _zval_struct__bindgen_ty_1 {
|
||||||
|
v: _zval_struct__bindgen_ty_1__bindgen_ty_1 {
|
||||||
|
type_: ZValType::Null as zend_uchar,
|
||||||
|
type_flags: 0,
|
||||||
|
u: _zval_struct__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { extra: 0 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
_ => unimplemented!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<PhpVal> for ZVal {
|
impl From<PhpVal> for ZVal {
|
||||||
fn from(input: PhpVal) -> Self {
|
fn from(input: PhpVal) -> Self {
|
||||||
|
let ty = input.get_type();
|
||||||
match input {
|
match input {
|
||||||
PhpVal::Long(val) => ZVal(zval {
|
PhpVal::Long(val) => ZVal(zval {
|
||||||
value: zend_value { lval: val },
|
value: zend_value { lval: val },
|
||||||
|
u1: ty.into(),
|
||||||
|
u2: _zval_struct__bindgen_ty_2 { extra: 0 },
|
||||||
|
}),
|
||||||
|
PhpVal::Double(val) => ZVal(zval {
|
||||||
|
value: zend_value { dval: val },
|
||||||
|
u1: ty.into(),
|
||||||
|
u2: _zval_struct__bindgen_ty_2 { extra: 0 },
|
||||||
|
}),
|
||||||
|
PhpVal::Undef => ZVal(zval {
|
||||||
|
value: zend_value { lval: 0 },
|
||||||
|
u1: ty.into(),
|
||||||
|
u2: _zval_struct__bindgen_ty_2 { extra: 0 },
|
||||||
|
}),
|
||||||
|
PhpVal::Null => ZVal(zval {
|
||||||
|
value: zend_value { lval: 0 },
|
||||||
|
u1: ty.into(),
|
||||||
|
u2: _zval_struct__bindgen_ty_2 { extra: 0 },
|
||||||
|
}),
|
||||||
|
PhpVal::Bool(val) => ZVal(zval {
|
||||||
|
value: zend_value { lval: 0 },
|
||||||
u1: _zval_struct__bindgen_ty_1 {
|
u1: _zval_struct__bindgen_ty_1 {
|
||||||
v: _zval_struct__bindgen_ty_1__bindgen_ty_1 {
|
v: _zval_struct__bindgen_ty_1__bindgen_ty_1 {
|
||||||
type_: ZValType::Long as zend_uchar,
|
type_: {
|
||||||
|
if val {
|
||||||
|
ZValType::True
|
||||||
|
} else {
|
||||||
|
ZValType::False
|
||||||
|
}
|
||||||
|
} as zend_uchar,
|
||||||
type_flags: 0,
|
type_flags: 0,
|
||||||
u: _zval_struct__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { extra: 0 },
|
u: _zval_struct__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { extra: 0 },
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue