Skip to content

Commit a351cfc

Browse files
committed
Convert registration function to macro
1 parent b0ca305 commit a351cfc

File tree

12 files changed

+266
-283
lines changed

12 files changed

+266
-283
lines changed

Zend/zend_exceptions.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -746,46 +746,46 @@ static void declare_extra_exception_properties(zend_class_entry *ce)
746746

747747
void zend_register_default_exception(void) /* {{{ */
748748
{
749-
zend_ce_throwable = register_class_Throwable(zend_ce_stringable);
749+
register_class_Throwable(zend_ce_throwable, zend_ce_stringable);
750750
zend_ce_throwable->interface_gets_implemented = zend_implement_throwable;
751751

752752
memcpy(&default_exception_handlers, &std_object_handlers, sizeof(zend_object_handlers));
753753
default_exception_handlers.clone_obj = NULL;
754754

755-
zend_ce_exception = register_class_Exception(zend_ce_throwable);
755+
register_class_Exception(zend_ce_exception, zend_ce_throwable);
756756
zend_ce_exception->create_object = zend_default_exception_new;
757757
declare_extra_exception_properties(zend_ce_error);
758758

759-
zend_ce_error_exception = register_class_ErrorException(zend_ce_exception);
759+
register_class_ErrorException(zend_ce_error_exception, zend_ce_exception);
760760
zend_ce_error_exception->create_object = zend_error_exception_new;
761761
zend_declare_property_long(zend_ce_error_exception, "severity", sizeof("severity")-1, E_ERROR, ZEND_ACC_PROTECTED);
762762

763-
zend_ce_error = register_class_Error(zend_ce_throwable);
763+
register_class_Error(zend_ce_error, zend_ce_throwable);
764764
zend_ce_error->create_object = zend_default_exception_new;
765765
declare_extra_exception_properties(zend_ce_error);
766766

767-
zend_ce_compile_error = register_class_CompileError(zend_ce_error);
767+
register_class_CompileError(zend_ce_compile_error, zend_ce_error);
768768
zend_ce_compile_error->create_object = zend_default_exception_new;
769769

770-
zend_ce_parse_error = register_class_ParseError(zend_ce_compile_error);
770+
register_class_ParseError(zend_ce_parse_error, zend_ce_compile_error);
771771
zend_ce_parse_error->create_object = zend_default_exception_new;
772772

773-
zend_ce_type_error = register_class_TypeError(zend_ce_error);
773+
register_class_TypeError(zend_ce_type_error, zend_ce_error);
774774
zend_ce_type_error->create_object = zend_default_exception_new;
775775

776-
zend_ce_argument_count_error = register_class_ArgumentCountError(zend_ce_type_error);
776+
register_class_ArgumentCountError(zend_ce_argument_count_error, zend_ce_type_error);
777777
zend_ce_argument_count_error->create_object = zend_default_exception_new;
778778

779-
zend_ce_value_error = register_class_ValueError(zend_ce_error);
779+
register_class_ValueError(zend_ce_value_error, zend_ce_error);
780780
zend_ce_value_error->create_object = zend_default_exception_new;
781781

782-
zend_ce_arithmetic_error = register_class_ArithmeticError(zend_ce_error);
782+
register_class_ArithmeticError(zend_ce_arithmetic_error, zend_ce_error);
783783
zend_ce_arithmetic_error->create_object = zend_default_exception_new;
784784

785-
zend_ce_division_by_zero_error = register_class_DivisionByZeroError(zend_ce_arithmetic_error);
785+
register_class_DivisionByZeroError(zend_ce_division_by_zero_error, zend_ce_arithmetic_error);
786786
zend_ce_division_by_zero_error->create_object = zend_default_exception_new;
787787

788-
zend_ce_unhandled_match_error = register_class_UnhandledMatchError(zend_ce_error);
788+
register_class_UnhandledMatchError(zend_ce_unhandled_match_error, zend_ce_error);
789789
zend_ce_unhandled_match_error->create_object = zend_default_exception_new;
790790

791791
INIT_CLASS_ENTRY(zend_ce_unwind_exit, "UnwindExit", NULL);

Zend/zend_exceptions_arginfo.h

Lines changed: 125 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -185,141 +185,129 @@ static const zend_function_entry class_UnhandledMatchError_methods[] = {
185185
ZEND_FE_END
186186
};
187187

188-
zend_class_entry *register_class_Throwable(zend_class_entry *class_entry_Stringable) {
189-
zend_class_entry ce, *class_entry;
190-
191-
INIT_CLASS_ENTRY(ce, "Throwable", class_Throwable_methods);
192-
class_entry = zend_register_internal_interface(&ce);
193-
194-
return class_entry;
195-
}
196-
197-
zend_class_entry *register_class_Exception(zend_class_entry *class_entry_Throwable) {
198-
zend_class_entry ce, *class_entry;
199-
200-
INIT_CLASS_ENTRY(ce, "Exception", class_Exception_methods);
201-
class_entry = zend_register_internal_class_ex(&ce, NULL);
202-
zend_class_implements(class_entry, 1, class_entry_Throwable);
203-
204-
zend_declare_property_string(class_entry, "message", sizeof("message") - 1, "", ZEND_ACC_PROTECTED);
205-
206-
zend_declare_property_string(class_entry, "string", sizeof("string") - 1, "", ZEND_ACC_PRIVATE);
207-
208-
zend_declare_property_long(class_entry, "code", sizeof("code") - 1, 0, ZEND_ACC_PROTECTED);
209-
210-
zend_declare_property_null(class_entry, "file", sizeof("file") - 1, ZEND_ACC_PROTECTED);
211-
212-
zend_declare_property_null(class_entry, "line", sizeof("line") - 1, ZEND_ACC_PROTECTED);
213-
214-
zval property_trace_default_value;
215-
ZVAL_EMPTY_ARRAY(&property_trace_default_value);
216-
zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_TRACE), &property_trace_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY));
217-
218-
return class_entry;
219-
}
220-
221-
zend_class_entry *register_class_ErrorException(zend_class_entry *class_entry_Exception) {
222-
zend_class_entry ce, *class_entry;
223-
224-
INIT_CLASS_ENTRY(ce, "ErrorException", class_ErrorException_methods);
225-
class_entry = zend_register_internal_class_ex(&ce, class_entry_Exception);
226-
227-
return class_entry;
228-
}
229-
230-
zend_class_entry *register_class_Error(zend_class_entry *class_entry_Throwable) {
231-
zend_class_entry ce, *class_entry;
232-
233-
INIT_CLASS_ENTRY(ce, "Error", class_Error_methods);
234-
class_entry = zend_register_internal_class_ex(&ce, NULL);
235-
zend_class_implements(class_entry, 1, class_entry_Throwable);
236-
237-
zend_declare_property_string(class_entry, "message", sizeof("message") - 1, "", ZEND_ACC_PROTECTED);
238-
239-
zend_declare_property_string(class_entry, "string", sizeof("string") - 1, "", ZEND_ACC_PRIVATE);
240-
241-
zend_declare_property_long(class_entry, "code", sizeof("code") - 1, 0, ZEND_ACC_PROTECTED);
242-
243-
zend_declare_property_null(class_entry, "file", sizeof("file") - 1, ZEND_ACC_PROTECTED);
244-
245-
zend_declare_property_null(class_entry, "line", sizeof("line") - 1, ZEND_ACC_PROTECTED);
246-
247-
zval property_trace_default_value;
248-
ZVAL_EMPTY_ARRAY(&property_trace_default_value);
249-
zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_TRACE), &property_trace_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY));
250-
251-
return class_entry;
252-
}
253-
254-
zend_class_entry *register_class_CompileError(zend_class_entry *class_entry_Error) {
255-
zend_class_entry ce, *class_entry;
256-
257-
INIT_CLASS_ENTRY(ce, "CompileError", class_CompileError_methods);
258-
class_entry = zend_register_internal_class_ex(&ce, class_entry_Error);
259-
260-
return class_entry;
261-
}
262-
263-
zend_class_entry *register_class_ParseError(zend_class_entry *class_entry_CompileError) {
264-
zend_class_entry ce, *class_entry;
265-
266-
INIT_CLASS_ENTRY(ce, "ParseError", class_ParseError_methods);
267-
class_entry = zend_register_internal_class_ex(&ce, class_entry_CompileError);
268-
269-
return class_entry;
270-
}
271-
272-
zend_class_entry *register_class_TypeError(zend_class_entry *class_entry_Error) {
273-
zend_class_entry ce, *class_entry;
274-
275-
INIT_CLASS_ENTRY(ce, "TypeError", class_TypeError_methods);
276-
class_entry = zend_register_internal_class_ex(&ce, class_entry_Error);
277-
278-
return class_entry;
279-
}
280-
281-
zend_class_entry *register_class_ArgumentCountError(zend_class_entry *class_entry_TypeError) {
282-
zend_class_entry ce, *class_entry;
283-
284-
INIT_CLASS_ENTRY(ce, "ArgumentCountError", class_ArgumentCountError_methods);
285-
class_entry = zend_register_internal_class_ex(&ce, class_entry_TypeError);
286-
287-
return class_entry;
288-
}
289-
290-
zend_class_entry *register_class_ValueError(zend_class_entry *class_entry_Error) {
291-
zend_class_entry ce, *class_entry;
292-
293-
INIT_CLASS_ENTRY(ce, "ValueError", class_ValueError_methods);
294-
class_entry = zend_register_internal_class_ex(&ce, class_entry_Error);
295-
296-
return class_entry;
297-
}
298-
299-
zend_class_entry *register_class_ArithmeticError(zend_class_entry *class_entry_Error) {
300-
zend_class_entry ce, *class_entry;
301-
302-
INIT_CLASS_ENTRY(ce, "ArithmeticError", class_ArithmeticError_methods);
303-
class_entry = zend_register_internal_class_ex(&ce, class_entry_Error);
304-
305-
return class_entry;
306-
}
307-
308-
zend_class_entry *register_class_DivisionByZeroError(zend_class_entry *class_entry_ArithmeticError) {
309-
zend_class_entry ce, *class_entry;
310-
311-
INIT_CLASS_ENTRY(ce, "DivisionByZeroError", class_DivisionByZeroError_methods);
312-
class_entry = zend_register_internal_class_ex(&ce, class_entry_ArithmeticError);
313-
314-
return class_entry;
315-
}
316-
317-
zend_class_entry *register_class_UnhandledMatchError(zend_class_entry *class_entry_Error) {
318-
zend_class_entry ce, *class_entry;
319-
320-
INIT_CLASS_ENTRY(ce, "UnhandledMatchError", class_UnhandledMatchError_methods);
321-
class_entry = zend_register_internal_class_ex(&ce, class_entry_Error);
322-
323-
return class_entry;
324-
}
188+
#define register_class_Throwable(class_entry, class_entry_Stringable) \
189+
do { \
190+
zend_class_entry ce; \
191+
\
192+
INIT_CLASS_ENTRY(ce, "Throwable", class_Throwable_methods); \
193+
class_entry = zend_register_internal_interface(&ce); \
194+
} while (0)
195+
196+
#define register_class_Exception(class_entry, class_entry_Throwable) \
197+
do { \
198+
zend_class_entry ce; \
199+
\
200+
INIT_CLASS_ENTRY(ce, "Exception", class_Exception_methods); \
201+
class_entry = zend_register_internal_class_ex(&ce, NULL); \
202+
zend_class_implements(class_entry, 1, class_entry_Throwable); \
203+
\
204+
zend_declare_property_string(class_entry, "message", sizeof("message") - 1, "", ZEND_ACC_PROTECTED); \
205+
\
206+
zend_declare_property_string(class_entry, "string", sizeof("string") - 1, "", ZEND_ACC_PRIVATE); \
207+
\
208+
zend_declare_property_long(class_entry, "code", sizeof("code") - 1, 0, ZEND_ACC_PROTECTED); \
209+
\
210+
zend_declare_property_null(class_entry, "file", sizeof("file") - 1, ZEND_ACC_PROTECTED); \
211+
\
212+
zend_declare_property_null(class_entry, "line", sizeof("line") - 1, ZEND_ACC_PROTECTED); \
213+
\
214+
zval property_trace_default_value; \
215+
ZVAL_EMPTY_ARRAY(&property_trace_default_value); \
216+
zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_TRACE), &property_trace_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY)); \
217+
} while (0)
218+
219+
#define register_class_ErrorException(class_entry, class_entry_Exception) \
220+
do { \
221+
zend_class_entry ce; \
222+
\
223+
INIT_CLASS_ENTRY(ce, "ErrorException", class_ErrorException_methods); \
224+
class_entry = zend_register_internal_class_ex(&ce, class_entry_Exception); \
225+
} while (0)
226+
227+
#define register_class_Error(class_entry, class_entry_Throwable) \
228+
do { \
229+
zend_class_entry ce; \
230+
\
231+
INIT_CLASS_ENTRY(ce, "Error", class_Error_methods); \
232+
class_entry = zend_register_internal_class_ex(&ce, NULL); \
233+
zend_class_implements(class_entry, 1, class_entry_Throwable); \
234+
\
235+
zend_declare_property_string(class_entry, "message", sizeof("message") - 1, "", ZEND_ACC_PROTECTED); \
236+
\
237+
zend_declare_property_string(class_entry, "string", sizeof("string") - 1, "", ZEND_ACC_PRIVATE); \
238+
\
239+
zend_declare_property_long(class_entry, "code", sizeof("code") - 1, 0, ZEND_ACC_PROTECTED); \
240+
\
241+
zend_declare_property_null(class_entry, "file", sizeof("file") - 1, ZEND_ACC_PROTECTED); \
242+
\
243+
zend_declare_property_null(class_entry, "line", sizeof("line") - 1, ZEND_ACC_PROTECTED); \
244+
\
245+
zval property_trace_default_value; \
246+
ZVAL_EMPTY_ARRAY(&property_trace_default_value); \
247+
zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_TRACE), &property_trace_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY)); \
248+
} while (0)
249+
250+
#define register_class_CompileError(class_entry, class_entry_Error) \
251+
do { \
252+
zend_class_entry ce; \
253+
\
254+
INIT_CLASS_ENTRY(ce, "CompileError", class_CompileError_methods); \
255+
class_entry = zend_register_internal_class_ex(&ce, class_entry_Error); \
256+
} while (0)
257+
258+
#define register_class_ParseError(class_entry, class_entry_CompileError) \
259+
do { \
260+
zend_class_entry ce; \
261+
\
262+
INIT_CLASS_ENTRY(ce, "ParseError", class_ParseError_methods); \
263+
class_entry = zend_register_internal_class_ex(&ce, class_entry_CompileError); \
264+
} while (0)
265+
266+
#define register_class_TypeError(class_entry, class_entry_Error) \
267+
do { \
268+
zend_class_entry ce; \
269+
\
270+
INIT_CLASS_ENTRY(ce, "TypeError", class_TypeError_methods); \
271+
class_entry = zend_register_internal_class_ex(&ce, class_entry_Error); \
272+
} while (0)
273+
274+
#define register_class_ArgumentCountError(class_entry, class_entry_TypeError) \
275+
do { \
276+
zend_class_entry ce; \
277+
\
278+
INIT_CLASS_ENTRY(ce, "ArgumentCountError", class_ArgumentCountError_methods); \
279+
class_entry = zend_register_internal_class_ex(&ce, class_entry_TypeError); \
280+
} while (0)
281+
282+
#define register_class_ValueError(class_entry, class_entry_Error) \
283+
do { \
284+
zend_class_entry ce; \
285+
\
286+
INIT_CLASS_ENTRY(ce, "ValueError", class_ValueError_methods); \
287+
class_entry = zend_register_internal_class_ex(&ce, class_entry_Error); \
288+
} while (0)
289+
290+
#define register_class_ArithmeticError(class_entry, class_entry_Error) \
291+
do { \
292+
zend_class_entry ce; \
293+
\
294+
INIT_CLASS_ENTRY(ce, "ArithmeticError", class_ArithmeticError_methods); \
295+
class_entry = zend_register_internal_class_ex(&ce, class_entry_Error); \
296+
} while (0)
297+
298+
#define register_class_DivisionByZeroError(class_entry, class_entry_ArithmeticError) \
299+
do { \
300+
zend_class_entry ce; \
301+
\
302+
INIT_CLASS_ENTRY(ce, "DivisionByZeroError", class_DivisionByZeroError_methods); \
303+
class_entry = zend_register_internal_class_ex(&ce, class_entry_ArithmeticError); \
304+
} while (0)
305+
306+
#define register_class_UnhandledMatchError(class_entry, class_entry_Error) \
307+
do { \
308+
zend_class_entry ce; \
309+
\
310+
INIT_CLASS_ENTRY(ce, "UnhandledMatchError", class_UnhandledMatchError_methods); \
311+
class_entry = zend_register_internal_class_ex(&ce, class_entry_Error); \
312+
} while (0)
325313

0 commit comments

Comments
 (0)