/src/php-src/Zend/zend_enum.h
Line | Count | Source |
1 | | /* |
2 | | +----------------------------------------------------------------------+ |
3 | | | Zend Engine | |
4 | | +----------------------------------------------------------------------+ |
5 | | | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | |
6 | | +----------------------------------------------------------------------+ |
7 | | | This source file is subject to version 2.00 of the Zend license, | |
8 | | | that is bundled with this package in the file LICENSE, and is | |
9 | | | available through the world-wide-web at the following url: | |
10 | | | http://www.zend.com/license/2_00.txt. | |
11 | | | If you did not receive a copy of the Zend license and are unable to | |
12 | | | obtain it through the world-wide-web, please send a note to | |
13 | | | license@zend.com so we can mail you a copy immediately. | |
14 | | +----------------------------------------------------------------------+ |
15 | | | Authors: Ilija Tovilo <ilutov@php.net> | |
16 | | +----------------------------------------------------------------------+ |
17 | | */ |
18 | | |
19 | | #ifndef ZEND_ENUM_H |
20 | | #define ZEND_ENUM_H |
21 | | |
22 | | #include "zend.h" |
23 | | #include "zend_API.h" |
24 | | |
25 | | #include <stdint.h> |
26 | | |
27 | | BEGIN_EXTERN_C() |
28 | | |
29 | | extern ZEND_API zend_class_entry *zend_ce_unit_enum; |
30 | | extern ZEND_API zend_class_entry *zend_ce_backed_enum; |
31 | | extern ZEND_API zend_object_handlers zend_enum_object_handlers; |
32 | | |
33 | | typedef struct zend_enum_obj { |
34 | | int case_id; |
35 | | zend_object std; |
36 | | } zend_enum_obj; |
37 | | |
38 | 40 | static inline zend_enum_obj *zend_enum_obj_from_obj(zend_object *zobj) { |
39 | 40 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); |
40 | 40 | return (zend_enum_obj*)((char*)(zobj) - XtOffsetOf(zend_enum_obj, std)); |
41 | 40 | } 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 php_reflection.c:zend_enum_obj_from_obj Line | Count | Source | 38 | 40 | static inline zend_enum_obj *zend_enum_obj_from_obj(zend_object *zobj) { | 39 | 40 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); | 40 | 40 | return (zend_enum_obj*)((char*)(zobj) - XtOffsetOf(zend_enum_obj, std)); | 41 | 40 | } |
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_whatwg.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 |
42 | | |
43 | | void zend_enum_startup(void); |
44 | | void zend_register_enum_ce(void); |
45 | | void zend_enum_add_interfaces(zend_class_entry *ce); |
46 | | zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce); |
47 | | zend_object *zend_enum_new(zval *result, zend_class_entry *ce, int case_id, zend_string *case_name, zval *backing_value_zv); |
48 | | void zend_verify_enum(const zend_class_entry *ce); |
49 | | void zend_enum_register_funcs(zend_class_entry *ce); |
50 | | void zend_enum_register_props(zend_class_entry *ce); |
51 | | int zend_enum_next_case_id(zend_class_entry *enum_class); |
52 | | |
53 | | ZEND_API zend_class_entry *zend_register_internal_enum( |
54 | | const char *name, uint8_t type, const zend_function_entry *functions); |
55 | | ZEND_API void zend_enum_add_case(zend_class_entry *ce, zend_string *case_name, zval *value); |
56 | | ZEND_API void zend_enum_add_case_cstr(zend_class_entry *ce, const char *name, zval *value); |
57 | | ZEND_API zend_object *zend_enum_get_case(zend_class_entry *ce, zend_string *name); |
58 | | ZEND_API zend_object *zend_enum_get_case_cstr(zend_class_entry *ce, const char *name); |
59 | | 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); |
60 | | |
61 | | static zend_always_inline int zend_enum_fetch_case_id(zend_object *zobj) |
62 | 40 | { |
63 | 40 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); |
64 | 40 | return zend_enum_obj_from_obj(zobj)->case_id; |
65 | 40 | } 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 php_reflection.c:zend_enum_fetch_case_id Line | Count | Source | 62 | 40 | { | 63 | 40 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); | 64 | 40 | return zend_enum_obj_from_obj(zobj)->case_id; | 65 | 40 | } |
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_whatwg.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 |
66 | | |
67 | | static zend_always_inline zval *zend_enum_fetch_case_name(zend_object *zobj) |
68 | 1.33k | { |
69 | 1.33k | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); |
70 | | |
71 | 1.33k | zval *name = OBJ_PROP_NUM(zobj, 0); |
72 | 1.33k | ZEND_ASSERT(Z_TYPE_P(name) == IS_STRING); |
73 | 1.33k | return name; |
74 | 1.33k | } 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 var.c:zend_enum_fetch_case_name Line | Count | Source | 68 | 688 | { | 69 | 688 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); | 70 | | | 71 | 688 | zval *name = OBJ_PROP_NUM(zobj, 0); | 72 | 688 | ZEND_ASSERT(Z_TYPE_P(name) == IS_STRING); | 73 | 688 | return name; | 74 | 688 | } |
Unexecuted instantiation: php_uri.c:zend_enum_fetch_case_name Unexecuted instantiation: uri_parser_whatwg.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 zend_enum.c:zend_enum_fetch_case_name Line | Count | Source | 68 | 643 | { | 69 | 643 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); | 70 | | | 71 | 643 | zval *name = OBJ_PROP_NUM(zobj, 0); | 72 | 643 | ZEND_ASSERT(Z_TYPE_P(name) == IS_STRING); | 73 | 643 | return name; | 74 | 643 | } |
Unexecuted instantiation: zend_inheritance.c:zend_enum_fetch_case_name zend_smart_str.c:zend_enum_fetch_case_name Line | Count | Source | 68 | 6 | { | 69 | 6 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); | 70 | | | 71 | 6 | zval *name = OBJ_PROP_NUM(zobj, 0); | 72 | 6 | ZEND_ASSERT(Z_TYPE_P(name) == IS_STRING); | 73 | 6 | return name; | 74 | 6 | } |
Unexecuted instantiation: zend.c:zend_enum_fetch_case_name |
75 | | |
76 | | static zend_always_inline zval *zend_enum_fetch_case_value(zend_object *zobj) |
77 | 703 | { |
78 | 703 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); |
79 | 703 | ZEND_ASSERT(zobj->ce->enum_backing_type != IS_UNDEF); |
80 | 703 | return OBJ_PROP_NUM(zobj, 1); |
81 | 703 | } json_encoder.c:zend_enum_fetch_case_value Line | Count | Source | 77 | 60 | { | 78 | 60 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); | 79 | 60 | ZEND_ASSERT(zobj->ce->enum_backing_type != IS_UNDEF); | 80 | 60 | return OBJ_PROP_NUM(zobj, 1); | 81 | 60 | } |
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_whatwg.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 zend_enum.c:zend_enum_fetch_case_value Line | Count | Source | 77 | 643 | { | 78 | 643 | ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); | 79 | 643 | ZEND_ASSERT(zobj->ce->enum_backing_type != IS_UNDEF); | 80 | 643 | return OBJ_PROP_NUM(zobj, 1); | 81 | 643 | } |
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 |
82 | | |
83 | | END_EXTERN_C() |
84 | | |
85 | | #endif /* ZEND_ENUM_H */ |