From 7834d2273e1297940f9c74c1ebeca097ba3a8f85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E9=91=AB?= Date: Mon, 14 Jul 2025 14:56:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=85=B1=E6=96=B9=E6=B3=95=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 周鑫 Change-Id: I9838329e865522db3f817ee5823b2ae94a725e58 --- .../src/common/ani_helper/type_converter.cpp | 20 +++++++++++++++++++ .../js/src/common/ani_helper/type_converter.h | 1 + 2 files changed, 21 insertions(+) diff --git a/interfaces/kits/js/src/common/ani_helper/type_converter.cpp b/interfaces/kits/js/src/common/ani_helper/type_converter.cpp index 89a692ca0..801e0c6e6 100644 --- a/interfaces/kits/js/src/common/ani_helper/type_converter.cpp +++ b/interfaces/kits/js/src/common/ani_helper/type_converter.cpp @@ -86,6 +86,26 @@ std::tuple> TypeConverter::ToOptionalInt64(ani_env return { false, {} }; } +tuple> TypeConverter::ToOptionalDouble(ani_env *env, const ani_object &value) +{ + if (env == nullptr) { + return { false, {} }; + } + + ani_boolean isUndefined; + env->Reference_IsUndefined(value, &isUndefined); + if (isUndefined) { + return { true, nullopt }; + } + + ani_double doubleValue; + if (ANI_OK == env->Object_CallMethodByName_Double(value, "toDouble", nullptr, &doubleValue)) { + return { true, make_optional(doubleValue) }; + } + + return { false, {} }; +} + std::tuple TypeConverter::ToAniString(ani_env *env, std::string str) { if (env == nullptr) { diff --git a/interfaces/kits/js/src/common/ani_helper/type_converter.h b/interfaces/kits/js/src/common/ani_helper/type_converter.h index a0176dc19..863640f7a 100644 --- a/interfaces/kits/js/src/common/ani_helper/type_converter.h +++ b/interfaces/kits/js/src/common/ani_helper/type_converter.h @@ -32,6 +32,7 @@ public: static std::tuple ToUTF8String(ani_env *env, const ani_string &path); static std::tuple> ToOptionalInt32(ani_env *env, const ani_object &value); static std::tuple> ToOptionalInt64(ani_env *env, const ani_object &value); + static std::tuple> ToOptionalDouble(ani_env *env, const ani_object &value); static std::tuple ToAniArrayBuffer(ani_env *env, void *buffer, size_t length); static std::tuple ToAniString(ani_env *env, std::string str); static std::tuple ToAniString(ani_env *env, std::string str, size_t size); -- Gitee