/src/php-src/Zend/zend_enum.h
Line | Count | Source |
1 | | /* |
2 | | +----------------------------------------------------------------------+ |
3 | | | Zend Engine | |
4 | | +----------------------------------------------------------------------+ |
5 | | | Copyright © Zend Technologies Ltd., a subsidiary company of | |
6 | | | Perforce Software, Inc., and Contributors. | |
7 | | +----------------------------------------------------------------------+ |
8 | | | This source file is subject to the Modified BSD License that is | |
9 | | | bundled with this package in the file LICENSE, and is available | |
10 | | | through the World Wide Web at <https://www.php.net/license/>. | |
11 | | | | |
12 | | | SPDX-License-Identifier: BSD-3-Clause | |
13 | | +----------------------------------------------------------------------+ |
14 | | | Authors: Ilija Tovilo <ilutov@php.net> | |
15 | | +----------------------------------------------------------------------+ |
16 | | */ |
17 | | |
18 | | #ifndef ZEND_ENUM_H |
19 | | #define ZEND_ENUM_H |
20 | | |
21 | | #include "zend.h" |
22 | | #include "zend_API.h" |
23 | | |
24 | | #include <stdint.h> |
25 | | |
26 | | BEGIN_EXTERN_C() |
27 | | |
28 | | extern ZEND_API zend_class_entry *zend_ce_unit_enum; |
29 | | extern ZEND_API zend_class_entry *zend_ce_backed_enum; |
30 | | extern ZEND_API zend_object_handlers zend_enum_object_handlers; |
31 | | |
32 | | typedef struct zend_enum_obj { |
33 | | int case_id; |
34 | | zend_object std; |
35 | | } zend_enum_obj; |
36 | | |
37 | 0 | static inline zend_enum_obj *zend_enum_obj_from_obj(zend_object *zobj) { |
38 | 0 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); |
39 | 0 | return ZEND_CONTAINER_OF(zobj, zend_enum_obj, std); |
40 | 0 | } Unexecuted instantiation: json_encoder.c:zend_enum_obj_from_obj Unexecuted instantiation: zend_file_cache.c:zend_enum_obj_from_obj Unexecuted instantiation: random.c:zend_enum_obj_from_obj Unexecuted instantiation: randomizer.c:zend_enum_obj_from_obj Unexecuted instantiation: php_reflection.c:zend_enum_obj_from_obj Unexecuted instantiation: basic_functions.c:zend_enum_obj_from_obj Unexecuted instantiation: http.c:zend_enum_obj_from_obj Unexecuted instantiation: math.c:zend_enum_obj_from_obj Unexecuted instantiation: var.c:zend_enum_obj_from_obj Unexecuted instantiation: php_uri.c:zend_enum_obj_from_obj Unexecuted instantiation: uri_parser_rfc3986.c:zend_enum_obj_from_obj Unexecuted instantiation: uri_parser_whatwg.c:zend_enum_obj_from_obj Unexecuted instantiation: stream_errors.c:zend_enum_obj_from_obj Unexecuted instantiation: zend_API.c:zend_enum_obj_from_obj Unexecuted instantiation: zend_ast.c:zend_enum_obj_from_obj Unexecuted instantiation: zend_compile.c:zend_enum_obj_from_obj Unexecuted instantiation: zend_default_classes.c:zend_enum_obj_from_obj Unexecuted instantiation: zend_enum.c:zend_enum_obj_from_obj Unexecuted instantiation: zend_inheritance.c:zend_enum_obj_from_obj Unexecuted instantiation: zend_smart_str.c:zend_enum_obj_from_obj Unexecuted instantiation: zend.c:zend_enum_obj_from_obj |
41 | | |
42 | | void zend_enum_startup(void); |
43 | | void zend_register_enum_ce(void); |
44 | | void zend_enum_add_interfaces(zend_class_entry *ce); |
45 | | zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce); |
46 | | zend_object *zend_enum_new(zval *result, zend_class_entry *ce, int case_id, zend_string *case_name, zval *backing_value_zv); |
47 | | void zend_verify_enum(const zend_class_entry *ce); |
48 | | void zend_enum_register_funcs(zend_class_entry *ce); |
49 | | void zend_enum_register_props(zend_class_entry *ce); |
50 | | int zend_enum_next_case_id(zend_class_entry *enum_class); |
51 | | |
52 | | ZEND_API zend_class_entry *zend_register_internal_enum( |
53 | | const char *name, uint8_t type, const zend_function_entry *functions); |
54 | | ZEND_API void zend_enum_add_case(zend_class_entry *ce, zend_string *case_name, zval *value); |
55 | | ZEND_API void zend_enum_add_case_cstr(zend_class_entry *ce, const char *name, zval *value); |
56 | | ZEND_API zend_object *zend_enum_get_case(zend_class_entry *ce, zend_string *name); |
57 | | ZEND_API zend_object *zend_enum_get_case_cstr(zend_class_entry *ce, const char *name); |
58 | | ZEND_API zend_result zend_enum_get_case_by_value(zend_object **result, zend_class_entry *ce, zend_long long_key, zend_string *string_key, bool try_from); |
59 | | |
60 | | static zend_always_inline int zend_enum_fetch_case_id(zend_object *zobj) |
61 | 0 | { |
62 | 0 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); |
63 | 0 | return zend_enum_obj_from_obj(zobj)->case_id; |
64 | 0 | } Unexecuted instantiation: json_encoder.c:zend_enum_fetch_case_id Unexecuted instantiation: zend_file_cache.c:zend_enum_fetch_case_id Unexecuted instantiation: random.c:zend_enum_fetch_case_id Unexecuted instantiation: randomizer.c:zend_enum_fetch_case_id Unexecuted instantiation: php_reflection.c:zend_enum_fetch_case_id Unexecuted instantiation: basic_functions.c:zend_enum_fetch_case_id Unexecuted instantiation: http.c:zend_enum_fetch_case_id Unexecuted instantiation: math.c:zend_enum_fetch_case_id Unexecuted instantiation: var.c:zend_enum_fetch_case_id Unexecuted instantiation: php_uri.c:zend_enum_fetch_case_id Unexecuted instantiation: uri_parser_rfc3986.c:zend_enum_fetch_case_id Unexecuted instantiation: uri_parser_whatwg.c:zend_enum_fetch_case_id Unexecuted instantiation: stream_errors.c:zend_enum_fetch_case_id Unexecuted instantiation: zend_API.c:zend_enum_fetch_case_id Unexecuted instantiation: zend_ast.c:zend_enum_fetch_case_id Unexecuted instantiation: zend_compile.c:zend_enum_fetch_case_id Unexecuted instantiation: zend_default_classes.c:zend_enum_fetch_case_id Unexecuted instantiation: zend_enum.c:zend_enum_fetch_case_id Unexecuted instantiation: zend_inheritance.c:zend_enum_fetch_case_id Unexecuted instantiation: zend_smart_str.c:zend_enum_fetch_case_id Unexecuted instantiation: zend.c:zend_enum_fetch_case_id |
65 | | |
66 | | static zend_always_inline zval *zend_enum_fetch_case_name(zend_object *zobj) |
67 | 0 | { |
68 | 0 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); |
69 | |
|
70 | 0 | zval *name = OBJ_PROP_NUM(zobj, 0); |
71 | 0 | ZEND_ASSERT(Z_TYPE_P(name) == IS_STRING); |
72 | 0 | return name; |
73 | 0 | } Unexecuted instantiation: json_encoder.c:zend_enum_fetch_case_name Unexecuted instantiation: zend_file_cache.c:zend_enum_fetch_case_name Unexecuted instantiation: random.c:zend_enum_fetch_case_name Unexecuted instantiation: randomizer.c:zend_enum_fetch_case_name Unexecuted instantiation: php_reflection.c:zend_enum_fetch_case_name Unexecuted instantiation: basic_functions.c:zend_enum_fetch_case_name Unexecuted instantiation: http.c:zend_enum_fetch_case_name Unexecuted instantiation: math.c:zend_enum_fetch_case_name Unexecuted instantiation: var.c:zend_enum_fetch_case_name Unexecuted instantiation: php_uri.c:zend_enum_fetch_case_name Unexecuted instantiation: uri_parser_rfc3986.c:zend_enum_fetch_case_name Unexecuted instantiation: uri_parser_whatwg.c:zend_enum_fetch_case_name Unexecuted instantiation: stream_errors.c:zend_enum_fetch_case_name Unexecuted instantiation: zend_API.c:zend_enum_fetch_case_name Unexecuted instantiation: zend_ast.c:zend_enum_fetch_case_name Unexecuted instantiation: zend_compile.c:zend_enum_fetch_case_name Unexecuted instantiation: zend_default_classes.c:zend_enum_fetch_case_name Unexecuted instantiation: zend_enum.c:zend_enum_fetch_case_name Unexecuted instantiation: zend_inheritance.c:zend_enum_fetch_case_name Unexecuted instantiation: zend_smart_str.c:zend_enum_fetch_case_name Unexecuted instantiation: zend.c:zend_enum_fetch_case_name |
74 | | |
75 | | static zend_always_inline zval *zend_enum_fetch_case_value(zend_object *zobj) |
76 | 0 | { |
77 | 0 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); |
78 | 0 | ZEND_ASSERT(zobj->ce->enum_backing_type != IS_UNDEF); |
79 | 0 | return OBJ_PROP_NUM(zobj, 1); |
80 | 0 | } Unexecuted instantiation: json_encoder.c:zend_enum_fetch_case_value Unexecuted instantiation: zend_file_cache.c:zend_enum_fetch_case_value Unexecuted instantiation: random.c:zend_enum_fetch_case_value Unexecuted instantiation: randomizer.c:zend_enum_fetch_case_value Unexecuted instantiation: php_reflection.c:zend_enum_fetch_case_value Unexecuted instantiation: basic_functions.c:zend_enum_fetch_case_value Unexecuted instantiation: http.c:zend_enum_fetch_case_value Unexecuted instantiation: math.c:zend_enum_fetch_case_value Unexecuted instantiation: var.c:zend_enum_fetch_case_value Unexecuted instantiation: php_uri.c:zend_enum_fetch_case_value Unexecuted instantiation: uri_parser_rfc3986.c:zend_enum_fetch_case_value Unexecuted instantiation: uri_parser_whatwg.c:zend_enum_fetch_case_value Unexecuted instantiation: stream_errors.c:zend_enum_fetch_case_value Unexecuted instantiation: zend_API.c:zend_enum_fetch_case_value Unexecuted instantiation: zend_ast.c:zend_enum_fetch_case_value Unexecuted instantiation: zend_compile.c:zend_enum_fetch_case_value Unexecuted instantiation: zend_default_classes.c:zend_enum_fetch_case_value Unexecuted instantiation: zend_enum.c:zend_enum_fetch_case_value Unexecuted instantiation: zend_inheritance.c:zend_enum_fetch_case_value Unexecuted instantiation: zend_smart_str.c:zend_enum_fetch_case_value Unexecuted instantiation: zend.c:zend_enum_fetch_case_value |
81 | | |
82 | | END_EXTERN_C() |
83 | | |
84 | | #endif /* ZEND_ENUM_H */ |