@@ -1530,6 +1530,20 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
1530
1530
#define Z_PARAM_ARRAY_HT_OR_NULL (dest ) \
1531
1531
Z_PARAM_ARRAY_HT_EX(dest, 1, 0)
1532
1532
1533
+ #define Z_PARAM_ARRAY_HT_OR_LONG_EX (dest_ht , dest_long , is_null , allow_null ) \
1534
+ Z_PARAM_PROLOGUE(0, 0); \
1535
+ if (UNEXPECTED(!zend_parse_arg_array_ht_or_long(_arg, &dest_ht, &dest_long, &is_null, allow_null))) { \
1536
+ _expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_LONG_OR_NULL : Z_EXPECTED_ARRAY_OR_LONG; \
1537
+ _error_code = ZPP_ERROR_WRONG_ARG; \
1538
+ break; \
1539
+ }
1540
+
1541
+ #define Z_PARAM_ARRAY_HT_OR_LONG (dest_ht , dest_long ) \
1542
+ Z_PARAM_ARRAY_HT_OR_LONG_EX(dest_ht, dest_long, _dummy, 0)
1543
+
1544
+ #define Z_PARAM_ARRAY_HT_OR_LONG_OR_NULL (dest_ht , dest_long , is_null ) \
1545
+ Z_PARAM_ARRAY_HT_OR_LONG_EX(dest_ht, dest_long, is_null, 1)
1546
+
1533
1547
/* old "H" */
1534
1548
#define Z_PARAM_ARRAY_OR_OBJECT_HT_EX2 (dest , check_null , deref , separate ) \
1535
1549
Z_PARAM_PROLOGUE(deref, separate); \
@@ -1638,6 +1652,29 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
1638
1652
#define Z_PARAM_OBJECT_OF_CLASS_OR_NULL (dest , _ce ) \
1639
1653
Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, 1, 0)
1640
1654
1655
+ /* The same as Z_PARAM_OBJECT_OF_CLASS_EX2 except that dest is a zend_object rather than a zval */
1656
+ #define Z_PARAM_OBJ_OF_CLASS_EX2 (dest , _ce , check_null , deref , separate ) \
1657
+ Z_PARAM_PROLOGUE(deref, separate); \
1658
+ if (UNEXPECTED(!zend_parse_arg_obj(_arg, &dest, _ce, check_null))) { \
1659
+ if (_ce) { \
1660
+ _error = ZSTR_VAL((_ce)->name); \
1661
+ _error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
1662
+ break; \
1663
+ } else { \
1664
+ _expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
1665
+ _error_code = ZPP_ERROR_WRONG_ARG; \
1666
+ break; \
1667
+ } \
1668
+ }
1669
+
1670
+ #define Z_PARAM_OBJ_OF_CLASS_EX (dest , _ce , check_null , separate ) \
1671
+ Z_PARAM_OBJ_OF_CLASS_EX2(dest, _ce, check_null, separate, separate)
1672
+
1673
+ #define Z_PARAM_OBJ_OF_CLASS (dest , _ce ) \
1674
+ Z_PARAM_OBJ_OF_CLASS_EX(dest, _ce, 0, 0)
1675
+
1676
+ #define Z_PARAM_OBJ_OF_CLASS_OR_NULL (dest , _ce ) \
1677
+ Z_PARAM_OBJ_OF_CLASS_EX(dest, _ce, 1, 0)
1641
1678
/* old "p" */
1642
1679
#define Z_PARAM_PATH_EX2 (dest , dest_len , check_null , deref , separate ) \
1643
1680
Z_PARAM_PROLOGUE(deref, separate); \
0 commit comments