From d4473c5f7824bc4e2b6c861f78361e9b54636037 Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Fri, 10 Nov 2023 12:38:09 +0800 Subject: [PATCH] upd: add float* str --- src/utils.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/utils.cpp b/src/utils.cpp index 294980a..07bb766 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -216,13 +216,21 @@ std::any Mul(std::any a, std::any b) { (ptr_b_string != nullptr ? 1 : 0) == 1) { if (ptr_a_string == nullptr) { - std::swap(ptr_a_string, ptr_b_string); - std::swap(ptr_a_bool, ptr_b_bool); - std::swap(ptr_a_int2048, ptr_b_int2048); - std::swap(ptr_a_float, ptr_b_float); + std::swap(a, b); + ptr_a_bool = std::any_cast(&a); + ptr_b_bool = std::any_cast(&b); + ptr_a_int2048 = std::any_cast(&a); + ptr_b_int2048 = std::any_cast(&b); + ptr_a_float = std::any_cast(&a); + ptr_b_float = std::any_cast(&b); + ptr_a_string = std::any_cast(&a); + ptr_b_string = std::any_cast(&b); + } + if (ptr_b_float != nullptr) { + b = Any2Int(*ptr_b_float); + ptr_b_int2048 = std::any_cast(&b); + goto st; } - if (ptr_b_float != nullptr) - throw InterpretException("Mul: string*float not allowed", 41); if (ptr_b_bool != nullptr) { if (*ptr_b_bool) { return *ptr_a_string; @@ -234,6 +242,7 @@ std::any Mul(std::any a, std::any b) { std::any_cast(&b) != nullptr) return std::string(""); if (ptr_b_int2048 != nullptr) { + st:; std::string res; for (int i = 0; i < (*ptr_b_int2048); i++) res += *ptr_a_string; return res;