mirror of
https://github.com/danog/ext-php-rs.git
synced 2024-11-26 20:15:22 +01:00
Add is_identical for zvals (#217)
This commit is contained in:
parent
7ed31ebda9
commit
87ac43d05e
@ -88,6 +88,7 @@ bind! {
|
||||
zend_hash_str_update,
|
||||
zend_internal_arg_info,
|
||||
zend_is_callable,
|
||||
zend_is_identical,
|
||||
zend_long,
|
||||
zend_lookup_class_ex,
|
||||
zend_module_entry,
|
||||
|
@ -834,6 +834,9 @@ extern "C" {
|
||||
cache_slot: *mut *mut ::std::os::raw::c_void,
|
||||
) -> ::std::os::raw::c_int;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn zend_is_identical(op1: *mut zval, op2: *mut zval) -> bool;
|
||||
}
|
||||
extern "C" {
|
||||
pub fn zend_is_true(op: *mut zval) -> ::std::os::raw::c_int;
|
||||
}
|
||||
|
@ -11,8 +11,8 @@ use crate::{
|
||||
convert::{FromZval, FromZvalMut, IntoZval, IntoZvalDyn},
|
||||
error::{Error, Result},
|
||||
ffi::{
|
||||
_zval_struct__bindgen_ty_1, _zval_struct__bindgen_ty_2, zend_is_callable, zend_resource,
|
||||
zend_value, zval, zval_ptr_dtor,
|
||||
_zval_struct__bindgen_ty_1, _zval_struct__bindgen_ty_2, zend_is_callable,
|
||||
zend_is_identical, zend_resource, zend_value, zval, zval_ptr_dtor,
|
||||
},
|
||||
flags::DataType,
|
||||
flags::ZvalTypeFlags,
|
||||
@ -327,6 +327,18 @@ impl Zval {
|
||||
unsafe { zend_is_callable(ptr as *mut Self, 0, std::ptr::null_mut()) }
|
||||
}
|
||||
|
||||
/// Checks if the zval is identical to another one.
|
||||
/// This works like `===` in php.
|
||||
///
|
||||
/// # Parameters
|
||||
///
|
||||
/// * `other` - The the zval to check identity against.
|
||||
pub fn is_identical(&self, other: &Self) -> bool {
|
||||
let self_p: *const Self = self;
|
||||
let other_p: *const Self = other;
|
||||
unsafe { zend_is_identical(self_p as *mut Self, other_p as *mut Self) }
|
||||
}
|
||||
|
||||
/// Returns true if the zval contains a pointer, false otherwise.
|
||||
pub fn is_ptr(&self) -> bool {
|
||||
self.get_type() == DataType::Ptr
|
||||
|
Loading…
Reference in New Issue
Block a user