1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
use bitflags::bitflags;
use crate::bindings::{
CONST_CS, CONST_DEPRECATED, CONST_NO_FILE_CACHE, CONST_PERSISTENT, IS_ARRAY, IS_CALLABLE,
IS_CONSTANT_AST, IS_DOUBLE, IS_FALSE, IS_LONG, IS_NULL, IS_OBJECT, IS_PTR, IS_REFERENCE,
IS_RESOURCE, IS_STRING, IS_TRUE, IS_TYPE_COLLECTABLE, IS_TYPE_REFCOUNTED, IS_UNDEF, IS_VOID,
ZEND_ACC_ABSTRACT, ZEND_ACC_ANON_CLASS, ZEND_ACC_CALL_VIA_TRAMPOLINE, ZEND_ACC_CHANGED,
ZEND_ACC_CLOSURE, ZEND_ACC_CONSTANTS_UPDATED, ZEND_ACC_CTOR, ZEND_ACC_DEPRECATED,
ZEND_ACC_DONE_PASS_TWO, ZEND_ACC_EARLY_BINDING, ZEND_ACC_FAKE_CLOSURE, ZEND_ACC_FINAL,
ZEND_ACC_GENERATOR, ZEND_ACC_HAS_FINALLY_BLOCK, ZEND_ACC_HAS_RETURN_TYPE,
ZEND_ACC_HAS_TYPE_HINTS, ZEND_ACC_HAS_UNLINKED_USES, ZEND_ACC_HEAP_RT_CACHE,
ZEND_ACC_IMMUTABLE, ZEND_ACC_IMPLICIT_ABSTRACT_CLASS, ZEND_ACC_INTERFACE, ZEND_ACC_LINKED,
ZEND_ACC_NEARLY_LINKED, ZEND_ACC_NEVER_CACHE, ZEND_ACC_NO_DYNAMIC_PROPERTIES,
ZEND_ACC_PRELOADED, ZEND_ACC_PRIVATE, ZEND_ACC_PROMOTED, ZEND_ACC_PROPERTY_TYPES_RESOLVED,
ZEND_ACC_PROTECTED, ZEND_ACC_PUBLIC, ZEND_ACC_RESOLVED_INTERFACES, ZEND_ACC_RESOLVED_PARENT,
ZEND_ACC_RETURN_REFERENCE, ZEND_ACC_REUSE_GET_ITERATOR, ZEND_ACC_STATIC, ZEND_ACC_STRICT_TYPES,
ZEND_ACC_TOP_LEVEL, ZEND_ACC_TRAIT, ZEND_ACC_TRAIT_CLONE, ZEND_ACC_UNRESOLVED_VARIANCE,
ZEND_ACC_USES_THIS, ZEND_ACC_USE_GUARDS, ZEND_ACC_VARIADIC, ZEND_HAS_STATIC_IN_METHODS,
Z_TYPE_FLAGS_SHIFT,
};
bitflags! {
pub struct ZvalTypeFlags: u32 {
const Undef = IS_UNDEF;
const Null = IS_NULL;
const False = IS_FALSE;
const True = IS_TRUE;
const Long = IS_LONG;
const Double = IS_DOUBLE;
const String = IS_STRING;
const Array = IS_ARRAY;
const Object = IS_OBJECT;
const Resource = IS_RESOURCE;
const Reference = IS_REFERENCE;
const Callable = IS_CALLABLE;
const ConstantExpression = IS_CONSTANT_AST;
const Void = IS_VOID;
const Ptr = IS_PTR;
const InternedStringEx = Self::String.bits;
const StringEx = Self::String.bits | Self::RefCounted.bits;
const ArrayEx = Self::Array.bits | Self::RefCounted.bits | Self::Collectable.bits;
const ObjectEx = Self::Object.bits | Self::RefCounted.bits | Self::Collectable.bits;
const ResourceEx = Self::Resource.bits | Self::RefCounted.bits;
const ReferenceEx = Self::Reference.bits | Self::RefCounted.bits;
const ConstantAstEx = Self::ConstantExpression.bits | Self::RefCounted.bits;
const RefCounted = (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT);
const Collectable = (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT);
}
}
bitflags! {
pub struct ClassFlags: u32 {
const Final = ZEND_ACC_FINAL;
const Abstract = ZEND_ACC_ABSTRACT;
const Immutable = ZEND_ACC_IMMUTABLE;
const HasTypeHints = ZEND_ACC_HAS_TYPE_HINTS;
const TopLevel = ZEND_ACC_TOP_LEVEL;
const Preloaded = ZEND_ACC_PRELOADED;
const Interface = ZEND_ACC_INTERFACE;
const Trait = ZEND_ACC_TRAIT;
const AnonymousClass = ZEND_ACC_ANON_CLASS;
const Linked = ZEND_ACC_LINKED;
const ImplicitAbstractClass = ZEND_ACC_IMPLICIT_ABSTRACT_CLASS;
const UseGuards = ZEND_ACC_USE_GUARDS;
const ConstantsUpdated = ZEND_ACC_CONSTANTS_UPDATED;
const NoDynamicProperties = ZEND_ACC_NO_DYNAMIC_PROPERTIES;
const HasStaticInMethods = ZEND_HAS_STATIC_IN_METHODS;
const PropertyTypesResolved = ZEND_ACC_PROPERTY_TYPES_RESOLVED;
const ReuseGetIterator = ZEND_ACC_REUSE_GET_ITERATOR;
const ResolvedParent = ZEND_ACC_RESOLVED_PARENT;
const ResolvedInterfaces = ZEND_ACC_RESOLVED_INTERFACES;
const UnresolvedVariance = ZEND_ACC_UNRESOLVED_VARIANCE;
const NearlyLinked = ZEND_ACC_NEARLY_LINKED;
const HasUnlinkedUses = ZEND_ACC_HAS_UNLINKED_USES;
}
}
bitflags! {
pub struct MethodFlags: u32 {
const Public = ZEND_ACC_PUBLIC;
const Protected = ZEND_ACC_PROTECTED;
const Private = ZEND_ACC_PRIVATE;
const Changed = ZEND_ACC_CHANGED;
const Static = ZEND_ACC_STATIC;
const Final = ZEND_ACC_FINAL;
const Abstract = ZEND_ACC_ABSTRACT;
const Immutable = ZEND_ACC_IMMUTABLE;
const HasTypeHints = ZEND_ACC_HAS_TYPE_HINTS;
const TopLevel = ZEND_ACC_TOP_LEVEL;
const Preloaded = ZEND_ACC_PRELOADED;
const Deprecated = ZEND_ACC_DEPRECATED;
const ReturnReference = ZEND_ACC_RETURN_REFERENCE;
const HasReturnType = ZEND_ACC_HAS_RETURN_TYPE;
const Variadic = ZEND_ACC_VARIADIC;
const HasFinallyBlock = ZEND_ACC_HAS_FINALLY_BLOCK;
const EarlyBinding = ZEND_ACC_EARLY_BINDING;
const UsesThis = ZEND_ACC_USES_THIS;
const CallViaTrampoline = ZEND_ACC_CALL_VIA_TRAMPOLINE;
const NeverCache = ZEND_ACC_NEVER_CACHE;
const TraitClone = ZEND_ACC_TRAIT_CLONE;
const IsConstructor = ZEND_ACC_CTOR;
const Closure = ZEND_ACC_CLOSURE;
const FakeClosure = ZEND_ACC_FAKE_CLOSURE;
const Generator = ZEND_ACC_GENERATOR;
const DonePassTwo = ZEND_ACC_DONE_PASS_TWO;
const HeapRTCache = ZEND_ACC_HEAP_RT_CACHE;
const StrictTypes = ZEND_ACC_STRICT_TYPES;
}
}
bitflags! {
pub struct PropertyFlags: u32 {
const Public = ZEND_ACC_PUBLIC;
const Protected = ZEND_ACC_PROTECTED;
const Private = ZEND_ACC_PRIVATE;
const Changed = ZEND_ACC_CHANGED;
const Static = ZEND_ACC_STATIC;
const Promoted = ZEND_ACC_PROMOTED;
}
}
bitflags! {
pub struct ConstantFlags: u32 {
const Public = ZEND_ACC_PUBLIC;
const Protected = ZEND_ACC_PROTECTED;
const Private = ZEND_ACC_PRIVATE;
const Promoted = ZEND_ACC_PROMOTED;
}
}
bitflags! {
pub struct GlobalConstantFlags: u32 {
const CaseSensitive = CONST_CS;
const Persistent = CONST_PERSISTENT;
const NoFileCache = CONST_NO_FILE_CACHE;
const Deprecated = CONST_DEPRECATED;
}
}
bitflags! {
pub struct ZendResult: i32 {
const Success = 0;
const Failure = -1;
}
}