Lines Matching refs:val

585 	uint64_t val = 0;  in zend_ffi_bit_field_read()  local
597 val = (*p++ >> pos) & mask; in zend_ffi_bit_field_read()
603 val |= *p++ << insert_pos; in zend_ffi_bit_field_read()
611 val |= (*p & mask) << insert_pos; in zend_ffi_bit_field_read()
614 return val; in zend_ffi_bit_field_read()
620 uint64_t val = zend_ffi_bit_field_read(ptr, field); in zend_ffi_bit_field_to_zval() local
629 val = (int64_t)(val << shift) >> shift; in zend_ffi_bit_field_to_zval()
632 ZVAL_LONG(rv, val); in zend_ffi_bit_field_to_zval()
638 uint64_t val = zval_get_long(value); in zend_ffi_zval_to_bit_field() local
649 *p = (*p & ~mask) | ((val << pos) & mask); in zend_ffi_zval_to_bit_field()
657 *p = (*p & ~mask) | ((val << pos) & mask); in zend_ffi_zval_to_bit_field()
659 val >>= num_bits; in zend_ffi_zval_to_bit_field()
664 *p++ = val; in zend_ffi_zval_to_bit_field()
665 val >>= 8; in zend_ffi_zval_to_bit_field()
672 *p = (*p & ~mask) | (val & mask); in zend_ffi_zval_to_bit_field()
3001 while (Z_TYPE(b->val) == IS_UNDEF) { in zend_ffi_same_types()
3012 field = Z_PTR(b->val); in zend_ffi_same_types()
3035 while (Z_TYPE(b->val) == IS_UNDEF) { in zend_ffi_same_types()
3038 if (!zend_ffi_same_types(ZEND_FFI_TYPE(arg_type), ZEND_FFI_TYPE(Z_PTR(b->val)))) { in zend_ffi_same_types()
4076 zval *val; in ZEND_METHOD() local
4113 ZEND_HASH_REVERSE_FOREACH_VAL(dims, val) { in ZEND_METHOD()
4114 zend_long n = zval_get_long(val); in ZEND_METHOD()
5407 void zend_ffi_resolve_const(const char *name, size_t name_len, zend_ffi_val *val) /* {{{ */ argument
5412 val->kind = ZEND_FFI_VAL_NAME;
5413 val->str = name;
5414 val->len = name_len;
5419 val->i64 = sym->value;
5424 val->kind = ZEND_FFI_VAL_INT32;
5427 val->kind = ZEND_FFI_VAL_INT64;
5432 val->kind = ZEND_FFI_VAL_UINT32;
5435 val->kind = ZEND_FFI_VAL_UINT64;
5443 val->kind = ZEND_FFI_VAL_ERROR;
5467 …l(zend_ffi_dcl *enum_dcl, const char *name, size_t name_len, zend_ffi_val *val, int64_t *min, int6… argument
5481 if (val->kind == ZEND_FFI_VAL_EMPTY) {
5493 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
5494 if (!is_signed && val->ch < 0) {
5501 value = val->ch;
5502 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
5503 if (!is_signed && val->i64 < 0) {
5510 value = val->i64;
5511 } else if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
5512 if (is_signed && val->u64 > 0x7FFFFFFFFFFFFFFFULL) {
5515 value = val->u64;
6416 …ute_value(zend_ffi_dcl *dcl, const char *name, size_t name_len, int n, zend_ffi_val *val) /* {{{ */ argument
6449 …&& (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_V…
6450 && val->i64 == 3) {
6458 …&& (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_V…
6459 && val->i64 > 0 && val->i64 <= 0x80000000 && (val->i64 & (val->i64 - 1)) == 0) {
6460 dcl->align = val->i64;
6467 && (val->kind == ZEND_FFI_VAL_NAME)) {
6468 const char *str = val->str;
6469 size_t len = val->len;
6531 …_attribute_value(zend_ffi_dcl *dcl, const char *name, size_t name_len, zend_ffi_val *val) /* {{{ */ argument
6534 …if ((val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_…
6535 && val->i64 > 0 && val->i64 <= 0x80000000 && (val->i64 & (val->i64 - 1)) == 0) {
6536 dcl->align = val->i64;
6645 #define zend_ffi_expr_bool(val) do { \ argument
6646 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
6647 val->kind = ZEND_FFI_VAL_INT32; \
6648 val->i64 = !!val->u64; \
6649 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
6650 val->kind = ZEND_FFI_VAL_INT32; \
6651 val->i64 = !!val->i64; \
6652 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
6653 val->kind = ZEND_FFI_VAL_INT32; \
6654 val->i64 = !!val->d; \
6655 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
6656 val->kind = ZEND_FFI_VAL_INT32; \
6657 val->i64 = !!val->ch; \
6659 val->kind = ZEND_FFI_VAL_ERROR; \
6663 #define zend_ffi_expr_math(val, op2, OP) do { \ argument
6664 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
6666 val->kind = MAX(val->kind, op2->kind); \
6667 val->u64 = val->u64 OP op2->u64; \
6669 val->u64 = val->u64 OP op2->i64; \
6671 val->u64 = val->u64 OP op2->i64; \
6673 val->kind = op2->kind; \
6674 val->d = (zend_ffi_double)val->u64 OP op2->d; \
6676 val->u64 = val->u64 OP op2->ch; \
6678 val->kind = ZEND_FFI_VAL_ERROR; \
6680 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
6682 val->i64 = val->i64 OP op2->u64; \
6684 val->i64 = val->i64 OP op2->u64; \
6686 val->kind = MAX(val->kind, op2->kind); \
6687 val->i64 = val->i64 OP op2->i64; \
6689 val->kind = op2->kind; \
6690 val->d = (zend_ffi_double)val->i64 OP op2->d; \
6692 val->i64 = val->i64 OP op2->ch; \
6694 val->kind = ZEND_FFI_VAL_ERROR; \
6696 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
6698 val->d = val->d OP (zend_ffi_double)op2->u64; \
6700 val->d = val->d OP (zend_ffi_double)op2->i64; \
6702 val->kind = MAX(val->kind, op2->kind); \
6703 val->d = val->d OP op2->d; \
6705 val->d = val->d OP (zend_ffi_double)op2->ch; \
6707 val->kind = ZEND_FFI_VAL_ERROR; \
6709 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
6711 val->kind = op2->kind; \
6712 val->u64 = val->ch OP op2->u64; \
6714 val->kind = ZEND_FFI_VAL_INT64; \
6715 val->i64 = val->ch OP op2->i64; \
6717 val->kind = op2->kind; \
6718 val->d = (zend_ffi_double)val->ch OP op2->d; \
6720 val->ch = val->ch OP op2->ch; \
6722 val->kind = ZEND_FFI_VAL_ERROR; \
6725 val->kind = ZEND_FFI_VAL_ERROR; \
6729 #define zend_ffi_expr_int_math(val, op2, OP) do { \ argument
6730 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
6732 val->kind = MAX(val->kind, op2->kind); \
6733 val->u64 = val->u64 OP op2->u64; \
6735 val->u64 = val->u64 OP op2->i64; \
6737 val->u64 = val->u64 OP op2->i64; \
6739 val->u64 = val->u64 OP (uint64_t)op2->d; \
6741 val->u64 = val->u64 OP op2->ch; \
6743 val->kind = ZEND_FFI_VAL_ERROR; \
6745 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
6747 val->i64 = val->i64 OP op2->u64; \
6749 val->i64 = val->i64 OP op2->u64; \
6751 val->kind = MAX(val->kind, op2->kind); \
6752 val->i64 = val->i64 OP op2->i64; \
6754 val->u64 = val->u64 OP (int64_t)op2->d; \
6756 val->i64 = val->i64 OP op2->ch; \
6758 val->kind = ZEND_FFI_VAL_ERROR; \
6760 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
6762 val->kind = op2->kind; \
6763 val->u64 = (uint64_t)val->d OP op2->u64; \
6765 val->kind = op2->kind; \
6766 val->i64 = (int64_t)val->d OP op2->i64; \
6768 val->kind = ZEND_FFI_VAL_ERROR; \
6770 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
6772 val->kind = op2->kind; \
6773 val->u64 = (uint64_t)val->ch OP op2->u64; \
6775 val->kind = op2->kind; \
6776 val->i64 = (int64_t)val->ch OP op2->u64; \
6778 val->ch = val->ch OP op2->ch; \
6780 val->kind = ZEND_FFI_VAL_ERROR; \
6783 val->kind = ZEND_FFI_VAL_ERROR; \
6787 #define zend_ffi_expr_cmp(val, op2, OP) do { \ argument
6788 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
6790 val->kind = ZEND_FFI_VAL_INT32; \
6791 val->i64 = val->u64 OP op2->u64; \
6793 val->kind = ZEND_FFI_VAL_INT32; \
6794 val->i64 = val->u64 OP op2->u64; /*signed/unsigned */ \
6796 val->kind = ZEND_FFI_VAL_INT32; \
6797 val->i64 = (zend_ffi_double)val->u64 OP op2->d; \
6799 val->kind = ZEND_FFI_VAL_INT32; \
6800 val->i64 = val->u64 OP op2->d; \
6802 val->kind = ZEND_FFI_VAL_ERROR; \
6804 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
6806 val->kind = ZEND_FFI_VAL_INT32; \
6807 val->i64 = val->i64 OP op2->i64; /* signed/unsigned */ \
6809 val->kind = ZEND_FFI_VAL_INT32; \
6810 val->i64 = val->i64 OP op2->i64; \
6812 val->kind = ZEND_FFI_VAL_INT32; \
6813 val->i64 = (zend_ffi_double)val->i64 OP op2->d; \
6815 val->kind = ZEND_FFI_VAL_INT32; \
6816 val->i64 = val->i64 OP op2->ch; \
6818 val->kind = ZEND_FFI_VAL_ERROR; \
6820 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
6822 val->kind = ZEND_FFI_VAL_INT32; \
6823 val->i64 = val->d OP (zend_ffi_double)op2->u64; \
6825 val->kind = ZEND_FFI_VAL_INT32; \
6826 val->i64 = val->d OP (zend_ffi_double)op2->i64; \
6828 val->kind = ZEND_FFI_VAL_INT32; \
6829 val->i64 = val->d OP op2->d; \
6831 val->kind = ZEND_FFI_VAL_INT32; \
6832 val->i64 = val->d OP (zend_ffi_double)op2->ch; \
6834 val->kind = ZEND_FFI_VAL_ERROR; \
6836 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
6838 val->kind = ZEND_FFI_VAL_INT32; \
6839 val->i64 = val->ch OP op2->i64; /* signed/unsigned */ \
6841 val->kind = ZEND_FFI_VAL_INT32; \
6842 val->i64 = val->ch OP op2->i64; \
6844 val->kind = ZEND_FFI_VAL_INT32; \
6845 val->i64 = (zend_ffi_double)val->ch OP op2->d; \
6847 val->kind = ZEND_FFI_VAL_INT32; \
6848 val->i64 = val->ch OP op2->ch; \
6850 val->kind = ZEND_FFI_VAL_ERROR; \
6853 val->kind = ZEND_FFI_VAL_ERROR; \
6857 void zend_ffi_expr_conditional(zend_ffi_val *val, zend_ffi_val *op2, zend_ffi_val *op3) /* {{{ */ argument
6859 zend_ffi_expr_bool(val);
6860 if (val->kind == ZEND_FFI_VAL_INT32) {
6861 if (val->i64) {
6862 *val = *op2;
6864 *val = *op3;
6870 void zend_ffi_expr_bool_or(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6872 zend_ffi_expr_bool(val);
6874 if (val->kind == ZEND_FFI_VAL_INT32 && op2->kind == ZEND_FFI_VAL_INT32) {
6875 val->i64 = val->i64 || op2->i64;
6877 val->kind = ZEND_FFI_VAL_ERROR;
6882 void zend_ffi_expr_bool_and(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6884 zend_ffi_expr_bool(val);
6886 if (val->kind == ZEND_FFI_VAL_INT32 && op2->kind == ZEND_FFI_VAL_INT32) {
6887 val->i64 = val->i64 && op2->i64;
6889 val->kind = ZEND_FFI_VAL_ERROR;
6894 void zend_ffi_expr_bw_or(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6896 zend_ffi_expr_int_math(val, op2, |);
6900 void zend_ffi_expr_bw_xor(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6902 zend_ffi_expr_int_math(val, op2, ^);
6906 void zend_ffi_expr_bw_and(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6908 zend_ffi_expr_int_math(val, op2, &);
6912 void zend_ffi_expr_is_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6914 zend_ffi_expr_cmp(val, op2, ==);
6918 void zend_ffi_expr_is_not_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6920 zend_ffi_expr_cmp(val, op2, !=);
6924 void zend_ffi_expr_is_less(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6926 zend_ffi_expr_cmp(val, op2, <);
6930 void zend_ffi_expr_is_greater(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6932 zend_ffi_expr_cmp(val, op2, >);
6936 void zend_ffi_expr_is_less_or_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6938 zend_ffi_expr_cmp(val, op2, <=);
6942 void zend_ffi_expr_is_greater_or_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6944 zend_ffi_expr_cmp(val, op2, >=);
6948 void zend_ffi_expr_shift_left(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6950 zend_ffi_expr_int_math(val, op2, <<);
6954 void zend_ffi_expr_shift_right(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6956 zend_ffi_expr_int_math(val, op2, >>);
6960 void zend_ffi_expr_add(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6962 zend_ffi_expr_math(val, op2, +);
6966 void zend_ffi_expr_sub(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6968 zend_ffi_expr_math(val, op2, -);
6972 void zend_ffi_expr_mul(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6974 zend_ffi_expr_math(val, op2, *);
6978 void zend_ffi_expr_div(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6980 zend_ffi_expr_math(val, op2, /);
6984 void zend_ffi_expr_mod(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6986 zend_ffi_expr_int_math(val, op2, %); // ???
6990 void zend_ffi_expr_cast(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
6995 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
6996 val->kind = ZEND_FFI_VAL_FLOAT;
6997 val->d = val->u64;
6998 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
6999 val->kind = ZEND_FFI_VAL_FLOAT;
7000 val->d = val->i64;
7001 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7002 val->kind = ZEND_FFI_VAL_FLOAT;
7003 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7004 val->kind = ZEND_FFI_VAL_FLOAT;
7005 val->d = val->ch;
7007 val->kind = ZEND_FFI_VAL_ERROR;
7011 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7012 val->kind = ZEND_FFI_VAL_DOUBLE;
7013 val->d = val->u64;
7014 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7015 val->kind = ZEND_FFI_VAL_DOUBLE;
7016 val->d = val->i64;
7017 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7018 val->kind = ZEND_FFI_VAL_DOUBLE;
7019 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7020 val->kind = ZEND_FFI_VAL_DOUBLE;
7021 val->d = val->ch;
7023 val->kind = ZEND_FFI_VAL_ERROR;
7028 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7029 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7030 val->d = val->u64;
7031 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7032 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7033 val->d = val->i64;
7034 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7035 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7036 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7037 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7038 val->d = val->ch;
7040 val->kind = ZEND_FFI_VAL_ERROR;
7048 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7049 val->kind = ZEND_FFI_VAL_UINT32;
7050 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7051 val->kind = ZEND_FFI_VAL_UINT32;
7052 val->u64 = val->d;
7053 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7054 val->kind = ZEND_FFI_VAL_UINT32;
7055 val->u64 = val->ch;
7057 val->kind = ZEND_FFI_VAL_ERROR;
7063 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7064 val->kind = ZEND_FFI_VAL_INT32;
7065 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7066 val->kind = ZEND_FFI_VAL_INT32;
7067 val->i64 = val->d;
7068 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7069 val->kind = ZEND_FFI_VAL_INT32;
7070 val->i64 = val->ch;
7072 val->kind = ZEND_FFI_VAL_ERROR;
7076 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7077 val->kind = ZEND_FFI_VAL_UINT64;
7078 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7079 val->kind = ZEND_FFI_VAL_UINT64;
7080 val->u64 = val->d;
7081 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7082 val->kind = ZEND_FFI_VAL_UINT64;
7083 val->u64 = val->ch;
7085 val->kind = ZEND_FFI_VAL_ERROR;
7089 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7090 val->kind = ZEND_FFI_VAL_CHAR;
7091 val->ch = val->u64;
7092 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7093 val->kind = ZEND_FFI_VAL_CHAR;
7094 val->ch = val->i64;
7095 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7096 val->kind = ZEND_FFI_VAL_CHAR;
7097 val->ch = val->d;
7098 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7100 val->kind = ZEND_FFI_VAL_ERROR;
7104 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7105 val->kind = ZEND_FFI_VAL_UINT32;
7106 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7107 val->kind = ZEND_FFI_VAL_UINT32;
7108 val->u64 = val->d;
7109 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7110 val->kind = ZEND_FFI_VAL_UINT32;
7111 val->u64 = val->ch;
7113 val->kind = ZEND_FFI_VAL_ERROR;
7117 val->kind = ZEND_FFI_VAL_ERROR;
7124 void zend_ffi_expr_plus(zend_ffi_val *val) /* {{{ */ argument
7126 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7127 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7128 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7129 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7131 val->kind = ZEND_FFI_VAL_ERROR;
7136 void zend_ffi_expr_neg(zend_ffi_val *val) /* {{{ */ argument
7138 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7139 val->u64 = -val->u64;
7140 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7141 val->i64 = -val->i64;
7142 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7143 val->d = -val->d;
7144 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7145 val->ch = -val->ch;
7147 val->kind = ZEND_FFI_VAL_ERROR;
7152 void zend_ffi_expr_bw_not(zend_ffi_val *val) /* {{{ */ argument
7154 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7155 val->u64 = ~val->u64;
7156 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7157 val->i64 = ~val->i64;
7158 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7159 val->ch = ~val->ch;
7161 val->kind = ZEND_FFI_VAL_ERROR;
7166 void zend_ffi_expr_bool_not(zend_ffi_val *val) /* {{{ */ argument
7168 zend_ffi_expr_bool(val);
7169 if (val->kind == ZEND_FFI_VAL_INT32) {
7170 val->i64 = !val->i64;
7175 void zend_ffi_expr_sizeof_val(zend_ffi_val *val) /* {{{ */ argument
7177 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_INT32) {
7178 val->kind = ZEND_FFI_VAL_UINT32;
7179 val->u64 = zend_ffi_type_uint32.size;
7180 } else if (val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_VAL_INT64) {
7181 val->kind = ZEND_FFI_VAL_UINT32;
7182 val->u64 = zend_ffi_type_uint64.size;
7183 } else if (val->kind == ZEND_FFI_VAL_FLOAT) {
7184 val->kind = ZEND_FFI_VAL_UINT32;
7185 val->u64 = zend_ffi_type_float.size;
7186 } else if (val->kind == ZEND_FFI_VAL_DOUBLE) {
7187 val->kind = ZEND_FFI_VAL_UINT32;
7188 val->u64 = zend_ffi_type_double.size;
7189 } else if (val->kind == ZEND_FFI_VAL_LONG_DOUBLE) {
7190 val->kind = ZEND_FFI_VAL_UINT32;
7192 val->u64 = zend_ffi_type_double.size;
7194 val->u64 = zend_ffi_type_long_double.size;
7196 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7197 val->kind = ZEND_FFI_VAL_UINT32;
7198 val->u64 = zend_ffi_type_char.size;
7199 } else if (val->kind == ZEND_FFI_VAL_STRING) {
7200 if (memchr(val->str, '\\', val->len)) {
7202 val->kind = ZEND_FFI_VAL_ERROR;
7204 val->kind = ZEND_FFI_VAL_UINT32;
7205 val->u64 = val->len + 1;
7208 val->kind = ZEND_FFI_VAL_ERROR;
7213 void zend_ffi_expr_sizeof_type(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7219 val->kind = (type->size > 0xffffffff) ? ZEND_FFI_VAL_UINT64 : ZEND_FFI_VAL_UINT32;
7220 val->u64 = type->size;
7225 void zend_ffi_expr_alignof_val(zend_ffi_val *val) /* {{{ */ argument
7227 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_INT32) {
7228 val->kind = ZEND_FFI_VAL_UINT32;
7229 val->u64 = zend_ffi_type_uint32.align;
7230 } else if (val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_VAL_INT64) {
7231 val->kind = ZEND_FFI_VAL_UINT32;
7232 val->u64 = zend_ffi_type_uint64.align;
7233 } else if (val->kind == ZEND_FFI_VAL_FLOAT) {
7234 val->kind = ZEND_FFI_VAL_UINT32;
7235 val->u64 = zend_ffi_type_float.align;
7236 } else if (val->kind == ZEND_FFI_VAL_DOUBLE) {
7237 val->kind = ZEND_FFI_VAL_UINT32;
7238 val->u64 = zend_ffi_type_double.align;
7240 } else if (val->kind == ZEND_FFI_VAL_LONG_DOUBLE) {
7241 val->kind = ZEND_FFI_VAL_UINT32;
7242 val->u64 = zend_ffi_type_long_double.align;
7244 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7245 val->kind = ZEND_FFI_VAL_UINT32;
7246 val->u64 = zend_ffi_type_char.size;
7247 } else if (val->kind == ZEND_FFI_VAL_STRING) {
7248 val->kind = ZEND_FFI_VAL_UINT32;
7249 val->u64 = _Alignof(char*);
7251 val->kind = ZEND_FFI_VAL_ERROR;
7256 void zend_ffi_expr_alignof_type(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7259 val->kind = ZEND_FFI_VAL_UINT32;
7260 val->u64 = ZEND_FFI_TYPE(dcl->type)->align;
7265 void zend_ffi_val_number(zend_ffi_val *val, int base, const char *str, size_t str_len) /* {{{ */ argument
7290 val->u64 = strtoull(str, NULL, base);
7292 val->kind = ZEND_FFI_VAL_UINT32;
7294 val->kind = (sizeof(long) == 4) ? ZEND_FFI_VAL_UINT32 : ZEND_FFI_VAL_UINT64;
7296 val->kind = ZEND_FFI_VAL_UINT64;
7299 val->i64 = strtoll(str, NULL, base);
7301 val->kind = ZEND_FFI_VAL_INT32;
7303 val->kind = (sizeof(long) == 4) ? ZEND_FFI_VAL_INT32 : ZEND_FFI_VAL_INT64;
7305 val->kind = ZEND_FFI_VAL_INT64;
7311 void zend_ffi_val_float_number(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7313 val->d = strtold(str, NULL);
7315 val->kind = ZEND_FFI_VAL_FLOAT;
7317 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7319 val->kind = ZEND_FFI_VAL_DOUBLE;
7324 void zend_ffi_val_string(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7327 val->kind = ZEND_FFI_VAL_ERROR;
7329 val->kind = ZEND_FFI_VAL_STRING;
7330 val->str = str + 1;
7331 val->len = str_len - 2;
7336 void zend_ffi_val_character(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7341 val->kind = ZEND_FFI_VAL_ERROR;
7343 val->kind = ZEND_FFI_VAL_CHAR;
7345 val->ch = str[1];
7349 val->ch = '\b';
7351 val->ch = '\f';
7353 val->ch = '\n';
7355 val->ch = '\r';
7357 val->ch = '\t';
7359 val->ch = '\v';
7367 val->kind = ZEND_FFI_VAL_ERROR;
7370 val->kind = ZEND_FFI_VAL_ERROR;
7373 val->ch = n;
7375 val->kind = ZEND_FFI_VAL_ERROR;
7385 val->kind = ZEND_FFI_VAL_ERROR;
7395 val->kind = ZEND_FFI_VAL_ERROR;
7398 val->ch = n;
7400 val->ch = str[2];
7402 val->kind = ZEND_FFI_VAL_ERROR;
7405 val->kind = ZEND_FFI_VAL_ERROR;