Lines Matching refs:val
634 uint64_t val = 0; in zend_ffi_bit_field_read() local
646 val = (*p++ >> pos) & mask; in zend_ffi_bit_field_read()
652 val |= (uint64_t) *p++ << insert_pos; in zend_ffi_bit_field_read()
660 val |= (uint64_t) (*p & mask) << insert_pos; in zend_ffi_bit_field_read()
663 return val; in zend_ffi_bit_field_read()
669 uint64_t val = zend_ffi_bit_field_read(ptr, field); in zend_ffi_bit_field_to_zval() local
678 val = (int64_t)(val << shift) >> shift; in zend_ffi_bit_field_to_zval()
681 ZVAL_LONG(rv, val); in zend_ffi_bit_field_to_zval()
687 uint64_t val = zval_get_long(value); in zend_ffi_zval_to_bit_field() local
698 *p = (*p & ~mask) | ((val << pos) & mask); in zend_ffi_zval_to_bit_field()
706 *p = (*p & ~mask) | ((val << pos) & mask); in zend_ffi_zval_to_bit_field()
708 val >>= num_bits; in zend_ffi_zval_to_bit_field()
713 *p++ = val; in zend_ffi_zval_to_bit_field()
714 val >>= 8; in zend_ffi_zval_to_bit_field()
721 *p = (*p & ~mask) | (val & mask); in zend_ffi_zval_to_bit_field()
3079 while (Z_TYPE(b->val) == IS_UNDEF) { in zend_ffi_same_types()
3090 field = Z_PTR(b->val); in zend_ffi_same_types()
4152 zval *val; in ZEND_METHOD() local
4189 ZEND_HASH_REVERSE_FOREACH_VAL(dims, val) { in ZEND_METHOD()
4190 zend_long n = zval_get_long(val); in ZEND_METHOD()
5796 void zend_ffi_resolve_const(const char *name, size_t name_len, zend_ffi_val *val) /* {{{ */ argument
5801 val->kind = ZEND_FFI_VAL_NAME;
5802 val->str = name;
5803 val->len = name_len;
5808 val->i64 = sym->value;
5813 val->kind = ZEND_FFI_VAL_INT32;
5816 val->kind = ZEND_FFI_VAL_INT64;
5821 val->kind = ZEND_FFI_VAL_UINT32;
5824 val->kind = ZEND_FFI_VAL_UINT64;
5832 val->kind = ZEND_FFI_VAL_ERROR;
5856 …l(zend_ffi_dcl *enum_dcl, const char *name, size_t name_len, zend_ffi_val *val, int64_t *min, int6… argument
5870 if (val->kind == ZEND_FFI_VAL_EMPTY) {
5882 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
5883 if (!is_signed && val->ch < 0) {
5890 value = val->ch;
5891 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
5892 if (!is_signed && val->i64 < 0) {
5899 value = val->i64;
5900 } else if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
5901 if (is_signed && val->u64 > 0x7FFFFFFFFFFFFFFFULL) {
5904 value = val->u64;
6805 …ute_value(zend_ffi_dcl *dcl, const char *name, size_t name_len, int n, zend_ffi_val *val) /* {{{ */ argument
6838 …&& (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_V…
6839 && val->i64 == 3) {
6847 …&& (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_V…
6848 && val->i64 > 0 && val->i64 <= 0x80000000 && (val->i64 & (val->i64 - 1)) == 0) {
6849 dcl->align = val->i64;
6856 && (val->kind == ZEND_FFI_VAL_NAME)) {
6857 const char *str = val->str;
6858 size_t len = val->len;
6920 …_attribute_value(zend_ffi_dcl *dcl, const char *name, size_t name_len, zend_ffi_val *val) /* {{{ */ argument
6923 …if ((val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_…
6924 && val->i64 > 0 && val->i64 <= 0x80000000 && (val->i64 & (val->i64 - 1)) == 0) {
6925 dcl->align = val->i64;
7034 #define zend_ffi_expr_bool(val) do { \ argument
7035 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7036 val->kind = ZEND_FFI_VAL_INT32; \
7037 val->i64 = !!val->u64; \
7038 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7039 val->kind = ZEND_FFI_VAL_INT32; \
7040 val->i64 = !!val->i64; \
7041 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7042 val->kind = ZEND_FFI_VAL_INT32; \
7043 val->i64 = !!val->d; \
7044 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7045 val->kind = ZEND_FFI_VAL_INT32; \
7046 val->i64 = !!val->ch; \
7048 val->kind = ZEND_FFI_VAL_ERROR; \
7052 #define zend_ffi_expr_math(val, op2, OP) do { \ argument
7053 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7055 val->kind = MAX(val->kind, op2->kind); \
7056 val->u64 = val->u64 OP op2->u64; \
7058 val->u64 = val->u64 OP op2->i64; \
7060 val->u64 = val->u64 OP op2->i64; \
7062 val->kind = op2->kind; \
7063 val->d = (zend_ffi_double)val->u64 OP op2->d; \
7065 val->u64 = val->u64 OP op2->ch; \
7067 val->kind = ZEND_FFI_VAL_ERROR; \
7069 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7071 val->i64 = val->i64 OP op2->u64; \
7073 val->i64 = val->i64 OP op2->u64; \
7075 val->kind = MAX(val->kind, op2->kind); \
7076 val->i64 = val->i64 OP op2->i64; \
7078 val->kind = op2->kind; \
7079 val->d = (zend_ffi_double)val->i64 OP op2->d; \
7081 val->i64 = val->i64 OP op2->ch; \
7083 val->kind = ZEND_FFI_VAL_ERROR; \
7085 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7087 val->d = val->d OP (zend_ffi_double)op2->u64; \
7089 val->d = val->d OP (zend_ffi_double)op2->i64; \
7091 val->kind = MAX(val->kind, op2->kind); \
7092 val->d = val->d OP op2->d; \
7094 val->d = val->d OP (zend_ffi_double)op2->ch; \
7096 val->kind = ZEND_FFI_VAL_ERROR; \
7098 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7100 val->kind = op2->kind; \
7101 val->u64 = val->ch OP op2->u64; \
7103 val->kind = ZEND_FFI_VAL_INT64; \
7104 val->i64 = val->ch OP op2->i64; \
7106 val->kind = op2->kind; \
7107 val->d = (zend_ffi_double)val->ch OP op2->d; \
7109 val->ch = val->ch OP op2->ch; \
7111 val->kind = ZEND_FFI_VAL_ERROR; \
7114 val->kind = ZEND_FFI_VAL_ERROR; \
7118 #define zend_ffi_expr_int_math(val, op2, OP) do { \ argument
7119 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7121 val->kind = MAX(val->kind, op2->kind); \
7122 val->u64 = val->u64 OP op2->u64; \
7124 val->u64 = val->u64 OP op2->i64; \
7126 val->u64 = val->u64 OP op2->i64; \
7128 val->u64 = val->u64 OP (uint64_t)op2->d; \
7130 val->u64 = val->u64 OP op2->ch; \
7132 val->kind = ZEND_FFI_VAL_ERROR; \
7134 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7136 val->i64 = val->i64 OP op2->u64; \
7138 val->i64 = val->i64 OP op2->u64; \
7140 val->kind = MAX(val->kind, op2->kind); \
7141 val->i64 = val->i64 OP op2->i64; \
7143 val->u64 = val->u64 OP (int64_t)op2->d; \
7145 val->i64 = val->i64 OP op2->ch; \
7147 val->kind = ZEND_FFI_VAL_ERROR; \
7149 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7151 val->kind = op2->kind; \
7152 val->u64 = (uint64_t)val->d OP op2->u64; \
7154 val->kind = op2->kind; \
7155 val->i64 = (int64_t)val->d OP op2->i64; \
7157 val->kind = ZEND_FFI_VAL_ERROR; \
7159 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7161 val->kind = op2->kind; \
7162 val->u64 = (uint64_t)val->ch OP op2->u64; \
7164 val->kind = op2->kind; \
7165 val->i64 = (int64_t)val->ch OP op2->u64; \
7167 val->ch = val->ch OP op2->ch; \
7169 val->kind = ZEND_FFI_VAL_ERROR; \
7172 val->kind = ZEND_FFI_VAL_ERROR; \
7176 #define zend_ffi_expr_cmp(val, op2, OP) do { \ argument
7177 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7179 val->kind = ZEND_FFI_VAL_INT32; \
7180 val->i64 = val->u64 OP op2->u64; \
7182 val->kind = ZEND_FFI_VAL_INT32; \
7183 val->i64 = val->u64 OP op2->u64; /*signed/unsigned */ \
7185 val->kind = ZEND_FFI_VAL_INT32; \
7186 val->i64 = (zend_ffi_double)val->u64 OP op2->d; \
7188 val->kind = ZEND_FFI_VAL_INT32; \
7189 val->i64 = val->u64 OP op2->d; \
7191 val->kind = ZEND_FFI_VAL_ERROR; \
7193 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7195 val->kind = ZEND_FFI_VAL_INT32; \
7196 val->i64 = val->i64 OP op2->i64; /* signed/unsigned */ \
7198 val->kind = ZEND_FFI_VAL_INT32; \
7199 val->i64 = val->i64 OP op2->i64; \
7201 val->kind = ZEND_FFI_VAL_INT32; \
7202 val->i64 = (zend_ffi_double)val->i64 OP op2->d; \
7204 val->kind = ZEND_FFI_VAL_INT32; \
7205 val->i64 = val->i64 OP op2->ch; \
7207 val->kind = ZEND_FFI_VAL_ERROR; \
7209 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7211 val->kind = ZEND_FFI_VAL_INT32; \
7212 val->i64 = val->d OP (zend_ffi_double)op2->u64; \
7214 val->kind = ZEND_FFI_VAL_INT32; \
7215 val->i64 = val->d OP (zend_ffi_double)op2->i64; \
7217 val->kind = ZEND_FFI_VAL_INT32; \
7218 val->i64 = val->d OP op2->d; \
7220 val->kind = ZEND_FFI_VAL_INT32; \
7221 val->i64 = val->d OP (zend_ffi_double)op2->ch; \
7223 val->kind = ZEND_FFI_VAL_ERROR; \
7225 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7227 val->kind = ZEND_FFI_VAL_INT32; \
7228 val->i64 = val->ch OP op2->i64; /* signed/unsigned */ \
7230 val->kind = ZEND_FFI_VAL_INT32; \
7231 val->i64 = val->ch OP op2->i64; \
7233 val->kind = ZEND_FFI_VAL_INT32; \
7234 val->i64 = (zend_ffi_double)val->ch OP op2->d; \
7236 val->kind = ZEND_FFI_VAL_INT32; \
7237 val->i64 = val->ch OP op2->ch; \
7239 val->kind = ZEND_FFI_VAL_ERROR; \
7242 val->kind = ZEND_FFI_VAL_ERROR; \
7246 void zend_ffi_expr_conditional(zend_ffi_val *val, zend_ffi_val *op2, zend_ffi_val *op3) /* {{{ */ argument
7248 zend_ffi_expr_bool(val);
7249 if (val->kind == ZEND_FFI_VAL_INT32) {
7250 if (val->i64) {
7251 *val = *op2;
7253 *val = *op3;
7259 void zend_ffi_expr_bool_or(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7261 zend_ffi_expr_bool(val);
7263 if (val->kind == ZEND_FFI_VAL_INT32 && op2->kind == ZEND_FFI_VAL_INT32) {
7264 val->i64 = val->i64 || op2->i64;
7266 val->kind = ZEND_FFI_VAL_ERROR;
7271 void zend_ffi_expr_bool_and(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7273 zend_ffi_expr_bool(val);
7275 if (val->kind == ZEND_FFI_VAL_INT32 && op2->kind == ZEND_FFI_VAL_INT32) {
7276 val->i64 = val->i64 && op2->i64;
7278 val->kind = ZEND_FFI_VAL_ERROR;
7283 void zend_ffi_expr_bw_or(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7285 zend_ffi_expr_int_math(val, op2, |);
7289 void zend_ffi_expr_bw_xor(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7291 zend_ffi_expr_int_math(val, op2, ^);
7295 void zend_ffi_expr_bw_and(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7297 zend_ffi_expr_int_math(val, op2, &);
7301 void zend_ffi_expr_is_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7303 zend_ffi_expr_cmp(val, op2, ==);
7307 void zend_ffi_expr_is_not_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7309 zend_ffi_expr_cmp(val, op2, !=);
7313 void zend_ffi_expr_is_less(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7315 zend_ffi_expr_cmp(val, op2, <);
7319 void zend_ffi_expr_is_greater(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7321 zend_ffi_expr_cmp(val, op2, >);
7325 void zend_ffi_expr_is_less_or_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7327 zend_ffi_expr_cmp(val, op2, <=);
7331 void zend_ffi_expr_is_greater_or_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7333 zend_ffi_expr_cmp(val, op2, >=);
7337 void zend_ffi_expr_shift_left(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7339 zend_ffi_expr_int_math(val, op2, <<);
7343 void zend_ffi_expr_shift_right(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7345 zend_ffi_expr_int_math(val, op2, >>);
7349 void zend_ffi_expr_add(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7351 zend_ffi_expr_math(val, op2, +);
7355 void zend_ffi_expr_sub(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7357 zend_ffi_expr_math(val, op2, -);
7361 void zend_ffi_expr_mul(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7363 zend_ffi_expr_math(val, op2, *);
7367 void zend_ffi_expr_div(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7369 zend_ffi_expr_math(val, op2, /);
7373 void zend_ffi_expr_mod(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7375 zend_ffi_expr_int_math(val, op2, %); // ???
7379 void zend_ffi_expr_cast(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7384 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7385 val->kind = ZEND_FFI_VAL_FLOAT;
7386 val->d = val->u64;
7387 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7388 val->kind = ZEND_FFI_VAL_FLOAT;
7389 val->d = val->i64;
7390 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7391 val->kind = ZEND_FFI_VAL_FLOAT;
7392 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7393 val->kind = ZEND_FFI_VAL_FLOAT;
7394 val->d = val->ch;
7396 val->kind = ZEND_FFI_VAL_ERROR;
7400 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7401 val->kind = ZEND_FFI_VAL_DOUBLE;
7402 val->d = val->u64;
7403 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7404 val->kind = ZEND_FFI_VAL_DOUBLE;
7405 val->d = val->i64;
7406 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7407 val->kind = ZEND_FFI_VAL_DOUBLE;
7408 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7409 val->kind = ZEND_FFI_VAL_DOUBLE;
7410 val->d = val->ch;
7412 val->kind = ZEND_FFI_VAL_ERROR;
7417 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7418 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7419 val->d = val->u64;
7420 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7421 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7422 val->d = val->i64;
7423 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7424 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7425 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7426 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7427 val->d = val->ch;
7429 val->kind = ZEND_FFI_VAL_ERROR;
7437 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7438 val->kind = ZEND_FFI_VAL_UINT32;
7439 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7440 val->kind = ZEND_FFI_VAL_UINT32;
7441 val->u64 = val->d;
7442 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7443 val->kind = ZEND_FFI_VAL_UINT32;
7444 val->u64 = val->ch;
7446 val->kind = ZEND_FFI_VAL_ERROR;
7452 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7453 val->kind = ZEND_FFI_VAL_INT32;
7454 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7455 val->kind = ZEND_FFI_VAL_INT32;
7456 val->i64 = val->d;
7457 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7458 val->kind = ZEND_FFI_VAL_INT32;
7459 val->i64 = val->ch;
7461 val->kind = ZEND_FFI_VAL_ERROR;
7465 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7466 val->kind = ZEND_FFI_VAL_UINT64;
7467 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7468 val->kind = ZEND_FFI_VAL_UINT64;
7469 val->u64 = val->d;
7470 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7471 val->kind = ZEND_FFI_VAL_UINT64;
7472 val->u64 = val->ch;
7474 val->kind = ZEND_FFI_VAL_ERROR;
7478 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7479 val->kind = ZEND_FFI_VAL_CHAR;
7480 val->ch = val->u64;
7481 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7482 val->kind = ZEND_FFI_VAL_CHAR;
7483 val->ch = val->i64;
7484 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7485 val->kind = ZEND_FFI_VAL_CHAR;
7486 val->ch = val->d;
7487 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7489 val->kind = ZEND_FFI_VAL_ERROR;
7493 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7494 val->kind = ZEND_FFI_VAL_UINT32;
7495 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7496 val->kind = ZEND_FFI_VAL_UINT32;
7497 val->u64 = val->d;
7498 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7499 val->kind = ZEND_FFI_VAL_UINT32;
7500 val->u64 = val->ch;
7502 val->kind = ZEND_FFI_VAL_ERROR;
7506 val->kind = ZEND_FFI_VAL_ERROR;
7513 void zend_ffi_expr_plus(zend_ffi_val *val) /* {{{ */ argument
7515 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7516 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7517 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7518 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7520 val->kind = ZEND_FFI_VAL_ERROR;
7525 void zend_ffi_expr_neg(zend_ffi_val *val) /* {{{ */ argument
7527 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7528 val->u64 = -val->u64;
7529 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7530 val->i64 = -val->i64;
7531 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7532 val->d = -val->d;
7533 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7534 val->ch = -val->ch;
7536 val->kind = ZEND_FFI_VAL_ERROR;
7541 void zend_ffi_expr_bw_not(zend_ffi_val *val) /* {{{ */ argument
7543 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7544 val->u64 = ~val->u64;
7545 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7546 val->i64 = ~val->i64;
7547 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7548 val->ch = ~val->ch;
7550 val->kind = ZEND_FFI_VAL_ERROR;
7555 void zend_ffi_expr_bool_not(zend_ffi_val *val) /* {{{ */ argument
7557 zend_ffi_expr_bool(val);
7558 if (val->kind == ZEND_FFI_VAL_INT32) {
7559 val->i64 = !val->i64;
7564 void zend_ffi_expr_sizeof_val(zend_ffi_val *val) /* {{{ */ argument
7566 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_INT32) {
7567 val->kind = ZEND_FFI_VAL_UINT32;
7568 val->u64 = zend_ffi_type_uint32.size;
7569 } else if (val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_VAL_INT64) {
7570 val->kind = ZEND_FFI_VAL_UINT32;
7571 val->u64 = zend_ffi_type_uint64.size;
7572 } else if (val->kind == ZEND_FFI_VAL_FLOAT) {
7573 val->kind = ZEND_FFI_VAL_UINT32;
7574 val->u64 = zend_ffi_type_float.size;
7575 } else if (val->kind == ZEND_FFI_VAL_DOUBLE) {
7576 val->kind = ZEND_FFI_VAL_UINT32;
7577 val->u64 = zend_ffi_type_double.size;
7578 } else if (val->kind == ZEND_FFI_VAL_LONG_DOUBLE) {
7579 val->kind = ZEND_FFI_VAL_UINT32;
7581 val->u64 = zend_ffi_type_double.size;
7583 val->u64 = zend_ffi_type_long_double.size;
7585 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7586 val->kind = ZEND_FFI_VAL_UINT32;
7587 val->u64 = zend_ffi_type_char.size;
7588 } else if (val->kind == ZEND_FFI_VAL_STRING) {
7589 if (memchr(val->str, '\\', val->len)) {
7591 val->kind = ZEND_FFI_VAL_ERROR;
7593 val->kind = ZEND_FFI_VAL_UINT32;
7594 val->u64 = val->len + 1;
7597 val->kind = ZEND_FFI_VAL_ERROR;
7602 void zend_ffi_expr_sizeof_type(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7608 val->kind = (type->size > 0xffffffff) ? ZEND_FFI_VAL_UINT64 : ZEND_FFI_VAL_UINT32;
7609 val->u64 = type->size;
7614 void zend_ffi_expr_alignof_val(zend_ffi_val *val) /* {{{ */ argument
7616 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_INT32) {
7617 val->kind = ZEND_FFI_VAL_UINT32;
7618 val->u64 = zend_ffi_type_uint32.align;
7619 } else if (val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_VAL_INT64) {
7620 val->kind = ZEND_FFI_VAL_UINT32;
7621 val->u64 = zend_ffi_type_uint64.align;
7622 } else if (val->kind == ZEND_FFI_VAL_FLOAT) {
7623 val->kind = ZEND_FFI_VAL_UINT32;
7624 val->u64 = zend_ffi_type_float.align;
7625 } else if (val->kind == ZEND_FFI_VAL_DOUBLE) {
7626 val->kind = ZEND_FFI_VAL_UINT32;
7627 val->u64 = zend_ffi_type_double.align;
7629 } else if (val->kind == ZEND_FFI_VAL_LONG_DOUBLE) {
7630 val->kind = ZEND_FFI_VAL_UINT32;
7631 val->u64 = zend_ffi_type_long_double.align;
7633 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7634 val->kind = ZEND_FFI_VAL_UINT32;
7635 val->u64 = zend_ffi_type_char.size;
7636 } else if (val->kind == ZEND_FFI_VAL_STRING) {
7637 val->kind = ZEND_FFI_VAL_UINT32;
7638 val->u64 = _Alignof(char*);
7640 val->kind = ZEND_FFI_VAL_ERROR;
7645 void zend_ffi_expr_alignof_type(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7648 val->kind = ZEND_FFI_VAL_UINT32;
7649 val->u64 = ZEND_FFI_TYPE(dcl->type)->align;
7654 void zend_ffi_val_number(zend_ffi_val *val, int base, const char *str, size_t str_len) /* {{{ */ argument
7679 val->u64 = strtoull(str, NULL, base);
7681 val->kind = ZEND_FFI_VAL_UINT32;
7683 val->kind = (sizeof(long) == 4) ? ZEND_FFI_VAL_UINT32 : ZEND_FFI_VAL_UINT64;
7685 val->kind = ZEND_FFI_VAL_UINT64;
7688 val->i64 = strtoll(str, NULL, base);
7690 val->kind = ZEND_FFI_VAL_INT32;
7692 val->kind = (sizeof(long) == 4) ? ZEND_FFI_VAL_INT32 : ZEND_FFI_VAL_INT64;
7694 val->kind = ZEND_FFI_VAL_INT64;
7700 void zend_ffi_val_float_number(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7702 val->d = strtold(str, NULL);
7704 val->kind = ZEND_FFI_VAL_FLOAT;
7706 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7708 val->kind = ZEND_FFI_VAL_DOUBLE;
7713 void zend_ffi_val_string(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7716 val->kind = ZEND_FFI_VAL_ERROR;
7718 val->kind = ZEND_FFI_VAL_STRING;
7719 val->str = str + 1;
7720 val->len = str_len - 2;
7725 void zend_ffi_val_character(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7730 val->kind = ZEND_FFI_VAL_ERROR;
7732 val->kind = ZEND_FFI_VAL_CHAR;
7734 val->ch = str[1];
7738 val->ch = '\b';
7740 val->ch = '\f';
7742 val->ch = '\n';
7744 val->ch = '\r';
7746 val->ch = '\t';
7748 val->ch = '\v';
7756 val->kind = ZEND_FFI_VAL_ERROR;
7759 val->kind = ZEND_FFI_VAL_ERROR;
7762 val->ch = n;
7764 val->kind = ZEND_FFI_VAL_ERROR;
7774 val->kind = ZEND_FFI_VAL_ERROR;
7784 val->kind = ZEND_FFI_VAL_ERROR;
7787 val->ch = n;
7789 val->ch = str[2];
7791 val->kind = ZEND_FFI_VAL_ERROR;
7794 val->kind = ZEND_FFI_VAL_ERROR;