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()
3154 while (Z_TYPE(b->val) == IS_UNDEF) { in zend_ffi_same_types()
3165 field = Z_PTR(b->val); in zend_ffi_same_types()
4262 zval *val; in ZEND_METHOD() local
4299 ZEND_HASH_REVERSE_FOREACH_VAL(dims, val) { in ZEND_METHOD()
4300 zend_long n = zval_get_long(val); in ZEND_METHOD()
5915 void zend_ffi_resolve_const(const char *name, size_t name_len, zend_ffi_val *val) /* {{{ */ argument
5920 val->kind = ZEND_FFI_VAL_NAME;
5921 val->str = name;
5922 val->len = name_len;
5927 val->i64 = sym->value;
5932 val->kind = ZEND_FFI_VAL_INT32;
5935 val->kind = ZEND_FFI_VAL_INT64;
5940 val->kind = ZEND_FFI_VAL_UINT32;
5943 val->kind = ZEND_FFI_VAL_UINT64;
5951 val->kind = ZEND_FFI_VAL_ERROR;
5975 …l(zend_ffi_dcl *enum_dcl, const char *name, size_t name_len, zend_ffi_val *val, int64_t *min, int6… argument
5989 if (val->kind == ZEND_FFI_VAL_EMPTY) {
6001 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
6002 if (!is_signed && val->ch < 0) {
6009 value = val->ch;
6010 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
6011 if (!is_signed && val->i64 < 0) {
6018 value = val->i64;
6019 } else if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
6020 if (is_signed && val->u64 > 0x7FFFFFFFFFFFFFFFULL) {
6023 value = val->u64;
6924 …ute_value(zend_ffi_dcl *dcl, const char *name, size_t name_len, int n, zend_ffi_val *val) /* {{{ */ argument
6957 …&& (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_V…
6958 && val->i64 == 3) {
6966 …&& (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_V…
6967 && val->i64 > 0 && val->i64 <= 0x80000000 && (val->i64 & (val->i64 - 1)) == 0) {
6968 dcl->align = val->i64;
6975 && (val->kind == ZEND_FFI_VAL_NAME)) {
6976 const char *str = val->str;
6977 size_t len = val->len;
7039 …_attribute_value(zend_ffi_dcl *dcl, const char *name, size_t name_len, zend_ffi_val *val) /* {{{ */ argument
7042 …if ((val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_…
7043 && val->i64 > 0 && val->i64 <= 0x80000000 && (val->i64 & (val->i64 - 1)) == 0) {
7044 dcl->align = val->i64;
7153 #define zend_ffi_expr_bool(val) do { \ argument
7154 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7155 val->kind = ZEND_FFI_VAL_INT32; \
7156 val->i64 = !!val->u64; \
7157 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7158 val->kind = ZEND_FFI_VAL_INT32; \
7159 val->i64 = !!val->i64; \
7160 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7161 val->kind = ZEND_FFI_VAL_INT32; \
7162 val->i64 = !!val->d; \
7163 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7164 val->kind = ZEND_FFI_VAL_INT32; \
7165 val->i64 = !!val->ch; \
7167 val->kind = ZEND_FFI_VAL_ERROR; \
7171 #define zend_ffi_expr_math(val, op2, OP) do { \ argument
7172 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7174 val->kind = MAX(val->kind, op2->kind); \
7175 val->u64 = val->u64 OP op2->u64; \
7177 val->u64 = val->u64 OP op2->i64; \
7179 val->u64 = val->u64 OP op2->i64; \
7181 val->kind = op2->kind; \
7182 val->d = (zend_ffi_double)val->u64 OP op2->d; \
7184 val->u64 = val->u64 OP op2->ch; \
7186 val->kind = ZEND_FFI_VAL_ERROR; \
7188 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7190 val->i64 = val->i64 OP op2->u64; \
7192 val->i64 = val->i64 OP op2->u64; \
7194 val->kind = MAX(val->kind, op2->kind); \
7195 val->i64 = val->i64 OP op2->i64; \
7197 val->kind = op2->kind; \
7198 val->d = (zend_ffi_double)val->i64 OP op2->d; \
7200 val->i64 = val->i64 OP op2->ch; \
7202 val->kind = ZEND_FFI_VAL_ERROR; \
7204 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7206 val->d = val->d OP (zend_ffi_double)op2->u64; \
7208 val->d = val->d OP (zend_ffi_double)op2->i64; \
7210 val->kind = MAX(val->kind, op2->kind); \
7211 val->d = val->d OP op2->d; \
7213 val->d = val->d OP (zend_ffi_double)op2->ch; \
7215 val->kind = ZEND_FFI_VAL_ERROR; \
7217 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7219 val->kind = op2->kind; \
7220 val->u64 = val->ch OP op2->u64; \
7222 val->kind = ZEND_FFI_VAL_INT64; \
7223 val->i64 = val->ch OP op2->i64; \
7225 val->kind = op2->kind; \
7226 val->d = (zend_ffi_double)val->ch OP op2->d; \
7228 val->ch = val->ch OP op2->ch; \
7230 val->kind = ZEND_FFI_VAL_ERROR; \
7233 val->kind = ZEND_FFI_VAL_ERROR; \
7237 #define zend_ffi_expr_int_math(val, op2, OP) do { \ argument
7238 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7240 val->kind = MAX(val->kind, op2->kind); \
7241 val->u64 = val->u64 OP op2->u64; \
7243 val->u64 = val->u64 OP op2->i64; \
7245 val->u64 = val->u64 OP op2->i64; \
7247 val->u64 = val->u64 OP (uint64_t)op2->d; \
7249 val->u64 = val->u64 OP op2->ch; \
7251 val->kind = ZEND_FFI_VAL_ERROR; \
7253 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7255 val->i64 = val->i64 OP op2->u64; \
7257 val->i64 = val->i64 OP op2->u64; \
7259 val->kind = MAX(val->kind, op2->kind); \
7260 val->i64 = val->i64 OP op2->i64; \
7262 val->u64 = val->u64 OP (int64_t)op2->d; \
7264 val->i64 = val->i64 OP op2->ch; \
7266 val->kind = ZEND_FFI_VAL_ERROR; \
7268 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7270 val->kind = op2->kind; \
7271 val->u64 = (uint64_t)val->d OP op2->u64; \
7273 val->kind = op2->kind; \
7274 val->i64 = (int64_t)val->d OP op2->i64; \
7276 val->kind = ZEND_FFI_VAL_ERROR; \
7278 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7280 val->kind = op2->kind; \
7281 val->u64 = (uint64_t)val->ch OP op2->u64; \
7283 val->kind = op2->kind; \
7284 val->i64 = (int64_t)val->ch OP op2->u64; \
7286 val->ch = val->ch OP op2->ch; \
7288 val->kind = ZEND_FFI_VAL_ERROR; \
7291 val->kind = ZEND_FFI_VAL_ERROR; \
7295 #define zend_ffi_expr_cmp(val, op2, OP) do { \ argument
7296 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
7298 val->kind = ZEND_FFI_VAL_INT32; \
7299 val->i64 = val->u64 OP op2->u64; \
7301 val->kind = ZEND_FFI_VAL_INT32; \
7302 val->i64 = val->u64 OP op2->u64; /*signed/unsigned */ \
7304 val->kind = ZEND_FFI_VAL_INT32; \
7305 val->i64 = (zend_ffi_double)val->u64 OP op2->d; \
7307 val->kind = ZEND_FFI_VAL_INT32; \
7308 val->i64 = val->u64 OP op2->d; \
7310 val->kind = ZEND_FFI_VAL_ERROR; \
7312 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
7314 val->kind = ZEND_FFI_VAL_INT32; \
7315 val->i64 = val->i64 OP op2->i64; /* signed/unsigned */ \
7317 val->kind = ZEND_FFI_VAL_INT32; \
7318 val->i64 = val->i64 OP op2->i64; \
7320 val->kind = ZEND_FFI_VAL_INT32; \
7321 val->i64 = (zend_ffi_double)val->i64 OP op2->d; \
7323 val->kind = ZEND_FFI_VAL_INT32; \
7324 val->i64 = val->i64 OP op2->ch; \
7326 val->kind = ZEND_FFI_VAL_ERROR; \
7328 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7330 val->kind = ZEND_FFI_VAL_INT32; \
7331 val->i64 = val->d OP (zend_ffi_double)op2->u64; \
7333 val->kind = ZEND_FFI_VAL_INT32; \
7334 val->i64 = val->d OP (zend_ffi_double)op2->i64; \
7336 val->kind = ZEND_FFI_VAL_INT32; \
7337 val->i64 = val->d OP op2->d; \
7339 val->kind = ZEND_FFI_VAL_INT32; \
7340 val->i64 = val->d OP (zend_ffi_double)op2->ch; \
7342 val->kind = ZEND_FFI_VAL_ERROR; \
7344 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
7346 val->kind = ZEND_FFI_VAL_INT32; \
7347 val->i64 = val->ch OP op2->i64; /* signed/unsigned */ \
7349 val->kind = ZEND_FFI_VAL_INT32; \
7350 val->i64 = val->ch OP op2->i64; \
7352 val->kind = ZEND_FFI_VAL_INT32; \
7353 val->i64 = (zend_ffi_double)val->ch OP op2->d; \
7355 val->kind = ZEND_FFI_VAL_INT32; \
7356 val->i64 = val->ch OP op2->ch; \
7358 val->kind = ZEND_FFI_VAL_ERROR; \
7361 val->kind = ZEND_FFI_VAL_ERROR; \
7365 void zend_ffi_expr_conditional(zend_ffi_val *val, zend_ffi_val *op2, zend_ffi_val *op3) /* {{{ */ argument
7367 zend_ffi_expr_bool(val);
7368 if (val->kind == ZEND_FFI_VAL_INT32) {
7369 if (val->i64) {
7370 *val = *op2;
7372 *val = *op3;
7378 void zend_ffi_expr_bool_or(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7380 zend_ffi_expr_bool(val);
7382 if (val->kind == ZEND_FFI_VAL_INT32 && op2->kind == ZEND_FFI_VAL_INT32) {
7383 val->i64 = val->i64 || op2->i64;
7385 val->kind = ZEND_FFI_VAL_ERROR;
7390 void zend_ffi_expr_bool_and(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7392 zend_ffi_expr_bool(val);
7394 if (val->kind == ZEND_FFI_VAL_INT32 && op2->kind == ZEND_FFI_VAL_INT32) {
7395 val->i64 = val->i64 && op2->i64;
7397 val->kind = ZEND_FFI_VAL_ERROR;
7402 void zend_ffi_expr_bw_or(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7404 zend_ffi_expr_int_math(val, op2, |);
7408 void zend_ffi_expr_bw_xor(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7410 zend_ffi_expr_int_math(val, op2, ^);
7414 void zend_ffi_expr_bw_and(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7416 zend_ffi_expr_int_math(val, op2, &);
7420 void zend_ffi_expr_is_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7422 zend_ffi_expr_cmp(val, op2, ==);
7426 void zend_ffi_expr_is_not_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7428 zend_ffi_expr_cmp(val, op2, !=);
7432 void zend_ffi_expr_is_less(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7434 zend_ffi_expr_cmp(val, op2, <);
7438 void zend_ffi_expr_is_greater(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7440 zend_ffi_expr_cmp(val, op2, >);
7444 void zend_ffi_expr_is_less_or_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7446 zend_ffi_expr_cmp(val, op2, <=);
7450 void zend_ffi_expr_is_greater_or_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7452 zend_ffi_expr_cmp(val, op2, >=);
7456 void zend_ffi_expr_shift_left(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7458 zend_ffi_expr_int_math(val, op2, <<);
7462 void zend_ffi_expr_shift_right(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7464 zend_ffi_expr_int_math(val, op2, >>);
7468 void zend_ffi_expr_add(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7470 zend_ffi_expr_math(val, op2, +);
7474 void zend_ffi_expr_sub(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7476 zend_ffi_expr_math(val, op2, -);
7480 void zend_ffi_expr_mul(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7482 zend_ffi_expr_math(val, op2, *);
7486 void zend_ffi_expr_div(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7488 zend_ffi_expr_math(val, op2, /);
7492 void zend_ffi_expr_mod(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7494 zend_ffi_expr_int_math(val, op2, %); // ???
7498 void zend_ffi_expr_cast(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7503 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7504 val->kind = ZEND_FFI_VAL_FLOAT;
7505 val->d = val->u64;
7506 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7507 val->kind = ZEND_FFI_VAL_FLOAT;
7508 val->d = val->i64;
7509 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7510 val->kind = ZEND_FFI_VAL_FLOAT;
7511 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7512 val->kind = ZEND_FFI_VAL_FLOAT;
7513 val->d = val->ch;
7515 val->kind = ZEND_FFI_VAL_ERROR;
7519 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7520 val->kind = ZEND_FFI_VAL_DOUBLE;
7521 val->d = val->u64;
7522 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7523 val->kind = ZEND_FFI_VAL_DOUBLE;
7524 val->d = val->i64;
7525 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7526 val->kind = ZEND_FFI_VAL_DOUBLE;
7527 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7528 val->kind = ZEND_FFI_VAL_DOUBLE;
7529 val->d = val->ch;
7531 val->kind = ZEND_FFI_VAL_ERROR;
7536 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7537 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7538 val->d = val->u64;
7539 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7540 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7541 val->d = val->i64;
7542 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7543 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7544 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7545 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7546 val->d = val->ch;
7548 val->kind = ZEND_FFI_VAL_ERROR;
7556 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7557 val->kind = ZEND_FFI_VAL_UINT32;
7558 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7559 val->kind = ZEND_FFI_VAL_UINT32;
7560 val->u64 = val->d;
7561 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7562 val->kind = ZEND_FFI_VAL_UINT32;
7563 val->u64 = val->ch;
7565 val->kind = ZEND_FFI_VAL_ERROR;
7571 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7572 val->kind = ZEND_FFI_VAL_INT32;
7573 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7574 val->kind = ZEND_FFI_VAL_INT32;
7575 val->i64 = val->d;
7576 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7577 val->kind = ZEND_FFI_VAL_INT32;
7578 val->i64 = val->ch;
7580 val->kind = ZEND_FFI_VAL_ERROR;
7584 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7585 val->kind = ZEND_FFI_VAL_UINT64;
7586 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7587 val->kind = ZEND_FFI_VAL_UINT64;
7588 val->u64 = val->d;
7589 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7590 val->kind = ZEND_FFI_VAL_UINT64;
7591 val->u64 = val->ch;
7593 val->kind = ZEND_FFI_VAL_ERROR;
7597 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7598 val->kind = ZEND_FFI_VAL_CHAR;
7599 val->ch = val->u64;
7600 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7601 val->kind = ZEND_FFI_VAL_CHAR;
7602 val->ch = val->i64;
7603 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7604 val->kind = ZEND_FFI_VAL_CHAR;
7605 val->ch = val->d;
7606 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7608 val->kind = ZEND_FFI_VAL_ERROR;
7612 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7613 val->kind = ZEND_FFI_VAL_UINT32;
7614 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7615 val->kind = ZEND_FFI_VAL_UINT32;
7616 val->u64 = val->d;
7617 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7618 val->kind = ZEND_FFI_VAL_UINT32;
7619 val->u64 = val->ch;
7621 val->kind = ZEND_FFI_VAL_ERROR;
7625 val->kind = ZEND_FFI_VAL_ERROR;
7632 void zend_ffi_expr_plus(zend_ffi_val *val) /* {{{ */ argument
7634 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7635 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7636 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7637 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7639 val->kind = ZEND_FFI_VAL_ERROR;
7644 void zend_ffi_expr_neg(zend_ffi_val *val) /* {{{ */ argument
7646 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7647 val->u64 = -val->u64;
7648 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7649 val->i64 = -val->i64;
7650 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7651 val->d = -val->d;
7652 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7653 val->ch = -val->ch;
7655 val->kind = ZEND_FFI_VAL_ERROR;
7660 void zend_ffi_expr_bw_not(zend_ffi_val *val) /* {{{ */ argument
7662 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7663 val->u64 = ~val->u64;
7664 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7665 val->i64 = ~val->i64;
7666 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7667 val->ch = ~val->ch;
7669 val->kind = ZEND_FFI_VAL_ERROR;
7674 void zend_ffi_expr_bool_not(zend_ffi_val *val) /* {{{ */ argument
7676 zend_ffi_expr_bool(val);
7677 if (val->kind == ZEND_FFI_VAL_INT32) {
7678 val->i64 = !val->i64;
7683 void zend_ffi_expr_sizeof_val(zend_ffi_val *val) /* {{{ */ argument
7685 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_INT32) {
7686 val->kind = ZEND_FFI_VAL_UINT32;
7687 val->u64 = zend_ffi_type_uint32.size;
7688 } else if (val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_VAL_INT64) {
7689 val->kind = ZEND_FFI_VAL_UINT32;
7690 val->u64 = zend_ffi_type_uint64.size;
7691 } else if (val->kind == ZEND_FFI_VAL_FLOAT) {
7692 val->kind = ZEND_FFI_VAL_UINT32;
7693 val->u64 = zend_ffi_type_float.size;
7694 } else if (val->kind == ZEND_FFI_VAL_DOUBLE) {
7695 val->kind = ZEND_FFI_VAL_UINT32;
7696 val->u64 = zend_ffi_type_double.size;
7697 } else if (val->kind == ZEND_FFI_VAL_LONG_DOUBLE) {
7698 val->kind = ZEND_FFI_VAL_UINT32;
7700 val->u64 = zend_ffi_type_double.size;
7702 val->u64 = zend_ffi_type_long_double.size;
7704 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7705 val->kind = ZEND_FFI_VAL_UINT32;
7706 val->u64 = zend_ffi_type_char.size;
7707 } else if (val->kind == ZEND_FFI_VAL_STRING) {
7708 if (memchr(val->str, '\\', val->len)) {
7710 val->kind = ZEND_FFI_VAL_ERROR;
7712 val->kind = ZEND_FFI_VAL_UINT32;
7713 val->u64 = val->len + 1;
7716 val->kind = ZEND_FFI_VAL_ERROR;
7721 void zend_ffi_expr_sizeof_type(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7727 val->kind = (type->size > 0xffffffff) ? ZEND_FFI_VAL_UINT64 : ZEND_FFI_VAL_UINT32;
7728 val->u64 = type->size;
7733 void zend_ffi_expr_alignof_val(zend_ffi_val *val) /* {{{ */ argument
7735 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_INT32) {
7736 val->kind = ZEND_FFI_VAL_UINT32;
7737 val->u64 = zend_ffi_type_uint32.align;
7738 } else if (val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_VAL_INT64) {
7739 val->kind = ZEND_FFI_VAL_UINT32;
7740 val->u64 = zend_ffi_type_uint64.align;
7741 } else if (val->kind == ZEND_FFI_VAL_FLOAT) {
7742 val->kind = ZEND_FFI_VAL_UINT32;
7743 val->u64 = zend_ffi_type_float.align;
7744 } else if (val->kind == ZEND_FFI_VAL_DOUBLE) {
7745 val->kind = ZEND_FFI_VAL_UINT32;
7746 val->u64 = zend_ffi_type_double.align;
7748 } else if (val->kind == ZEND_FFI_VAL_LONG_DOUBLE) {
7749 val->kind = ZEND_FFI_VAL_UINT32;
7750 val->u64 = zend_ffi_type_long_double.align;
7752 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7753 val->kind = ZEND_FFI_VAL_UINT32;
7754 val->u64 = zend_ffi_type_char.size;
7755 } else if (val->kind == ZEND_FFI_VAL_STRING) {
7756 val->kind = ZEND_FFI_VAL_UINT32;
7757 val->u64 = _Alignof(char*);
7759 val->kind = ZEND_FFI_VAL_ERROR;
7764 void zend_ffi_expr_alignof_type(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7767 val->kind = ZEND_FFI_VAL_UINT32;
7768 val->u64 = ZEND_FFI_TYPE(dcl->type)->align;
7773 void zend_ffi_val_number(zend_ffi_val *val, int base, const char *str, size_t str_len) /* {{{ */ argument
7798 val->u64 = strtoull(str, NULL, base);
7800 val->kind = ZEND_FFI_VAL_UINT32;
7802 val->kind = (sizeof(long) == 4) ? ZEND_FFI_VAL_UINT32 : ZEND_FFI_VAL_UINT64;
7804 val->kind = ZEND_FFI_VAL_UINT64;
7807 val->i64 = strtoll(str, NULL, base);
7809 val->kind = ZEND_FFI_VAL_INT32;
7811 val->kind = (sizeof(long) == 4) ? ZEND_FFI_VAL_INT32 : ZEND_FFI_VAL_INT64;
7813 val->kind = ZEND_FFI_VAL_INT64;
7819 void zend_ffi_val_float_number(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7821 val->d = strtold(str, NULL);
7823 val->kind = ZEND_FFI_VAL_FLOAT;
7825 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7827 val->kind = ZEND_FFI_VAL_DOUBLE;
7832 void zend_ffi_val_string(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7835 val->kind = ZEND_FFI_VAL_ERROR;
7837 val->kind = ZEND_FFI_VAL_STRING;
7838 val->str = str + 1;
7839 val->len = str_len - 2;
7844 void zend_ffi_val_character(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7849 val->kind = ZEND_FFI_VAL_ERROR;
7851 val->kind = ZEND_FFI_VAL_CHAR;
7853 val->ch = str[1];
7857 val->ch = '\b';
7859 val->ch = '\f';
7861 val->ch = '\n';
7863 val->ch = '\r';
7865 val->ch = '\t';
7867 val->ch = '\v';
7875 val->kind = ZEND_FFI_VAL_ERROR;
7878 val->kind = ZEND_FFI_VAL_ERROR;
7881 val->ch = n;
7883 val->kind = ZEND_FFI_VAL_ERROR;
7893 val->kind = ZEND_FFI_VAL_ERROR;
7903 val->kind = ZEND_FFI_VAL_ERROR;
7906 val->ch = n;
7908 val->ch = str[2];
7910 val->kind = ZEND_FFI_VAL_ERROR;
7913 val->kind = ZEND_FFI_VAL_ERROR;