Skip to content

Commit 42ef04a

Browse files
authored
Add function type_() method (#254)
1 parent 4e8bec7 commit 42ef04a

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

allowed_bindings.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@ bind! {
217217
_ZEND_TYPE_NULLABLE_BIT,
218218
ts_rsrc_id,
219219
_ZEND_TYPE_NAME_BIT,
220+
ZEND_INTERNAL_FUNCTION,
221+
ZEND_USER_FUNCTION,
222+
ZEND_EVAL_CODE,
220223
zval_ptr_dtor,
221224
zend_refcounted_h,
222225
zend_is_true,

docsrs_bindings.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ pub const ZEND_ACC_GENERATOR: u32 = 16777216;
9191
pub const ZEND_ACC_DONE_PASS_TWO: u32 = 33554432;
9292
pub const ZEND_ACC_HEAP_RT_CACHE: u32 = 67108864;
9393
pub const ZEND_ACC_STRICT_TYPES: u32 = 2147483648;
94+
pub const ZEND_INTERNAL_FUNCTION: u32 = 1;
95+
pub const ZEND_USER_FUNCTION: u32 = 2;
96+
pub const ZEND_EVAL_CODE: u32 = 4;
9497
pub const ZEND_ISEMPTY: u32 = 1;
9598
pub const _ZEND_SEND_MODE_SHIFT: u32 = 25;
9699
pub const _ZEND_IS_VARIADIC_BIT: u32 = 134217728;

src/flags.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ use crate::ffi::{
2020
ZEND_ACC_PROMOTED, ZEND_ACC_PROTECTED, ZEND_ACC_PUBLIC, ZEND_ACC_RESOLVED_INTERFACES,
2121
ZEND_ACC_RESOLVED_PARENT, ZEND_ACC_RETURN_REFERENCE, ZEND_ACC_STATIC, ZEND_ACC_STRICT_TYPES,
2222
ZEND_ACC_TOP_LEVEL, ZEND_ACC_TRAIT, ZEND_ACC_TRAIT_CLONE, ZEND_ACC_UNRESOLVED_VARIANCE,
23-
ZEND_ACC_USES_THIS, ZEND_ACC_USE_GUARDS, ZEND_ACC_VARIADIC, ZEND_HAS_STATIC_IN_METHODS,
24-
Z_TYPE_FLAGS_SHIFT, _IS_BOOL,
23+
ZEND_ACC_USES_THIS, ZEND_ACC_USE_GUARDS, ZEND_ACC_VARIADIC, ZEND_EVAL_CODE,
24+
ZEND_HAS_STATIC_IN_METHODS, ZEND_INTERNAL_FUNCTION, ZEND_USER_FUNCTION, Z_TYPE_FLAGS_SHIFT,
25+
_IS_BOOL,
2526
};
2627

2728
use std::{convert::TryFrom, fmt::Display};
@@ -193,6 +194,24 @@ bitflags! {
193194
const UserDeprecated = E_USER_DEPRECATED;
194195
}
195196
}
197+
#[derive(PartialEq, Eq, Hash, Debug, Clone, Copy)]
198+
pub enum FunctionType {
199+
Internal,
200+
User,
201+
Eval,
202+
}
203+
204+
impl From<u8> for FunctionType {
205+
#[allow(clippy::bad_bit_mask)]
206+
fn from(value: u8) -> Self {
207+
match value as _ {
208+
ZEND_INTERNAL_FUNCTION => Self::Internal,
209+
ZEND_USER_FUNCTION => Self::User,
210+
ZEND_EVAL_CODE => Self::Eval,
211+
_ => panic!("Unknown function type: {}", value),
212+
}
213+
}
214+
}
196215

197216
/// Valid data types for PHP.
198217
#[repr(C, u8)]

0 commit comments

Comments
 (0)