Lines Matching refs:ce

30 		if (ce->propertyName) { \
31 …zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name),…
39 zend_object *zend_enum_new(zval *result, zend_class_entry *ce, zend_string *case_name, zval *backin… in zend_enum_new() argument
41 zend_object *zobj = zend_objects_new(ce); in zend_enum_new()
60 static void zend_verify_enum_properties(zend_class_entry *ce) in zend_verify_enum_properties() argument
64 ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, property_info) { in zend_verify_enum_properties()
69 ce->enum_backing_type != IS_UNDEF in zend_verify_enum_properties()
76 ZSTR_VAL(ce->name)); in zend_verify_enum_properties()
80 static void zend_verify_enum_magic_methods(zend_class_entry *ce) in zend_verify_enum_magic_methods() argument
106 if (zend_hash_str_exists(&ce->function_table, forbidden_method, strlen(forbidden_method))) { in zend_verify_enum_magic_methods()
107 …zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name),… in zend_verify_enum_magic_methods()
112 static void zend_verify_enum_interfaces(zend_class_entry *ce) in zend_verify_enum_interfaces() argument
114 if (zend_class_implements_interface(ce, zend_ce_serializable)) { in zend_verify_enum_interfaces()
116 "Enum %s cannot implement the Serializable interface", ZSTR_VAL(ce->name)); in zend_verify_enum_interfaces()
120 void zend_verify_enum(zend_class_entry *ce) in zend_verify_enum() argument
122 zend_verify_enum_properties(ce); in zend_verify_enum()
123 zend_verify_enum_magic_methods(ce); in zend_verify_enum()
124 zend_verify_enum_interfaces(ce); in zend_verify_enum()
172 void zend_enum_add_interfaces(zend_class_entry *ce) in zend_enum_add_interfaces() argument
174 uint32_t num_interfaces_before = ce->num_interfaces; in zend_enum_add_interfaces()
176 ce->num_interfaces++; in zend_enum_add_interfaces()
177 if (ce->enum_backing_type != IS_UNDEF) { in zend_enum_add_interfaces()
178 ce->num_interfaces++; in zend_enum_add_interfaces()
181 ZEND_ASSERT(!(ce->ce_flags & ZEND_ACC_RESOLVED_INTERFACES)); in zend_enum_add_interfaces()
183 ce->interface_names = erealloc(ce->interface_names, sizeof(zend_class_name) * ce->num_interfaces); in zend_enum_add_interfaces()
185 ce->interface_names[num_interfaces_before].name = zend_string_copy(zend_ce_unit_enum->name); in zend_enum_add_interfaces()
186 ce->interface_names[num_interfaces_before].lc_name = ZSTR_INIT_LITERAL("unitenum", 0); in zend_enum_add_interfaces()
188 if (ce->enum_backing_type != IS_UNDEF) { in zend_enum_add_interfaces()
189 ce->interface_names[num_interfaces_before + 1].name = zend_string_copy(zend_ce_backed_enum->name); in zend_enum_add_interfaces()
190 ce->interface_names[num_interfaces_before + 1].lc_name = ZSTR_INIT_LITERAL("backedenum", 0); in zend_enum_add_interfaces()
193 ce->default_object_handlers = &zend_enum_object_handlers; in zend_enum_add_interfaces()
196 zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce) in zend_enum_build_backed_enum_table() argument
198 ZEND_ASSERT(ce->ce_flags & ZEND_ACC_ENUM); in zend_enum_build_backed_enum_table()
199 ZEND_ASSERT(ce->type == ZEND_USER_CLASS); in zend_enum_build_backed_enum_table()
201 uint32_t backing_type = ce->enum_backing_type; in zend_enum_build_backed_enum_table()
206 zend_class_set_backed_enum_table(ce, backed_enum_table); in zend_enum_build_backed_enum_table()
208 zend_string *enum_class_name = ce->name; in zend_enum_build_backed_enum_table()
212 ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(CE_CONSTANTS_TABLE(ce), name, val) { in zend_enum_build_backed_enum_table()
222 if (ce->enum_backing_type != Z_TYPE_P(case_value)) { in zend_enum_build_backed_enum_table()
225 zend_get_type_by_const(ce->enum_backing_type)); in zend_enum_build_backed_enum_table()
229 if (ce->enum_backing_type == IS_LONG) { in zend_enum_build_backed_enum_table()
242 ZEND_ASSERT(ce->enum_backing_type == IS_STRING); in zend_enum_build_backed_enum_table()
261 zend_class_set_backed_enum_table(ce, NULL); in zend_enum_build_backed_enum_table()
267 zend_class_entry *ce = execute_data->func->common.scope; in ZEND_NAMED_FUNCTION() local
274 ZEND_HASH_MAP_FOREACH_PTR(CE_CONSTANTS_TABLE(ce), c) { in ZEND_NAMED_FUNCTION()
280 if (zval_update_constant_ex(zv, c->ce) == FAILURE) { in ZEND_NAMED_FUNCTION()
289 ZEND_API zend_result zend_enum_get_case_by_value(zend_object **result, zend_class_entry *ce, zend_l… in zend_enum_get_case_by_value() argument
291 if (ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) { in zend_enum_get_case_by_value()
292 if (zend_update_class_constants(ce) == FAILURE) { in zend_enum_get_case_by_value()
297 HashTable *backed_enum_table = CE_BACKED_ENUM_TABLE(ce); in zend_enum_get_case_by_value()
303 if (ce->enum_backing_type == IS_LONG) { in zend_enum_get_case_by_value()
306 ZEND_ASSERT(ce->enum_backing_type == IS_STRING); in zend_enum_get_case_by_value()
318 if (ce->enum_backing_type == IS_LONG) { in zend_enum_get_case_by_value()
319 …lue_error(ZEND_LONG_FMT " is not a valid backing value for enum %s", long_key, ZSTR_VAL(ce->name)); in zend_enum_get_case_by_value()
321 ZEND_ASSERT(ce->enum_backing_type == IS_STRING); in zend_enum_get_case_by_value()
322 …error("\"%s\" is not a valid backing value for enum %s", ZSTR_VAL(string_key), ZSTR_VAL(ce->name)); in zend_enum_get_case_by_value()
330 zend_class_constant *c = zend_hash_find_ptr(CE_CONSTANTS_TABLE(ce), Z_STR_P(case_name_zv)); in zend_enum_get_case_by_value()
334 if (zval_update_constant_ex(case_zv, c->ce) == FAILURE) { in zend_enum_get_case_by_value()
345 zend_class_entry *ce = execute_data->func->common.scope; in zend_enum_from_base() local
350 if (ce->enum_backing_type == IS_LONG) { in zend_enum_from_base()
355 ZEND_ASSERT(ce->enum_backing_type == IS_STRING); in zend_enum_from_base()
378 if (zend_enum_get_case_by_value(&case_obj, ce, long_key, string_key, try) == FAILURE) { in zend_enum_from_base()
415 static void zend_enum_register_func(zend_class_entry *ce, zend_known_string_id name_id, zend_intern… in zend_enum_register_func() argument
419 zif->scope = ce; in zend_enum_register_func()
427 if (!zend_hash_add_ptr(&ce->function_table, name, zif)) { in zend_enum_register_func()
428 …zend_error_noreturn(E_COMPILE_ERROR, "Cannot redeclare %s::%s()", ZSTR_VAL(ce->name), ZSTR_VAL(nam… in zend_enum_register_func()
432 void zend_enum_register_funcs(zend_class_entry *ce) in zend_enum_register_funcs() argument
442 zend_enum_register_func(ce, ZEND_STR_CASES, cases_function); in zend_enum_register_funcs()
444 if (ce->enum_backing_type != IS_UNDEF) { in zend_enum_register_funcs()
453 zend_enum_register_func(ce, ZEND_STR_FROM, from_function); in zend_enum_register_funcs()
463 zend_enum_register_func(ce, ZEND_STR_TRYFROM_LOWERCASE, try_from_function); in zend_enum_register_funcs()
467 void zend_enum_register_props(zend_class_entry *ce) in zend_enum_register_props() argument
469 ce->ce_flags |= ZEND_ACC_NO_DYNAMIC_PROPERTIES; in zend_enum_register_props()
474 …zend_declare_typed_property(ce, ZSTR_KNOWN(ZEND_STR_NAME), &name_default_value, ZEND_ACC_PUBLIC | … in zend_enum_register_props()
476 if (ce->enum_backing_type != IS_UNDEF) { in zend_enum_register_props()
479 zend_type value_type = ZEND_TYPE_INIT_CODE(ce->enum_backing_type, 0, 0); in zend_enum_register_props()
480 …zend_declare_typed_property(ce, ZSTR_KNOWN(ZEND_STR_VALUE), &value_default_value, ZEND_ACC_PUBLIC … in zend_enum_register_props()
504 zend_class_entry *ce = zend_register_internal_class(&tmp_ce); in zend_register_internal_enum() local
505 ce->ce_flags |= ZEND_ACC_ENUM; in zend_register_internal_enum()
506 ce->enum_backing_type = type; in zend_register_internal_enum()
510 zend_class_set_backed_enum_table(ce, backed_enum_table); in zend_register_internal_enum()
513 zend_enum_register_props(ce); in zend_register_internal_enum()
516 ce, unit_enum_methods, &ce->function_table, EG(current_module)->type); in zend_register_internal_enum()
517 zend_class_implements(ce, 1, zend_ce_unit_enum); in zend_register_internal_enum()
520 ce, backed_enum_methods, &ce->function_table, EG(current_module)->type); in zend_register_internal_enum()
521 zend_class_implements(ce, 1, zend_ce_backed_enum); in zend_register_internal_enum()
524 return ce; in zend_register_internal_enum()
567 ZEND_API void zend_enum_add_case(zend_class_entry *ce, zend_string *case_name, zval *value) in zend_enum_add_case() argument
570 ZEND_ASSERT(ce->enum_backing_type == Z_TYPE_P(value)); in zend_enum_add_case()
575 HashTable *backed_enum_table = CE_BACKED_ENUM_TABLE(ce); in zend_enum_add_case()
585 ZEND_ASSERT(ce->enum_backing_type == IS_UNDEF); in zend_enum_add_case()
590 Z_AST(ast_zv) = create_enum_case_ast(ce->name, case_name, value); in zend_enum_add_case()
592 ce, case_name, &ast_zv, ZEND_ACC_PUBLIC, NULL); in zend_enum_add_case()
596 ZEND_API void zend_enum_add_case_cstr(zend_class_entry *ce, const char *name, zval *value) in zend_enum_add_case_cstr() argument
599 zend_enum_add_case(ce, name_str, value); in zend_enum_add_case_cstr()
603 ZEND_API zend_object *zend_enum_get_case(zend_class_entry *ce, zend_string *name) { in zend_enum_get_case() argument
604 zend_class_constant *c = zend_hash_find_ptr(CE_CONSTANTS_TABLE(ce), name); in zend_enum_get_case()
609 if (zval_update_constant_ex(&c->value, c->ce) == FAILURE) { in zend_enum_get_case()
617 ZEND_API zend_object *zend_enum_get_case_cstr(zend_class_entry *ce, const char *name) { in zend_enum_get_case_cstr() argument
619 zend_object *result = zend_enum_get_case(ce, name_str); in zend_enum_get_case_cstr()