+ }
+
+ return aip;
+}
+
+/*
+ * return void(dvar)
+ */
+void psi_set_void(zval *return_value, struct psi_set_exp *set, impl_val *ret_val, struct psi_call_frame *frame)
+{
+ RETVAL_NULL();
+}
+
+/*
+ * ?
+ */
+impl_val *psi_let_void(impl_val *tmp, struct psi_decl_arg *spec, token_t impl_type, impl_val *ival, zval *zvalue, void **to_free)
+{
+ return tmp;
+}
+
+/*
+ * set $ivar = zval(dvar)
+ */
+void psi_set_zval(zval *return_value, struct psi_set_exp *set, impl_val *ret_val, struct psi_call_frame *frame) {
+ RETVAL_ZVAL(ret_val->ptr, 1, 0);
+}
+
+/*
+ * let dvar = zval($ivar)
+ */
+impl_val *psi_let_zval(impl_val *tmp, struct psi_decl_arg *spec, token_t impl_type, impl_val *ival, zval *zvalue, void **to_free)
+{
+ *to_free = tmp->ptr = emalloc(sizeof(zval));
+ ZVAL_COPY_VALUE(tmp->ptr, zvalue);
+ return tmp;
+}
+
+/*
+ * return to_bool(dvar)
+ */
+void psi_set_to_bool(zval *return_value, struct psi_set_exp *set, impl_val *ret_val, struct psi_call_frame *frame)
+{
+ psi_set_to_int(return_value, set, ret_val, frame);
+ convert_to_boolean(return_value);
+}
+
+static inline impl_val *psi_val_boolval(impl_val *tmp, token_t real_type, zend_bool boolval) {
+ switch (real_type) {
+ case PSI_T_INT8: tmp->i8 = boolval; break;
+ case PSI_T_UINT8: tmp->u8 = boolval; break;
+ case PSI_T_INT16: tmp->i16 = boolval; break;
+ case PSI_T_UINT16: tmp->u16 = boolval; break;
+ case PSI_T_INT32: tmp->i32 = boolval; break;
+ case PSI_T_UINT32: tmp->u32 = boolval; break;
+ case PSI_T_INT64: tmp->i64 = boolval; break;
+ case PSI_T_UINT64: tmp->u64 = boolval; break;
+#ifdef HAVE_INT128
+ case PSI_T_INT128: tmp->i128 = boolval; break;
+ case PSI_T_UINT128: tmp->u128 = boolval; break;
+#endif
+ case PSI_T_FLOAT: tmp->fval = boolval; break;
+ case PSI_T_DOUBLE: tmp->dval = boolval; break;
+#ifdef HAVE_LONG_DOUBLE
+ case PSI_T_LONG_DOUBLE: tmp->ldval = boolval; break;
+#endif