Lines Matching refs:val
562 uint64_t val = 0; in zend_ffi_bit_field_read() local
574 val = (*p++ >> pos) & mask; in zend_ffi_bit_field_read()
580 val |= *p++ << insert_pos; in zend_ffi_bit_field_read()
588 val |= (*p & mask) << insert_pos; in zend_ffi_bit_field_read()
591 return val; in zend_ffi_bit_field_read()
597 uint64_t val = zend_ffi_bit_field_read(ptr, field); in zend_ffi_bit_field_to_zval() local
606 val = (int64_t)(val << shift) >> shift; in zend_ffi_bit_field_to_zval()
609 ZVAL_LONG(rv, val); in zend_ffi_bit_field_to_zval()
615 uint64_t val = zval_get_long(value); in zend_ffi_zval_to_bit_field() local
626 *p = (*p & ~mask) | ((val << pos) & mask); in zend_ffi_zval_to_bit_field()
634 *p = (*p & ~mask) | ((val << pos) & mask); in zend_ffi_zval_to_bit_field()
636 val >>= num_bits; in zend_ffi_zval_to_bit_field()
641 *p++ = val; in zend_ffi_zval_to_bit_field()
642 val >>= 8; in zend_ffi_zval_to_bit_field()
649 *p = (*p & ~mask) | (val & mask); in zend_ffi_zval_to_bit_field()
2981 while (Z_TYPE(b->val) == IS_UNDEF) { in zend_ffi_same_types()
2992 field = Z_PTR(b->val); in zend_ffi_same_types()
3015 while (Z_TYPE(b->val) == IS_UNDEF) { in zend_ffi_same_types()
3018 if (!zend_ffi_same_types(ZEND_FFI_TYPE(arg_type), ZEND_FFI_TYPE(Z_PTR(b->val)))) { in zend_ffi_same_types()
4059 zval *val; in ZEND_METHOD() local
4096 ZEND_HASH_REVERSE_FOREACH_VAL(dims, val) { in ZEND_METHOD()
4097 zend_long n = zval_get_long(val); in ZEND_METHOD()
5481 void zend_ffi_resolve_const(const char *name, size_t name_len, zend_ffi_val *val) /* {{{ */ argument
5486 val->kind = ZEND_FFI_VAL_NAME;
5487 val->str = name;
5488 val->len = name_len;
5493 val->i64 = sym->value;
5498 val->kind = ZEND_FFI_VAL_INT32;
5501 val->kind = ZEND_FFI_VAL_INT64;
5506 val->kind = ZEND_FFI_VAL_UINT32;
5509 val->kind = ZEND_FFI_VAL_UINT64;
5517 val->kind = ZEND_FFI_VAL_ERROR;
5541 …l(zend_ffi_dcl *enum_dcl, const char *name, size_t name_len, zend_ffi_val *val, int64_t *min, int6… argument
5555 if (val->kind == ZEND_FFI_VAL_EMPTY) {
5567 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
5568 if (!is_signed && val->ch < 0) {
5575 value = val->ch;
5576 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
5577 if (!is_signed && val->i64 < 0) {
5584 value = val->i64;
5585 } else if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
5586 if (is_signed && val->u64 > 0x7FFFFFFFFFFFFFFFULL) {
5589 value = val->u64;
6490 …ute_value(zend_ffi_dcl *dcl, const char *name, size_t name_len, int n, zend_ffi_val *val) /* {{{ */ argument
6523 …&& (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_V…
6524 && val->i64 == 3) {
6532 …&& (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_V…
6533 && val->i64 > 0 && val->i64 <= 0x80000000 && (val->i64 & (val->i64 - 1)) == 0) {
6534 dcl->align = val->i64;
6541 && (val->kind == ZEND_FFI_VAL_NAME)) {
6542 const char *str = val->str;
6543 size_t len = val->len;
6605 …_attribute_value(zend_ffi_dcl *dcl, const char *name, size_t name_len, zend_ffi_val *val) /* {{{ */ argument
6608 …if ((val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_…
6609 && val->i64 > 0 && val->i64 <= 0x80000000 && (val->i64 & (val->i64 - 1)) == 0) {
6610 dcl->align = val->i64;
6719 #define zend_ffi_expr_bool(val) do { \ argument
6720 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
6721 val->kind = ZEND_FFI_VAL_INT32; \
6722 val->i64 = !!val->u64; \
6723 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
6724 val->kind = ZEND_FFI_VAL_INT32; \
6725 val->i64 = !!val->i64; \
6726 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
6727 val->kind = ZEND_FFI_VAL_INT32; \
6728 val->i64 = !!val->d; \
6729 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
6730 val->kind = ZEND_FFI_VAL_INT32; \
6731 val->i64 = !!val->ch; \
6733 val->kind = ZEND_FFI_VAL_ERROR; \
6737 #define zend_ffi_expr_math(val, op2, OP) do { \ argument
6738 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
6740 val->kind = MAX(val->kind, op2->kind); \
6741 val->u64 = val->u64 OP op2->u64; \
6743 val->u64 = val->u64 OP op2->i64; \
6745 val->u64 = val->u64 OP op2->i64; \
6747 val->kind = op2->kind; \
6748 val->d = (zend_ffi_double)val->u64 OP op2->d; \
6750 val->u64 = val->u64 OP op2->ch; \
6752 val->kind = ZEND_FFI_VAL_ERROR; \
6754 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
6756 val->i64 = val->i64 OP op2->u64; \
6758 val->i64 = val->i64 OP op2->u64; \
6760 val->kind = MAX(val->kind, op2->kind); \
6761 val->i64 = val->i64 OP op2->i64; \
6763 val->kind = op2->kind; \
6764 val->d = (zend_ffi_double)val->i64 OP op2->d; \
6766 val->i64 = val->i64 OP op2->ch; \
6768 val->kind = ZEND_FFI_VAL_ERROR; \
6770 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
6772 val->d = val->d OP (zend_ffi_double)op2->u64; \
6774 val->d = val->d OP (zend_ffi_double)op2->i64; \
6776 val->kind = MAX(val->kind, op2->kind); \
6777 val->d = val->d OP op2->d; \
6779 val->d = val->d OP (zend_ffi_double)op2->ch; \
6781 val->kind = ZEND_FFI_VAL_ERROR; \
6783 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
6785 val->kind = op2->kind; \
6786 val->u64 = val->ch OP op2->u64; \
6788 val->kind = ZEND_FFI_VAL_INT64; \
6789 val->i64 = val->ch OP op2->i64; \
6791 val->kind = op2->kind; \
6792 val->d = (zend_ffi_double)val->ch OP op2->d; \
6794 val->ch = val->ch OP op2->ch; \
6796 val->kind = ZEND_FFI_VAL_ERROR; \
6799 val->kind = ZEND_FFI_VAL_ERROR; \
6803 #define zend_ffi_expr_int_math(val, op2, OP) do { \ argument
6804 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
6806 val->kind = MAX(val->kind, op2->kind); \
6807 val->u64 = val->u64 OP op2->u64; \
6809 val->u64 = val->u64 OP op2->i64; \
6811 val->u64 = val->u64 OP op2->i64; \
6813 val->u64 = val->u64 OP (uint64_t)op2->d; \
6815 val->u64 = val->u64 OP op2->ch; \
6817 val->kind = ZEND_FFI_VAL_ERROR; \
6819 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
6821 val->i64 = val->i64 OP op2->u64; \
6823 val->i64 = val->i64 OP op2->u64; \
6825 val->kind = MAX(val->kind, op2->kind); \
6826 val->i64 = val->i64 OP op2->i64; \
6828 val->u64 = val->u64 OP (int64_t)op2->d; \
6830 val->i64 = val->i64 OP op2->ch; \
6832 val->kind = ZEND_FFI_VAL_ERROR; \
6834 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
6836 val->kind = op2->kind; \
6837 val->u64 = (uint64_t)val->d OP op2->u64; \
6839 val->kind = op2->kind; \
6840 val->i64 = (int64_t)val->d OP op2->i64; \
6842 val->kind = ZEND_FFI_VAL_ERROR; \
6844 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
6846 val->kind = op2->kind; \
6847 val->u64 = (uint64_t)val->ch OP op2->u64; \
6849 val->kind = op2->kind; \
6850 val->i64 = (int64_t)val->ch OP op2->u64; \
6852 val->ch = val->ch OP op2->ch; \
6854 val->kind = ZEND_FFI_VAL_ERROR; \
6857 val->kind = ZEND_FFI_VAL_ERROR; \
6861 #define zend_ffi_expr_cmp(val, op2, OP) do { \ argument
6862 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
6864 val->kind = ZEND_FFI_VAL_INT32; \
6865 val->i64 = val->u64 OP op2->u64; \
6867 val->kind = ZEND_FFI_VAL_INT32; \
6868 val->i64 = val->u64 OP op2->u64; /*signed/unsigned */ \
6870 val->kind = ZEND_FFI_VAL_INT32; \
6871 val->i64 = (zend_ffi_double)val->u64 OP op2->d; \
6873 val->kind = ZEND_FFI_VAL_INT32; \
6874 val->i64 = val->u64 OP op2->d; \
6876 val->kind = ZEND_FFI_VAL_ERROR; \
6878 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
6880 val->kind = ZEND_FFI_VAL_INT32; \
6881 val->i64 = val->i64 OP op2->i64; /* signed/unsigned */ \
6883 val->kind = ZEND_FFI_VAL_INT32; \
6884 val->i64 = val->i64 OP op2->i64; \
6886 val->kind = ZEND_FFI_VAL_INT32; \
6887 val->i64 = (zend_ffi_double)val->i64 OP op2->d; \
6889 val->kind = ZEND_FFI_VAL_INT32; \
6890 val->i64 = val->i64 OP op2->ch; \
6892 val->kind = ZEND_FFI_VAL_ERROR; \
6894 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
6896 val->kind = ZEND_FFI_VAL_INT32; \
6897 val->i64 = val->d OP (zend_ffi_double)op2->u64; \
6899 val->kind = ZEND_FFI_VAL_INT32; \
6900 val->i64 = val->d OP (zend_ffi_double)op2->i64; \
6902 val->kind = ZEND_FFI_VAL_INT32; \
6903 val->i64 = val->d OP op2->d; \
6905 val->kind = ZEND_FFI_VAL_INT32; \
6906 val->i64 = val->d OP (zend_ffi_double)op2->ch; \
6908 val->kind = ZEND_FFI_VAL_ERROR; \
6910 } else if (val->kind == ZEND_FFI_VAL_CHAR) { \
6912 val->kind = ZEND_FFI_VAL_INT32; \
6913 val->i64 = val->ch OP op2->i64; /* signed/unsigned */ \
6915 val->kind = ZEND_FFI_VAL_INT32; \
6916 val->i64 = val->ch OP op2->i64; \
6918 val->kind = ZEND_FFI_VAL_INT32; \
6919 val->i64 = (zend_ffi_double)val->ch OP op2->d; \
6921 val->kind = ZEND_FFI_VAL_INT32; \
6922 val->i64 = val->ch OP op2->ch; \
6924 val->kind = ZEND_FFI_VAL_ERROR; \
6927 val->kind = ZEND_FFI_VAL_ERROR; \
6931 void zend_ffi_expr_conditional(zend_ffi_val *val, zend_ffi_val *op2, zend_ffi_val *op3) /* {{{ */ argument
6933 zend_ffi_expr_bool(val);
6934 if (val->kind == ZEND_FFI_VAL_INT32) {
6935 if (val->i64) {
6936 *val = *op2;
6938 *val = *op3;
6944 void zend_ffi_expr_bool_or(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6946 zend_ffi_expr_bool(val);
6948 if (val->kind == ZEND_FFI_VAL_INT32 && op2->kind == ZEND_FFI_VAL_INT32) {
6949 val->i64 = val->i64 || op2->i64;
6951 val->kind = ZEND_FFI_VAL_ERROR;
6956 void zend_ffi_expr_bool_and(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6958 zend_ffi_expr_bool(val);
6960 if (val->kind == ZEND_FFI_VAL_INT32 && op2->kind == ZEND_FFI_VAL_INT32) {
6961 val->i64 = val->i64 && op2->i64;
6963 val->kind = ZEND_FFI_VAL_ERROR;
6968 void zend_ffi_expr_bw_or(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6970 zend_ffi_expr_int_math(val, op2, |);
6974 void zend_ffi_expr_bw_xor(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6976 zend_ffi_expr_int_math(val, op2, ^);
6980 void zend_ffi_expr_bw_and(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6982 zend_ffi_expr_int_math(val, op2, &);
6986 void zend_ffi_expr_is_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6988 zend_ffi_expr_cmp(val, op2, ==);
6992 void zend_ffi_expr_is_not_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
6994 zend_ffi_expr_cmp(val, op2, !=);
6998 void zend_ffi_expr_is_less(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7000 zend_ffi_expr_cmp(val, op2, <);
7004 void zend_ffi_expr_is_greater(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7006 zend_ffi_expr_cmp(val, op2, >);
7010 void zend_ffi_expr_is_less_or_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7012 zend_ffi_expr_cmp(val, op2, <=);
7016 void zend_ffi_expr_is_greater_or_equal(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7018 zend_ffi_expr_cmp(val, op2, >=);
7022 void zend_ffi_expr_shift_left(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7024 zend_ffi_expr_int_math(val, op2, <<);
7028 void zend_ffi_expr_shift_right(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7030 zend_ffi_expr_int_math(val, op2, >>);
7034 void zend_ffi_expr_add(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7036 zend_ffi_expr_math(val, op2, +);
7040 void zend_ffi_expr_sub(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7042 zend_ffi_expr_math(val, op2, -);
7046 void zend_ffi_expr_mul(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7048 zend_ffi_expr_math(val, op2, *);
7052 void zend_ffi_expr_div(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7054 zend_ffi_expr_math(val, op2, /);
7058 void zend_ffi_expr_mod(zend_ffi_val *val, zend_ffi_val *op2) /* {{{ */ argument
7060 zend_ffi_expr_int_math(val, op2, %); // ???
7064 void zend_ffi_expr_cast(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7069 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7070 val->kind = ZEND_FFI_VAL_FLOAT;
7071 val->d = val->u64;
7072 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7073 val->kind = ZEND_FFI_VAL_FLOAT;
7074 val->d = val->i64;
7075 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7076 val->kind = ZEND_FFI_VAL_FLOAT;
7077 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7078 val->kind = ZEND_FFI_VAL_FLOAT;
7079 val->d = val->ch;
7081 val->kind = ZEND_FFI_VAL_ERROR;
7085 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7086 val->kind = ZEND_FFI_VAL_DOUBLE;
7087 val->d = val->u64;
7088 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7089 val->kind = ZEND_FFI_VAL_DOUBLE;
7090 val->d = val->i64;
7091 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7092 val->kind = ZEND_FFI_VAL_DOUBLE;
7093 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7094 val->kind = ZEND_FFI_VAL_DOUBLE;
7095 val->d = val->ch;
7097 val->kind = ZEND_FFI_VAL_ERROR;
7102 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7103 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7104 val->d = val->u64;
7105 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7106 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7107 val->d = val->i64;
7108 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7109 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7110 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7111 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7112 val->d = val->ch;
7114 val->kind = ZEND_FFI_VAL_ERROR;
7122 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7123 val->kind = ZEND_FFI_VAL_UINT32;
7124 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7125 val->kind = ZEND_FFI_VAL_UINT32;
7126 val->u64 = val->d;
7127 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7128 val->kind = ZEND_FFI_VAL_UINT32;
7129 val->u64 = val->ch;
7131 val->kind = ZEND_FFI_VAL_ERROR;
7137 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7138 val->kind = ZEND_FFI_VAL_INT32;
7139 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7140 val->kind = ZEND_FFI_VAL_INT32;
7141 val->i64 = val->d;
7142 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7143 val->kind = ZEND_FFI_VAL_INT32;
7144 val->i64 = val->ch;
7146 val->kind = ZEND_FFI_VAL_ERROR;
7150 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7151 val->kind = ZEND_FFI_VAL_UINT64;
7152 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7153 val->kind = ZEND_FFI_VAL_UINT64;
7154 val->u64 = val->d;
7155 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7156 val->kind = ZEND_FFI_VAL_UINT64;
7157 val->u64 = val->ch;
7159 val->kind = ZEND_FFI_VAL_ERROR;
7163 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7164 val->kind = ZEND_FFI_VAL_CHAR;
7165 val->ch = val->u64;
7166 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7167 val->kind = ZEND_FFI_VAL_CHAR;
7168 val->ch = val->i64;
7169 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7170 val->kind = ZEND_FFI_VAL_CHAR;
7171 val->ch = val->d;
7172 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7174 val->kind = ZEND_FFI_VAL_ERROR;
7178 …if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_…
7179 val->kind = ZEND_FFI_VAL_UINT32;
7180 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7181 val->kind = ZEND_FFI_VAL_UINT32;
7182 val->u64 = val->d;
7183 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7184 val->kind = ZEND_FFI_VAL_UINT32;
7185 val->u64 = val->ch;
7187 val->kind = ZEND_FFI_VAL_ERROR;
7191 val->kind = ZEND_FFI_VAL_ERROR;
7198 void zend_ffi_expr_plus(zend_ffi_val *val) /* {{{ */ argument
7200 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7201 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7202 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7203 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7205 val->kind = ZEND_FFI_VAL_ERROR;
7210 void zend_ffi_expr_neg(zend_ffi_val *val) /* {{{ */ argument
7212 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7213 val->u64 = -val->u64;
7214 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7215 val->i64 = -val->i64;
7216 …} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEN…
7217 val->d = -val->d;
7218 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7219 val->ch = -val->ch;
7221 val->kind = ZEND_FFI_VAL_ERROR;
7226 void zend_ffi_expr_bw_not(zend_ffi_val *val) /* {{{ */ argument
7228 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) {
7229 val->u64 = ~val->u64;
7230 } else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) {
7231 val->i64 = ~val->i64;
7232 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7233 val->ch = ~val->ch;
7235 val->kind = ZEND_FFI_VAL_ERROR;
7240 void zend_ffi_expr_bool_not(zend_ffi_val *val) /* {{{ */ argument
7242 zend_ffi_expr_bool(val);
7243 if (val->kind == ZEND_FFI_VAL_INT32) {
7244 val->i64 = !val->i64;
7249 void zend_ffi_expr_sizeof_val(zend_ffi_val *val) /* {{{ */ argument
7251 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_INT32) {
7252 val->kind = ZEND_FFI_VAL_UINT32;
7253 val->u64 = zend_ffi_type_uint32.size;
7254 } else if (val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_VAL_INT64) {
7255 val->kind = ZEND_FFI_VAL_UINT32;
7256 val->u64 = zend_ffi_type_uint64.size;
7257 } else if (val->kind == ZEND_FFI_VAL_FLOAT) {
7258 val->kind = ZEND_FFI_VAL_UINT32;
7259 val->u64 = zend_ffi_type_float.size;
7260 } else if (val->kind == ZEND_FFI_VAL_DOUBLE) {
7261 val->kind = ZEND_FFI_VAL_UINT32;
7262 val->u64 = zend_ffi_type_double.size;
7263 } else if (val->kind == ZEND_FFI_VAL_LONG_DOUBLE) {
7264 val->kind = ZEND_FFI_VAL_UINT32;
7266 val->u64 = zend_ffi_type_double.size;
7268 val->u64 = zend_ffi_type_long_double.size;
7270 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7271 val->kind = ZEND_FFI_VAL_UINT32;
7272 val->u64 = zend_ffi_type_char.size;
7273 } else if (val->kind == ZEND_FFI_VAL_STRING) {
7274 if (memchr(val->str, '\\', val->len)) {
7276 val->kind = ZEND_FFI_VAL_ERROR;
7278 val->kind = ZEND_FFI_VAL_UINT32;
7279 val->u64 = val->len + 1;
7282 val->kind = ZEND_FFI_VAL_ERROR;
7287 void zend_ffi_expr_sizeof_type(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7293 val->kind = (type->size > 0xffffffff) ? ZEND_FFI_VAL_UINT64 : ZEND_FFI_VAL_UINT32;
7294 val->u64 = type->size;
7299 void zend_ffi_expr_alignof_val(zend_ffi_val *val) /* {{{ */ argument
7301 if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_INT32) {
7302 val->kind = ZEND_FFI_VAL_UINT32;
7303 val->u64 = zend_ffi_type_uint32.align;
7304 } else if (val->kind == ZEND_FFI_VAL_UINT64 || val->kind == ZEND_FFI_VAL_INT64) {
7305 val->kind = ZEND_FFI_VAL_UINT32;
7306 val->u64 = zend_ffi_type_uint64.align;
7307 } else if (val->kind == ZEND_FFI_VAL_FLOAT) {
7308 val->kind = ZEND_FFI_VAL_UINT32;
7309 val->u64 = zend_ffi_type_float.align;
7310 } else if (val->kind == ZEND_FFI_VAL_DOUBLE) {
7311 val->kind = ZEND_FFI_VAL_UINT32;
7312 val->u64 = zend_ffi_type_double.align;
7314 } else if (val->kind == ZEND_FFI_VAL_LONG_DOUBLE) {
7315 val->kind = ZEND_FFI_VAL_UINT32;
7316 val->u64 = zend_ffi_type_long_double.align;
7318 } else if (val->kind == ZEND_FFI_VAL_CHAR) {
7319 val->kind = ZEND_FFI_VAL_UINT32;
7320 val->u64 = zend_ffi_type_char.size;
7321 } else if (val->kind == ZEND_FFI_VAL_STRING) {
7322 val->kind = ZEND_FFI_VAL_UINT32;
7323 val->u64 = _Alignof(char*);
7325 val->kind = ZEND_FFI_VAL_ERROR;
7330 void zend_ffi_expr_alignof_type(zend_ffi_val *val, zend_ffi_dcl *dcl) /* {{{ */ argument
7333 val->kind = ZEND_FFI_VAL_UINT32;
7334 val->u64 = ZEND_FFI_TYPE(dcl->type)->align;
7339 void zend_ffi_val_number(zend_ffi_val *val, int base, const char *str, size_t str_len) /* {{{ */ argument
7364 val->u64 = strtoull(str, NULL, base);
7366 val->kind = ZEND_FFI_VAL_UINT32;
7368 val->kind = (sizeof(long) == 4) ? ZEND_FFI_VAL_UINT32 : ZEND_FFI_VAL_UINT64;
7370 val->kind = ZEND_FFI_VAL_UINT64;
7373 val->i64 = strtoll(str, NULL, base);
7375 val->kind = ZEND_FFI_VAL_INT32;
7377 val->kind = (sizeof(long) == 4) ? ZEND_FFI_VAL_INT32 : ZEND_FFI_VAL_INT64;
7379 val->kind = ZEND_FFI_VAL_INT64;
7385 void zend_ffi_val_float_number(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7387 val->d = strtold(str, NULL);
7389 val->kind = ZEND_FFI_VAL_FLOAT;
7391 val->kind = ZEND_FFI_VAL_LONG_DOUBLE;
7393 val->kind = ZEND_FFI_VAL_DOUBLE;
7398 void zend_ffi_val_string(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7401 val->kind = ZEND_FFI_VAL_ERROR;
7403 val->kind = ZEND_FFI_VAL_STRING;
7404 val->str = str + 1;
7405 val->len = str_len - 2;
7410 void zend_ffi_val_character(zend_ffi_val *val, const char *str, size_t str_len) /* {{{ */ argument
7415 val->kind = ZEND_FFI_VAL_ERROR;
7417 val->kind = ZEND_FFI_VAL_CHAR;
7419 val->ch = str[1];
7423 val->ch = '\b';
7425 val->ch = '\f';
7427 val->ch = '\n';
7429 val->ch = '\r';
7431 val->ch = '\t';
7433 val->ch = '\v';
7441 val->kind = ZEND_FFI_VAL_ERROR;
7444 val->kind = ZEND_FFI_VAL_ERROR;
7447 val->ch = n;
7449 val->kind = ZEND_FFI_VAL_ERROR;
7459 val->kind = ZEND_FFI_VAL_ERROR;
7469 val->kind = ZEND_FFI_VAL_ERROR;
7472 val->ch = n;
7474 val->ch = str[2];
7476 val->kind = ZEND_FFI_VAL_ERROR;
7479 val->kind = ZEND_FFI_VAL_ERROR;