1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
#ifndef PHP74_SHIM_H
#define PHP74_SHIM_H
#if PHP_VERSION_ID < 70400
#define ZEND_TRY_ASSIGN_NULL(zv) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_NULL(zv); \
} while (0)
#define ZEND_TRY_ASSIGN_FALSE(zv) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_FALSE(zv); \
} while (0)
#define ZEND_TRY_ASSIGN_TRUE(zv) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_TRUE(zv); \
} while (0)
#define ZEND_TRY_ASSIGN_BOOL(zv, bval) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_BOOL(zv, bval); \
} while (0)
#define ZEND_TRY_ASSIGN_LONG(zv, lval) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_LONG(zv, lval); \
} while (0)
#define ZEND_TRY_ASSIGN_DOUBLE(zv, dval) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_DOUBLE(zv, dval); \
} while (0)
#define ZEND_TRY_ASSIGN_EMPTY_STRING(zv) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_EMPTY_STRING(zv); \
} while (0)
#define ZEND_TRY_ASSIGN_STR(zv, str) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_STR(zv, str); \
} while (0)
#define ZEND_TRY_ASSIGN_NEW_STR(zv, str) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_NEW_STR(zv, str); \
} while (0)
#define ZEND_TRY_ASSIGN_STRING(zv, string) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_STRING(zv, string); \
} while (0)
#define ZEND_TRY_ASSIGN_STRINGL(zv, string, len) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_STRINGL(zv, string, len); \
} while (0)
#define ZEND_TRY_ASSIGN_RES(zv, res) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_RES(zv, res); \
} while (0)
#define ZEND_TRY_ASSIGN_VALUE(zv, other) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_COPY_VALUE(zv, res); \
} while (0)
#define ZEND_TRY_ASSIGN_COPY(zv, other) do { \
ZVAL_DEREF(zv); \
zval_ptr_dtor(zv); \
ZVAL_COPY(zv, res); \
} while (0)
/* Initializes a reference to an empty array and returns dereferenced zval,
* or NULL if the initialization failed. */
static zend_always_inline zval *zend_try_array_init(zval *zv) {
ZVAL_DEREF(zv);
array_init(zv);
return zv;
}
static zend_always_inline zval *zend_try_array_init_size(zval *zv, uint32_t size) {
ZVAL_DEREF(zv);
array_init_size(zv, size);
return zv;
}
#endif
#endif
|