Lines Matching refs:val
645 uint64_t val = 0; in zend_ffi_bit_field_read() local
657 val = (*p++ >> pos) & mask; in zend_ffi_bit_field_read()
663 val |= (uint64_t) *p++ << insert_pos; in zend_ffi_bit_field_read()
671 val |= (uint64_t) (*p & mask) << insert_pos; in zend_ffi_bit_field_read()
674 return val; in zend_ffi_bit_field_read()
680 uint64_t val = zend_ffi_bit_field_read(ptr, field); in zend_ffi_bit_field_to_zval() local
689 val = (int64_t)(val << shift) >> shift; in zend_ffi_bit_field_to_zval()
692 ZVAL_LONG(rv, val); in zend_ffi_bit_field_to_zval()
698 uint64_t val = zval_get_long(value); in zend_ffi_zval_to_bit_field() local
709 *p = (*p & ~mask) | ((val << pos) & mask); in zend_ffi_zval_to_bit_field()
717 *p = (*p & ~mask) | ((val << pos) & mask); in zend_ffi_zval_to_bit_field()
719 val >>= num_bits; in zend_ffi_zval_to_bit_field()
724 *p++ = val; in zend_ffi_zval_to_bit_field()
725 val >>= 8; in zend_ffi_zval_to_bit_field()
732 *p = (*p & ~mask) | (val & mask); in zend_ffi_zval_to_bit_field()
3143 while (Z_TYPE(b->val) == IS_UNDEF) { in zend_ffi_same_types()
3154 field = Z_PTR(b->val); in zend_ffi_same_types()
4251 zval *val; in ZEND_METHOD() local
4288 ZEND_HASH_REVERSE_FOREACH_VAL(dims, val) { in ZEND_METHOD()
4289 zend_long n = zval_get_long(val); in ZEND_METHOD()
5909 void zend_ffi_resolve_const(const char *name, size_t name_len, zend_ffi_val *val) /* {{{ */ argument
5914 val->kind = ZEND_FFI_VAL_NAME;
5915 val->str = name;
5916 val->len = name_len;
5921 val->i64 = sym->value;
5926 val->kind = ZEND_FFI_VAL_INT32;
5929 val->kind = ZEND_FFI_VAL_INT64;
5934 val->kind = ZEND_FFI_VAL_UINT32;
5937 val->kind = ZEND_FFI_VAL_UINT64;
5945 val->kind = ZEND_FFI_VAL_ERROR;
5969 …l(zend_ffi_dcl *enum_dcl, const char *name, size_t name_len, zend_ffi_val *val, int64_t *min, int6… argument
5983 if (val->kind == ZEND_FFI_VAL_EMPTY) {
5995 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
5996 if (!is_signed && val->ch < 0) {
6003 value = val->ch;
6004 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
6005 if (!is_signed && val->i64 < 0) {
6012 value = val->i64;
6013 } else if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
6014 if (is_signed && val->u64 > 0x7FFFFFFFFFFFFFFFULL) {
6017 value = val->u64;
6918 …ute_value(zend_ffi_dcl *dcl, const char *name, size_t name_len, int n, zend_ffi_val *val) /* {{{ */ argument
6951 …&& (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_V…
6952 && val->i64 == 3) {
6960 …&& (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_V…
6961 && val->i64 > 0 && val->i64 <= 0x80000000 && (val->i64 & (val->i64 - 1)) == 0) {
6962 dcl->align = val->i64;
6969 && (val->kind == ZEND_FFI_VAL_NAME)) {
6970 const char *str = val->str;
6971 size_t len = val->len;
7033 …_attribute_value(zend_ffi_dcl *dcl, const char *name, size_t name_len, zend_ffi_val *val) /* {{{ */ argument
7036 …if ((val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_…
7037 && val->i64 > 0 && val->i64 <= 0x80000000 && (val->i64 & (val->i64 - 1)) == 0) {
7038 dcl->align = val->i64;
7147 #define zend_ffi_expr_bool(val) do { \ argument
7148 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7149 val->kind = ZEND_FFI_VAL_INT32; \
7150 val->i64 = !!val->u64; \
7151 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7152 val->kind = ZEND_FFI_VAL_INT32; \
7153 val->i64 = !!val->i64; \
7154 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7155 val->kind = ZEND_FFI_VAL_INT32; \
7156 val->i64 = !!val->d; \
7157 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7158 val->kind = ZEND_FFI_VAL_INT32; \
7159 val->i64 = !!val->ch; \
7161 val->kind = ZEND_FFI_VAL_ERROR; \
7165 #define zend_ffi_expr_math(val, op2, OP) do { \ argument
7166 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7168 val->kind = MAX(val->kind, op2->kind); \
7169 val->u64 = val->u64 OP op2->u64; \
7171 val->u64 = val->u64 OP op2->i64; \
7173 val->u64 = val->u64 OP op2->i64; \
7175 val->kind = op2->kind; \
7176 val->d = (zend_ffi_double)val->u64 OP op2->d; \
7178 val->u64 = val->u64 OP op2->ch; \
7180 val->kind = ZEND_FFI_VAL_ERROR; \
7182 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7184 val->i64 = val->i64 OP op2->u64; \
7186 val->i64 = val->i64 OP op2->u64; \
7188 val->kind = MAX(val->kind, op2->kind); \
7189 val->i64 = val->i64 OP op2->i64; \
7191 val->kind = op2->kind; \
7192 val->d = (zend_ffi_double)val->i64 OP op2->d; \
7194 val->i64 = val->i64 OP op2->ch; \
7196 val->kind = ZEND_FFI_VAL_ERROR; \
7198 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7200 val->d = val->d OP (zend_ffi_double)op2->u64; \
7202 val->d = val->d OP (zend_ffi_double)op2->i64; \
7204 val->kind = MAX(val->kind, op2->kind); \
7205 val->d = val->d OP op2->d; \
7207 val->d = val->d OP (zend_ffi_double)op2->ch; \
7209 val->kind = ZEND_FFI_VAL_ERROR; \
7211 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7213 val->kind = op2->kind; \
7214 val->u64 = val->ch OP op2->u64; \
7216 val->kind = ZEND_FFI_VAL_INT64; \
7217 val->i64 = val->ch OP op2->i64; \
7219 val->kind = op2->kind; \
7220 val->d = (zend_ffi_double)val->ch OP op2->d; \
7222 val->ch = val->ch OP op2->ch; \
7224 val->kind = ZEND_FFI_VAL_ERROR; \
7227 val->kind = ZEND_FFI_VAL_ERROR; \
7231 #define zend_ffi_expr_int_math(val, op2, OP) do { \ argument
7232 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7234 val->kind = MAX(val->kind, op2->kind); \
7235 val->u64 = val->u64 OP op2->u64; \
7237 val->u64 = val->u64 OP op2->i64; \
7239 val->u64 = val->u64 OP op2->i64; \
7241 val->u64 = val->u64 OP (uint64_t)op2->d; \
7243 val->u64 = val->u64 OP op2->ch; \
7245 val->kind = ZEND_FFI_VAL_ERROR; \
7247 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7249 val->i64 = val->i64 OP op2->u64; \
7251 val->i64 = val->i64 OP op2->u64; \
7253 val->kind = MAX(val->kind, op2->kind); \
7254 val->i64 = val->i64 OP op2->i64; \
7256 val->u64 = val->u64 OP (int64_t)op2->d; \
7258 val->i64 = val->i64 OP op2->ch; \
7260 val->kind = ZEND_FFI_VAL_ERROR; \
7262 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7264 val->kind = op2->kind; \
7265 val->u64 = (uint64_t)val->d OP op2->u64; \
7267 val->kind = op2->kind; \
7268 val->i64 = (int64_t)val->d OP op2->i64; \
7270 val->kind = ZEND_FFI_VAL_ERROR; \
7272 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7274 val->kind = op2->kind; \
7275 val->u64 = (uint64_t)val->ch OP op2->u64; \
7277 val->kind = op2->kind; \
7278 val->i64 = (int64_t)val->ch OP op2->u64; \
7280 val->ch = val->ch OP op2->ch; \
7282 val->kind = ZEND_FFI_VAL_ERROR; \
7285 val->kind = ZEND_FFI_VAL_ERROR; \
7289 #define zend_ffi_expr_cmp(val, op2, OP) do { \ argument
7290 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7292 val->kind = ZEND_FFI_VAL_INT32; \
7293 val->i64 = val->u64 OP op2->u64; \
7295 val->kind = ZEND_FFI_VAL_INT32; \
7296 val->i64 = val->u64 OP op2->u64; /*signed/unsigned */ \
7298 val->kind = ZEND_FFI_VAL_INT32; \
7299 val->i64 = (zend_ffi_double)val->u64 OP op2->d; \
7301 val->kind = ZEND_FFI_VAL_INT32; \
7302 val->i64 = val->u64 OP op2->d; \
7304 val->kind = ZEND_FFI_VAL_ERROR; \
7306 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7308 val->kind = ZEND_FFI_VAL_INT32; \
7309 val->i64 = val->i64 OP op2->i64; /* signed/unsigned */ \
7311 val->kind = ZEND_FFI_VAL_INT32; \
7312 val->i64 = val->i64 OP op2->i64; \
7314 val->kind = ZEND_FFI_VAL_INT32; \
7315 val->i64 = (zend_ffi_double)val->i64 OP op2->d; \
7317 val->kind = ZEND_FFI_VAL_INT32; \
7318 val->i64 = val->i64 OP op2->ch; \
7320 val->kind = ZEND_FFI_VAL_ERROR; \
7322 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7324 val->kind = ZEND_FFI_VAL_INT32; \
7325 val->i64 = val->d OP (zend_ffi_double)op2->u64; \
7327 val->kind = ZEND_FFI_VAL_INT32; \
7328 val->i64 = val->d OP (zend_ffi_double)op2->i64; \
7330 val->kind = ZEND_FFI_VAL_INT32; \
7331 val->i64 = val->d OP op2->d; \
7333 val->kind = ZEND_FFI_VAL_INT32; \
7334 val->i64 = val->d OP (zend_ffi_double)op2->ch; \
7336 val->kind = ZEND_FFI_VAL_ERROR; \
7338 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7340 val->kind = ZEND_FFI_VAL_INT32; \
7341 val->i64 = val->ch OP op2->i64; /* signed/unsigned */ \
7343 val->kind = ZEND_FFI_VAL_INT32; \
7344 val->i64 = val->ch OP op2->i64; \
7346 val->kind = ZEND_FFI_VAL_INT32; \
7347 val->i64 = (zend_ffi_double)val->ch OP op2->d; \
7349 val->kind = ZEND_FFI_VAL_INT32; \
7350 val->i64 = val->ch OP op2->ch; \
7352 val->kind = ZEND_FFI_VAL_ERROR; \
7355 val->kind = ZEND_FFI_VAL_ERROR; \
7359 void zend_ffi_expr_conditional(zend_ffi_val *val, zend_ffi_val *op2, zend_ffi_val *op3) /* {{{ */ argument
7361 zend_ffi_expr_bool(val);
7362 if (val->kind == ZEND_FFI_VAL_INT32) {
7363 if (val->i64) {
7364 *val = *op2;
7366 *val = *op3;
7372 void zend_ffi_expr_bool_or(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7374 zend_ffi_expr_bool(val);
7376 if (val->kind == ZEND_FFI_VAL_INT32 && op2->kind == ZEND_FFI_VAL_INT32) {
7377 val->i64 = val->i64 || op2->i64;
7379 val->kind = ZEND_FFI_VAL_ERROR;
7384 void zend_ffi_expr_bool_and(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7386 zend_ffi_expr_bool(val);
7388 if (val->kind == ZEND_FFI_VAL_INT32 && op2->kind == ZEND_FFI_VAL_INT32) {
7389 val->i64 = val->i64 && op2->i64;
7391 val->kind = ZEND_FFI_VAL_ERROR;
7396 void zend_ffi_expr_bw_or(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7398 zend_ffi_expr_int_math(val, op2, |);
7402 void zend_ffi_expr_bw_xor(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7404 zend_ffi_expr_int_math(val, op2, ^);
7408 void zend_ffi_expr_bw_and(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7410 zend_ffi_expr_int_math(val, op2, &);
7414 void zend_ffi_expr_is_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7416 zend_ffi_expr_cmp(val, op2, ==);
7420 void zend_ffi_expr_is_not_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7422 zend_ffi_expr_cmp(val, op2, !=);
7426 void zend_ffi_expr_is_less(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7428 zend_ffi_expr_cmp(val, op2, <);
7432 void zend_ffi_expr_is_greater(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7434 zend_ffi_expr_cmp(val, op2, >);
7438 void zend_ffi_expr_is_less_or_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7440 zend_ffi_expr_cmp(val, op2, <=);
7444 void zend_ffi_expr_is_greater_or_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7446 zend_ffi_expr_cmp(val, op2, >=);
7450 void zend_ffi_expr_shift_left(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7452 zend_ffi_expr_int_math(val, op2, <<);
7456 void zend_ffi_expr_shift_right(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7458 zend_ffi_expr_int_math(val, op2, >>);
7462 void zend_ffi_expr_add(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7464 zend_ffi_expr_math(val, op2, +);
7468 void zend_ffi_expr_sub(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7470 zend_ffi_expr_math(val, op2, -);
7474 void zend_ffi_expr_mul(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7476 zend_ffi_expr_math(val, op2, *);
7480 void zend_ffi_expr_div(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7482 zend_ffi_expr_math(val, op2, /);
7486 void zend_ffi_expr_mod(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7488 zend_ffi_expr_int_math(val, op2, %); // ???
7492 void zend_ffi_expr_cast(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7497 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7498 val->kind = ZEND_FFI_VAL_FLOAT;
7499 val->d = val->u64;
7500 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7501 val->kind = ZEND_FFI_VAL_FLOAT;
7502 val->d = val->i64;
7503 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7504 val->kind = ZEND_FFI_VAL_FLOAT;
7505 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7506 val->kind = ZEND_FFI_VAL_FLOAT;
7507 val->d = val->ch;
7509 val->kind = ZEND_FFI_VAL_ERROR;
7513 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7514 val->kind = ZEND_FFI_VAL_DOUBLE;
7515 val->d = val->u64;
7516 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7517 val->kind = ZEND_FFI_VAL_DOUBLE;
7518 val->d = val->i64;
7519 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7520 val->kind = ZEND_FFI_VAL_DOUBLE;
7521 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7522 val->kind = ZEND_FFI_VAL_DOUBLE;
7523 val->d = val->ch;
7525 val->kind = ZEND_FFI_VAL_ERROR;
7530 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7531 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7532 val->d = val->u64;
7533 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7534 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7535 val->d = val->i64;
7536 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7537 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7538 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7539 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7540 val->d = val->ch;
7542 val->kind = ZEND_FFI_VAL_ERROR;
7550 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7551 val->kind = ZEND_FFI_VAL_UINT32;
7552 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7553 val->kind = ZEND_FFI_VAL_UINT32;
7554 val->u64 = val->d;
7555 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7556 val->kind = ZEND_FFI_VAL_UINT32;
7557 val->u64 = val->ch;
7559 val->kind = ZEND_FFI_VAL_ERROR;
7565 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7566 val->kind = ZEND_FFI_VAL_INT32;
7567 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7568 val->kind = ZEND_FFI_VAL_INT32;
7569 val->i64 = val->d;
7570 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7571 val->kind = ZEND_FFI_VAL_INT32;
7572 val->i64 = val->ch;
7574 val->kind = ZEND_FFI_VAL_ERROR;
7578 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7579 val->kind = ZEND_FFI_VAL_UINT64;
7580 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7581 val->kind = ZEND_FFI_VAL_UINT64;
7582 val->u64 = val->d;
7583 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7584 val->kind = ZEND_FFI_VAL_UINT64;
7585 val->u64 = val->ch;
7587 val->kind = ZEND_FFI_VAL_ERROR;
7591 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7592 val->kind = ZEND_FFI_VAL_CHAR;
7593 val->ch = val->u64;
7594 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7595 val->kind = ZEND_FFI_VAL_CHAR;
7596 val->ch = val->i64;
7597 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7598 val->kind = ZEND_FFI_VAL_CHAR;
7599 val->ch = val->d;
7600 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7602 val->kind = ZEND_FFI_VAL_ERROR;
7606 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7607 val->kind = ZEND_FFI_VAL_UINT32;
7608 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7609 val->kind = ZEND_FFI_VAL_UINT32;
7610 val->u64 = val->d;
7611 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7612 val->kind = ZEND_FFI_VAL_UINT32;
7613 val->u64 = val->ch;
7615 val->kind = ZEND_FFI_VAL_ERROR;
7619 val->kind = ZEND_FFI_VAL_ERROR;
7626 void zend_ffi_expr_plus(zend_ffi_val *val) /* {{{ */ argument
7628 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7629 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7630 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7631 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7633 val->kind = ZEND_FFI_VAL_ERROR;
7638 void zend_ffi_expr_neg(zend_ffi_val *val) /* {{{ */ argument
7640 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7641 val->u64 = -val->u64;
7642 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7643 val->i64 = -val->i64;
7644 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7645 val->d = -val->d;
7646 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7647 val->ch = -val->ch;
7649 val->kind = ZEND_FFI_VAL_ERROR;
7654 void zend_ffi_expr_bw_not(zend_ffi_val *val) /* {{{ */ argument
7656 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7657 val->u64 = ~val->u64;
7658 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7659 val->i64 = ~val->i64;
7660 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7661 val->ch = ~val->ch;
7663 val->kind = ZEND_FFI_VAL_ERROR;
7668 void zend_ffi_expr_bool_not(zend_ffi_val *val) /* {{{ */ argument
7670 zend_ffi_expr_bool(val);
7671 if (val->kind == ZEND_FFI_VAL_INT32) {
7672 val->i64 = !val->i64;
7677 void zend_ffi_expr_sizeof_val(zend_ffi_val *val) /* {{{ */ argument
7679 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_INT32) {
7680 val->kind = ZEND_FFI_VAL_UINT32;
7681 val->u64 = zend_ffi_type_uint32.size;
7682 } else if (val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_VAL_INT64) {
7683 val->kind = ZEND_FFI_VAL_UINT32;
7684 val->u64 = zend_ffi_type_uint64.size;
7685 } else if (val->kind == ZEND_FFI_VAL_FLOAT) {
7686 val->kind = ZEND_FFI_VAL_UINT32;
7687 val->u64 = zend_ffi_type_float.size;
7688 } else if (val->kind == ZEND_FFI_VAL_DOUBLE) {
7689 val->kind = ZEND_FFI_VAL_UINT32;
7690 val->u64 = zend_ffi_type_double.size;
7691 } else if (val->kind == ZEND_FFI_VAL_LONG_DOUBLE) {
7692 val->kind = ZEND_FFI_VAL_UINT32;
7694 val->u64 = zend_ffi_type_double.size;
7696 val->u64 = zend_ffi_type_long_double.size;
7698 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7699 val->kind = ZEND_FFI_VAL_UINT32;
7700 val->u64 = zend_ffi_type_char.size;
7701 } else if (val->kind == ZEND_FFI_VAL_STRING) {
7702 if (memchr(val->str, '\\', val->len)) {
7704 val->kind = ZEND_FFI_VAL_ERROR;
7706 val->kind = ZEND_FFI_VAL_UINT32;
7707 val->u64 = val->len + 1;
7710 val->kind = ZEND_FFI_VAL_ERROR;
7715 void zend_ffi_expr_sizeof_type(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7721 val->kind = (type->size > 0xffffffff) ? ZEND_FFI_VAL_UINT64 : ZEND_FFI_VAL_UINT32;
7722 val->u64 = type->size;
7727 void zend_ffi_expr_alignof_val(zend_ffi_val *val) /* {{{ */ argument
7729 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_INT32) {
7730 val->kind = ZEND_FFI_VAL_UINT32;
7731 val->u64 = zend_ffi_type_uint32.align;
7732 } else if (val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_VAL_INT64) {
7733 val->kind = ZEND_FFI_VAL_UINT32;
7734 val->u64 = zend_ffi_type_uint64.align;
7735 } else if (val->kind == ZEND_FFI_VAL_FLOAT) {
7736 val->kind = ZEND_FFI_VAL_UINT32;
7737 val->u64 = zend_ffi_type_float.align;
7738 } else if (val->kind == ZEND_FFI_VAL_DOUBLE) {
7739 val->kind = ZEND_FFI_VAL_UINT32;
7740 val->u64 = zend_ffi_type_double.align;
7742 } else if (val->kind == ZEND_FFI_VAL_LONG_DOUBLE) {
7743 val->kind = ZEND_FFI_VAL_UINT32;
7744 val->u64 = zend_ffi_type_long_double.align;
7746 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7747 val->kind = ZEND_FFI_VAL_UINT32;
7748 val->u64 = zend_ffi_type_char.size;
7749 } else if (val->kind == ZEND_FFI_VAL_STRING) {
7750 val->kind = ZEND_FFI_VAL_UINT32;
7751 val->u64 = _Alignof(char*);
7753 val->kind = ZEND_FFI_VAL_ERROR;
7758 void zend_ffi_expr_alignof_type(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7761 val->kind = ZEND_FFI_VAL_UINT32;
7762 val->u64 = ZEND_FFI_TYPE(dcl->type)->align;
7767 void zend_ffi_val_number(zend_ffi_val *val, int base, const char *str, size_t str_len) /* {{{ */ argument
7792 val->u64 = strtoull(str, NULL, base);
7794 val->kind = ZEND_FFI_VAL_UINT32;
7796 val->kind = (sizeof(long) == 4) ? ZEND_FFI_VAL_UINT32 : ZEND_FFI_VAL_UINT64;
7798 val->kind = ZEND_FFI_VAL_UINT64;
7801 val->i64 = strtoll(str, NULL, base);
7803 val->kind = ZEND_FFI_VAL_INT32;
7805 val->kind = (sizeof(long) == 4) ? ZEND_FFI_VAL_INT32 : ZEND_FFI_VAL_INT64;
7807 val->kind = ZEND_FFI_VAL_INT64;
7813 void zend_ffi_val_float_number(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7815 val->d = strtold(str, NULL);
7817 val->kind = ZEND_FFI_VAL_FLOAT;
7819 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7821 val->kind = ZEND_FFI_VAL_DOUBLE;
7826 void zend_ffi_val_string(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7829 val->kind = ZEND_FFI_VAL_ERROR;
7831 val->kind = ZEND_FFI_VAL_STRING;
7832 val->str = str + 1;
7833 val->len = str_len - 2;
7838 void zend_ffi_val_character(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7843 val->kind = ZEND_FFI_VAL_ERROR;
7845 val->kind = ZEND_FFI_VAL_CHAR;
7847 val->ch = str[1];
7851 val->ch = '\b';
7853 val->ch = '\f';
7855 val->ch = '\n';
7857 val->ch = '\r';
7859 val->ch = '\t';
7861 val->ch = '\v';
7869 val->kind = ZEND_FFI_VAL_ERROR;
7872 val->kind = ZEND_FFI_VAL_ERROR;
7875 val->ch = n;
7877 val->kind = ZEND_FFI_VAL_ERROR;
7887 val->kind = ZEND_FFI_VAL_ERROR;
7897 val->kind = ZEND_FFI_VAL_ERROR;
7900 val->ch = n;
7902 val->ch = str[2];
7904 val->kind = ZEND_FFI_VAL_ERROR;
7907 val->kind = ZEND_FFI_VAL_ERROR;