|
3 | 3 | use bitflags::bitflags; |
4 | 4 |
|
5 | 5 | use crate::bindings::{ |
6 | | - CONST_CS, CONST_DEPRECATED, CONST_NO_FILE_CACHE, CONST_PERSISTENT, ZEND_ACC_ABSTRACT, |
7 | | - ZEND_ACC_ANON_CLASS, ZEND_ACC_CALL_VIA_TRAMPOLINE, ZEND_ACC_CHANGED, ZEND_ACC_CLOSURE, |
8 | | - ZEND_ACC_CONSTANTS_UPDATED, ZEND_ACC_CTOR, ZEND_ACC_DEPRECATED, ZEND_ACC_DONE_PASS_TWO, |
9 | | - ZEND_ACC_EARLY_BINDING, ZEND_ACC_FAKE_CLOSURE, ZEND_ACC_FINAL, ZEND_ACC_GENERATOR, |
10 | | - ZEND_ACC_HAS_FINALLY_BLOCK, ZEND_ACC_HAS_RETURN_TYPE, ZEND_ACC_HAS_TYPE_HINTS, |
11 | | - ZEND_ACC_HAS_UNLINKED_USES, ZEND_ACC_HEAP_RT_CACHE, ZEND_ACC_IMMUTABLE, |
12 | | - ZEND_ACC_IMPLICIT_ABSTRACT_CLASS, ZEND_ACC_INTERFACE, ZEND_ACC_LINKED, ZEND_ACC_NEARLY_LINKED, |
13 | | - ZEND_ACC_NEVER_CACHE, ZEND_ACC_NO_DYNAMIC_PROPERTIES, ZEND_ACC_PRELOADED, ZEND_ACC_PRIVATE, |
14 | | - ZEND_ACC_PROMOTED, ZEND_ACC_PROPERTY_TYPES_RESOLVED, ZEND_ACC_PROTECTED, ZEND_ACC_PUBLIC, |
15 | | - ZEND_ACC_RESOLVED_INTERFACES, ZEND_ACC_RESOLVED_PARENT, ZEND_ACC_RETURN_REFERENCE, |
16 | | - ZEND_ACC_REUSE_GET_ITERATOR, ZEND_ACC_STATIC, ZEND_ACC_STRICT_TYPES, ZEND_ACC_TOP_LEVEL, |
17 | | - ZEND_ACC_TRAIT, ZEND_ACC_TRAIT_CLONE, ZEND_ACC_UNRESOLVED_VARIANCE, ZEND_ACC_USES_THIS, |
18 | | - ZEND_ACC_USE_GUARDS, ZEND_ACC_VARIADIC, ZEND_HAS_STATIC_IN_METHODS, |
| 6 | + CONST_CS, CONST_DEPRECATED, CONST_NO_FILE_CACHE, CONST_PERSISTENT, IS_ARRAY, IS_CALLABLE, |
| 7 | + IS_CONSTANT_AST, IS_DOUBLE, IS_FALSE, IS_LONG, IS_NULL, IS_OBJECT, IS_REFERENCE, IS_RESOURCE, |
| 8 | + IS_STRING, IS_TRUE, IS_TYPE_COLLECTABLE, IS_TYPE_REFCOUNTED, IS_UNDEF, IS_VOID, |
| 9 | + ZEND_ACC_ABSTRACT, ZEND_ACC_ANON_CLASS, ZEND_ACC_CALL_VIA_TRAMPOLINE, ZEND_ACC_CHANGED, |
| 10 | + ZEND_ACC_CLOSURE, ZEND_ACC_CONSTANTS_UPDATED, ZEND_ACC_CTOR, ZEND_ACC_DEPRECATED, |
| 11 | + ZEND_ACC_DONE_PASS_TWO, ZEND_ACC_EARLY_BINDING, ZEND_ACC_FAKE_CLOSURE, ZEND_ACC_FINAL, |
| 12 | + ZEND_ACC_GENERATOR, ZEND_ACC_HAS_FINALLY_BLOCK, ZEND_ACC_HAS_RETURN_TYPE, |
| 13 | + ZEND_ACC_HAS_TYPE_HINTS, ZEND_ACC_HAS_UNLINKED_USES, ZEND_ACC_HEAP_RT_CACHE, |
| 14 | + ZEND_ACC_IMMUTABLE, ZEND_ACC_IMPLICIT_ABSTRACT_CLASS, ZEND_ACC_INTERFACE, ZEND_ACC_LINKED, |
| 15 | + ZEND_ACC_NEARLY_LINKED, ZEND_ACC_NEVER_CACHE, ZEND_ACC_NO_DYNAMIC_PROPERTIES, |
| 16 | + ZEND_ACC_PRELOADED, ZEND_ACC_PRIVATE, ZEND_ACC_PROMOTED, ZEND_ACC_PROPERTY_TYPES_RESOLVED, |
| 17 | + ZEND_ACC_PROTECTED, ZEND_ACC_PUBLIC, ZEND_ACC_RESOLVED_INTERFACES, ZEND_ACC_RESOLVED_PARENT, |
| 18 | + ZEND_ACC_RETURN_REFERENCE, ZEND_ACC_REUSE_GET_ITERATOR, ZEND_ACC_STATIC, ZEND_ACC_STRICT_TYPES, |
| 19 | + ZEND_ACC_TOP_LEVEL, ZEND_ACC_TRAIT, ZEND_ACC_TRAIT_CLONE, ZEND_ACC_UNRESOLVED_VARIANCE, |
| 20 | + ZEND_ACC_USES_THIS, ZEND_ACC_USE_GUARDS, ZEND_ACC_VARIADIC, ZEND_HAS_STATIC_IN_METHODS, |
| 21 | + Z_TYPE_FLAGS_SHIFT, |
19 | 22 | }; |
20 | 23 |
|
| 24 | +bitflags! { |
| 25 | + /// Flags used for setting the type of Zval. |
| 26 | + pub struct ZvalTypeFlags: u32 { |
| 27 | + const Undef = IS_UNDEF; |
| 28 | + const Null = IS_NULL; |
| 29 | + const False = IS_FALSE; |
| 30 | + const True = IS_TRUE; |
| 31 | + const Long = IS_LONG; |
| 32 | + const Double = IS_DOUBLE; |
| 33 | + const String = IS_STRING; |
| 34 | + const Array = IS_ARRAY; |
| 35 | + const Object = IS_OBJECT; |
| 36 | + const Resource = IS_RESOURCE; |
| 37 | + const Reference = IS_REFERENCE; |
| 38 | + const Callable = IS_CALLABLE; |
| 39 | + const ConstantExpression = IS_CONSTANT_AST; |
| 40 | + const Void = IS_VOID; |
| 41 | + |
| 42 | + const InternedStringEx = Self::String.bits; |
| 43 | + const StringEx = Self::String.bits | Self::RefCounted.bits; |
| 44 | + const ArrayEx = Self::Array.bits | Self::RefCounted.bits | Self::Collectable.bits; |
| 45 | + const ObjectEx = Self::Object.bits | Self::RefCounted.bits | Self::Collectable.bits; |
| 46 | + const ResourceEx = Self::Resource.bits | Self::RefCounted.bits; |
| 47 | + const ReferenceEx = Self::Reference.bits | Self::RefCounted.bits; |
| 48 | + const ConstantAstEx = Self::ConstantExpression.bits | Self::RefCounted.bits; |
| 49 | + |
| 50 | + const RefCounted = (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT); |
| 51 | + const Collectable = (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT); |
| 52 | + } |
| 53 | +} |
| 54 | + |
21 | 55 | bitflags! { |
22 | 56 | /// Flags for building classes. |
23 | 57 | pub struct ClassFlags: u32 { |
|
0 commit comments